未加星标

Misleading PowerShell Exceptions Example #1

字体大小 | |
[系统(windows) 所属分类 系统(windows) | 发布者 店小二05 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏

In PowerShell 5.0 on windows 10 was looking at a script with function not working:

Function Test-Condition($condition) { if ([System.String]::IsNullOrWhiteSpace($condition)) { return $true } switch ($conditon.ToLower()) { "true" { return $true } "false" { return $false } } return (Invoke-Expression $condition) }

The exception thrown by Powershell was:

You cannot call a method on a null-valued expression.
At C:\Users\chentiangemalc\Documents\Scripts\Test.ps1:5 char:9
+ if ([System.String]::IsNullOrWhiteSpace($condition))
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

The exception is misleading because it points to the wrong line of code. The actual error is in the switch line of code, $condition was misspelled into a a non-existent variable, throwing the “ cannot call a method on a null-valued expression ” exception.

If the script had started with

Set-StrictMode -Latest

We would get a more accurate exception:

The variable ‘$conditon’ cannot be retrieved because it has not been set.
At C:\Users\chentiangemalc\Documents\Scripts\Test.ps1:11 char:13
+ switch ($conditon.ToLower())
+ ~~~~~~~~~
+ CategoryInfo : InvalidOperation: (conditon:String) [], RuntimeException
+ FullyQualifiedErrorId : VariableIsUndefined

本文系统(windows)相关术语:三级网络技术 计算机三级网络技术 网络技术基础 计算机网络技术

主题: PowerShellWindows
分页:12
转载请注明
本文标题:Misleading PowerShell Exceptions Example #1
本站链接:http://www.codesec.net/view/481390.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 系统(windows) | 评论(0) | 阅读(29)