Lors de l'écriture de scripts PowerShell, j'ai remarqué que lorsque certaines applets de commande rencontraient des problèmes, elles faisaient apparaître une invite interactive, Remove-Item sur un répertoire non vide en étant un exemple. C'est mortel lorsque vous essayez d'automatiser des tâches, je préférerais de beaucoup que l'action échoue et soit lance une exception, soit renvoie un mauvais code de retour afin que le script entier ne soit pas verrouillé en attendant une réponse.
Existe-t-il un moyen de forcer PowerShell à échouer automatiquement, au lieu de rechercher les commentaires des utilisateurs sur les actions?
powershell
Chuu
la source
la source
Remove-Item
échouer rapidement?"Réponses:
La solution proposée par Eris démarre effectivement une autre instance PowerShell. Une autre façon de le faire, avec une syntaxe plus simple, consiste à décortiquer vers une autre instance de powershell.exe.
la source
Voir
Get-Help about_Preference_Variables
:Donc:
la source
Remove-ADUser
(Server 2012R)Ok, c'est vraiment moche, mais les taches de moutarde sainte ça "marche".
Problèmes:
Cela ne fonctionnera que pour le cas simple (commandes qui ne font pas beaucoup de choses avec l'environnement actuel). Je n'ai rien testé de complexe
$MyPS = [Powershell]::Create()
$MyPS.Commands.AddCommand("Remove-Item")
$MyPS.Commands.AddParameter("Path", "D:\Temp\t")
$MyPS.Invoke()
Production:
la source
Toutes les solutions ci-dessus ont échoué pour moi lorsque j'ai créé un répertoire, ce qui signifie que j'ai été invité à OK chaque répertoire créé par mon script - ce qui était beaucoup. Ce qui a fonctionné pour moi, c'est d'apper | Out-null afin de diriger les résultats vers Out-Null
Notez que $ Directory est une chaîne avec le chemin d'accès complet au répertoire que vous souhaitez créer. J'espère que cela fait gagner du temps à quelqu'un: P
la source
Je propose deux techniques
a) Ajouter
-force
b) Ajouter
-errorAction silently continue
Voici comment je recherche les applets de commande qui prennent en charge un paramètre particulier
la source
-errorAction SilentlyContinue
est-ea 0
.