У меня есть сценарий PowerShell, в котором я хочу убедиться, что определенные переменные имеют значение, прежде чем продолжить.
Поэтому у меня есть следующее:
$dataRow = $sheet.Cells.Find($country).Row
$serverCol = $sheet.Cells.Find($serverString).Column
$databaseCol = $sheet.Cells.Find($databaseString).Column
$userCol = $sheet.Cells.Find($userString).Column
$passwordCol = $sheet.Cells.Find($passString).Column
$partnerCol = $sheet.Cells.Find($partnerString).Column
#All variables in this array are required. If one is empty - the script cannot continue
$requiredVars = @($dataRow, $serverCol, $databaseCol, $userCol, $passwordCol, $partnerCol)
Но когда я выполняю foreach над массивомвот так:
foreach ($var in $requiredVars)
{
Write-Host DataRow = ($dataRow -eq $var)
Write-Host ServerCol = ($serverCol -eq $var)
Write-Host DatabaseCol = ($databaseCol -eq $var)
Write-Host UserCol = ($userCol -eq $var)
Write-Host PasswordCol = ($passwordCol -eq $var)
Write-Host PartnerCol = ($partnerCol -eq $var)
if ($var -eq $null)
{
[System.Windows.Forms.MessageBox]::Show("No data found for given string!")
$excel.Quit()
return
}
}
Я всегда получаю MessageBox.Я добавил часть «Write-Host», чтобы увидеть значение каждой переменной, затем изменил ее, чтобы увидеть, какая переменная имеет значение null, но все переменные содержат значения, и все проверки, которые вы видите здесь, возвращают «False».
Я хотел бы знать, что я делаю неправильно, и если массив $requiredVars
копирует только значения, а не ссылки или что-то в этом роде.