我正在尝试使用字符串值或文件内容值初始化配置对象(如果字符串变量为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))
请详细说明此运行时异常的根本情况。