Desenvolvi um script do PowerShell na v4.0 e descobri que o operador -notin não é compatível com a v2.0 (que é a versão em que preciso executá-lo). Qual é a melhor alternativa para o operador -notin para v2.0? Prefiro minimizar a refatoração de código, se possível.
Aqui está um trecho de código onde estou usando o operador:
$NoBackups += $BackupList |
Where-Object { $_.DatabaseName -notin ($NoBackups.DatabaseName) } |
Where-Object { ($_.RecoveryModel.ToString().ToUpper() -ne "SIMPLE") -and ($_.LastLogBackupDate -lt $CompareDate.AddHours($LOGCompareHours)) } |
SELECT InstanceName, DatabaseName, LastBackupDate, LastDifferentialBackupDate, LastLogBackupDate, `
@{Name='Message';Expression={"Transaction Log Backup is more than $([Math]::Abs($LOGCompareHours)) hours old"}}
Você pode usar
-NotContains
no PowerShell v2.0 e superior. A única coisa que você precisa fazer é estornar seu cheque. Usando-NotIn
você está comparando seu valor atual com a coleção, com-NotContains
você faz o inverso comparando sua coleção com seu valor atual.Então é só mudar isso:
Para
Um exemplo grosseiro: