#Requires -Version 2.0
[CmdletBinding()]
Param(
[Parameter()] [string] $MyParam = $null
)
if($MyParam -eq $null) {
Write-Host 'works'
} else {
Write-Host 'does not work'
}
出力は「動作しません」 => 文字列が暗黙的に null から空の文字列に変換されているように見えます。なぜでしょうか。また、文字列が空であるか、実際に $null であるかをテストするにはどうすればよいでしょうか。これは 2 つの異なる値である必要があります。
ベストアンサー1
はい、答えを見つけました@https://www.codykonior.com/2013/10/17/powershell で null をチェックする/
仮定:
Param(
[string] $stringParam = $null
)
パラメータが指定されていません (デフォルト値を使用しています):
# will NOT work
if ($null -eq $stringParam)
{
}
# WILL work:
if ($stringParam -eq "" -and $stringParam -eq [String]::Empty)
{
}
あるいは、特別な null 型を指定することもできます。
Param(
[string] $stringParam = [System.Management.Automation.Language.NullString]::Value
)
その場合は$null -eq $stringParam
期待どおりに動作します。
奇妙な!