Я пишу скрипт, который проверяет значение реестра и завершает работу, если равен 0. (Он продолжится, если значение равно 1.)
if ((Get-ItemProperty -path HKLM:\SOFTWARE\ICT\LoginScript).proceed -eq 0) {
$form.close()
exit
}
Когда я запускаю скрипт со значением regв 0 он не может выйти и выдает исключение:
System.Management.Automation.ExitException: System error.
at System.Management.Automation.FlowControlNode.Execute(Array input, Pipe outputPipe, ExecutionContext context)
at System.Management.Automation.ParseTreeNode.Execute(Array input, Pipe outputPipe, ArrayList& resultList, ExecutionContext context)
at System.Management.Automation.StatementListNode.ExecuteStatement(ParseTreeNode statement, Array input, Pipe outputPipe, ArrayList& resultList, ExecutionContext context)
at System.Management.Automation.StatementListNode.Execute(Array input, Pipe outputPipe, ArrayList& resultList, ExecutionContext context)
...
Скрипт использует формы Windows - не уверен, что это актуально?
РЕДАКТИРОВАТЬ:
Я сократил сценарий до следующего:
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$Form = New-Object System.Windows.Forms.Form
$Form.Add_Shown({ $Form.Activate(); start-sleep -s 3; exit; $form.close() })
$Form.ShowDialog()
И это все равно дает ошибку.Если я запускаю код start-sleep -s 3; exit
в форме, отличной от Windows, он работает нормально, поэтому похоже, что проблема связана с Windows Forms.
Спасибо,
Бен