.NET メソッドの string 引数に null を渡す
PowerShell は $null を勝手に "" に変換して、.NET メソッドの string 引数に渡すというお節介をしてくれるので、メソッドの仕様によっては困ったことになります.
PowerShell 3 からは、そのような場合には [System.Management.Automation.Language.NullString]::Value を指定すればよくなりました.
そこで、PowerShell 2 用に同等の機能を提供するコードを書いたのが以下です.
PS> Add-Type -TypeDefinition @" >> namespace System.Management.Automation.Language >> { >> public sealed class NullString >> { >> private static volatile NullString instance; >> private static object syncRoot = new object(); >> >> private NullString() { } >> >> public static NullString Value >> { >> get >> { >> if (instance == null) >> { >> lock (syncRoot) >> { >> if (instance == null) >> instance = new NullString(); >> } >> } >> return instance; >> } >> } >> >> public override string ToString() >> { >> return null; >> } >> } >> } >> "@ >> PS> [string][System.Management.Automation.Language.NullString]::Value -eq $null True