$null
e uma cadeia vazia ("") são dois tipos de dados diferentes para o powershell. Substitua qualquer instância de $null
por ""
e você deve ser bom. Quase todos os cmdlets fornecidos pelo MS estão definidos como [ValidateNotNull]
.
Gostaria de expandir um pouco o que é $Null
. Powershell é um shell OOP (Object Oriented Programming) com ganchos diretos em .Net. $Null
é um marcador de posição e um objeto que não representa nada. Não se preocupe em entender completamente $Null
neste ponto, muitas pessoas (até mesmo alguns programadores) não entendem $Null
ao enésimo grau.
Então, por que isso é relevante agora? Deixe-me ligá-lo a ESTA REFERÊNCIA , mas vou copiar as informações relevantes aqui ...
...you cannot use $null to mean "no parameter value." A parameter value of $null overrides the default parameter value.
No seu caso, você está tentando equacionar o conteúdo de uma variável ao objeto $Null
, isso nunca corresponderá porque somente $Null
é -eq para $Null
.
Uma string vazia ("") é um objeto String
sem um valor. É por isso que você deseja usá-lo com operadores de comparação (-eq, -lt, -ge) para avaliar outras strings.