使用IsNullOrEmpty时出现空运行时异常

时间:2017-05-15 03:21:35

标签: powershell

我正在尝试使用字符串值或文件内容值初始化配置对象(如果字符串变量为null或为空)。

$ConfigObj = New-Object PSObject -Property @{
    "Name"        = $env:OOO_NAME
        "Content"=
        if([string]::IsNullOrEmpty($env:NOTE) -and [string]::IsNullOrEmpty($env:PUBLISH_FILEPATH))
        {
             Write-Host "Check input"
             exit 1
        }
        elseif(![string]::IsNullOrEmpty($env:PUBLISH_NOTE))
        {
             $env:PUBLISH_NOTE ############# **it throws exception here.**
        }
        else
        {
             Get-Content ($env:PUBLISH_FILEPATH)
        }
}

当此脚本自行执行时,它可以正常工作,但在执行多个PowerShell脚本后会大喊RuntimeException。以下是异常信息:

You cannot call a method on a null-valued expression.
+ $env:PUBLISH_NOTE
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException 
+ FullyQualifiedErrorId : InvokeMethodOnNull

这对我没有任何意义,因为我使用 $ env:{环境变量名称} 来访问系统环境变量,为什么它不会在更早的时候大喊大叫诸如

之类的行
elseif(![string]::IsNullOrEmpty($env:PUBLISH_NOTE))

请详细说明此运行时异常的根本情况。

0 个答案:

没有答案