Ao escrever scripts do PowerShell, notei que quando certos cmdlets encontram problemas, eles exibem um prompt interativo, o exemplo Remove-Item em um diretório não vazio. Isso é mortal ao tentar automatizar tarefas; prefiro que a ação falhe e gere uma exceção ou retorne um código de retorno incorreto para que o script inteiro não fique bloqueado aguardando uma resposta.
Existe alguma maneira de forçar o PowerShell a falhar automaticamente, em vez de buscar a entrada do usuário em ações?
powershell
Chuu
fonte
fonte
Remove-Item
falhe rápido?"Respostas:
A solução proposta por Eris efetivamente inicia outra instância do PowerShell. Uma maneira alternativa de fazer isso, com sintaxe mais simples, é desembolsar para outra instância do powershell.exe.
fonte
Veja
Get-Help about_Preference_Variables
:Então:
fonte
Remove-ADUser
(Server 2012R)Ok, isso é realmente feio, mas manchas de mostarda sagrada "funciona".
Problemas:
Isso funcionará apenas no caso Simple (comandos que não fazem muita coisa com o ambiente atual). Eu não testei nada complexo
$MyPS = [Powershell]::Create()
$MyPS.Commands.AddCommand("Remove-Item")
$MyPS.Commands.AddParameter("Path", "D:\Temp\t")
$MyPS.Invoke()
Resultado:
fonte
Todas as soluções acima falharam para mim quando eu criei um diretório, o que significava que fui solicitado a OK em todos os diretórios criados pelo meu script - o que foi muito. O que funcionou para mim foi aumentar | Nulo de saída para canalizar os resultados para Nulo de saída
Observe que $ Directory é uma string com o caminho completo para o diretório que você deseja criar. Espero que isso economize tempo para alguém: P
fonte
Eu sugiro duas técnicas
a) Anexar
-force
b) Anexar
-errorAction silently continue
É assim que pesquiso quais cmdlets suportam um parâmetro específico
fonte
-errorAction SilentlyContinue
is-ea 0
.