При написании сценариев PowerShell я заметил, что когда некоторые командлеты сталкиваются с проблемами, они вызывают интерактивное приглашение, примером которого является Remove-Item в непустом каталоге. Это смертельно опасно, когда я пытаюсь автоматизировать задачи. Я бы предпочел, чтобы действие просто завершилось неудачей и либо выдало исключение, либо вернуло неверный код возврата, чтобы весь сценарий не был заблокирован в ожидании ответа.
Есть ли способ заставить PowerShell автоматически завершиться сбоем, в отличие от поиска пользовательского ввода в действиях?
powershell
Chuu
источник
источник
Remove-Item
быстро потерпеть неудачу?"Ответы:
Решение, предложенное Eris, эффективно запускает другой экземпляр PowerShell. Альтернативный способ сделать это с более простым синтаксисом - это выполнить оболочку для другого экземпляра powershell.exe.
источник
Смотрите
Get-Help about_Preference_Variables
:Так:
источник
Remove-ADUser
(Server 2012R)Хорошо, это действительно некрасиво, но святые пятна горчицы это "работает".
Вопросы:
Это будет работать только для простого случая (команды, которые мало что делают с текущей средой). Я не проверял ничего сложного
$MyPS = [Powershell]::Create()
$MyPS.Commands.AddCommand("Remove-Item")
$MyPS.Commands.AddParameter("Path", "D:\Temp\t")
$MyPS.Invoke()
Выход:
источник
Все вышеперечисленные решения не помогли мне, когда я создавал каталог, а это означало, что мне было предложено оканчивать все директории, которые создавал мой скрипт, что было много. То, что работало для меня, было приложено | Out-null для передачи результатов в Out-Null
Обратите внимание, что $ Directory - это строка с полным путем к каталогу, который вы хотите создать. Надеюсь, это сэкономит кому-то время: P
источник
Я предлагаю две техники
а) Добавить
-force
б) Добавить
-errorAction silently continue
Вот как я исследую, какие командлеты поддерживают определенный параметр
источник
-errorAction SilentlyContinue
это-ea 0
.