Сегодня у меня возникла странная проблема в одном из моих сценариев PowerShell:
Информация об окружающей среде: сценарий PowerShell, о котором я говорю, вызывается VBScript.
if($VM -eq "Yes") {
Add-PSSnapin VMware.VimAutomation.Core
Connect-VIServer -Server $VMHost -User $VMUser -Password $VMPassword
$Snapshot = $null
Try {
$Snapshot = New-Snapshot -Name $NameofSnapshot -VM $ServerName -Memory
$CurrentPatchingState = "1;$Servername;Status=1;$(Get-Date -format 'dd.MM.yyyy hh:mm:ss') Created Snapshot" | Out-File -Filepath "C:\$Servername.txt" -Append -encoding ASCII
} Catch [system.exception] {
$CurrentPatchingState = "2;$Servername;Status=2;$(Get-Date -format 'dd.MM.yyyy hh:mm:ss') Wasnt able to take a Snapshot - Aborting" | Out-File -Filepath "C:\$Servername.txt" -Append -encoding ASCII
Disconnect-VIServer -Server $VMHost -Confirm:$false
exit
}
if ($Snapshot -eq $null) {
$CurrentPatchingState = "2;$Servername;Status=2;$(Get-Date -format 'dd.MM.yyyy hh:mm:ss') Wasnt able to get a Clean Snapshot - Aborting" | Out-File -Filepath "C:\$Servername.txt" -Append -encoding ASCII
Disconnect-VIServer -Server $VMHost -Confirm:$false
exit
}
}
Сегодня сценарий провалился в этой части. Файл журнала показал:
2;xxxxxxxxxxxxxxx;Status=2;18.01.2015 11:01:51 Wasnt able to take a Snapshot - Aborting
2;xxxxxxxxxxxxxxx;Status=2;18.01.2015 11:01:51 Wasnt able to get a Clean Snapshot - Aborting
Как это могло произойти, ведь скрипт должен был остановиться на первом же улове?
[scriptblock]
, который является его собственным контекстом,exit
оставил этот блок сценария «раньше» и вернулся в родительский контекст, сам сценарий ... 2-й выход находится в контексте сценария и поэтому завершается правильно. - person Djarid   schedule 15.04.2016