Passage de paramètres à un script powershell
Je suis en train de lancer un script powershell à partir de la boîte de dialogue exécuter (sera utilisé comme une tâche planifiée), et je vais avoir des ennuis passage de paramètres.
Le script va prendre deux paramètres, nom titre et msg.
Le script est situé dans: D:\Tasks Scripts\Powershell\script.ps1
C'est ce que j'essaie de faire:
powershell.exe -noexit 'D:\Tasks Scripts\Powershell\script.ps1' -title 'Hello world' -msg 'This is a test message'
Mais il ne parvient pas à la lecture des paramètres.
De course .\script.ps1 -title 'Hello world' -msg 'This is a test message'
sur powershell fonctionne très bien.
Utilisation -commande de Vérifier cette SORTE de réponse -stackoverflow.com/questions/12691781/...
Il serait utile si vous avait dites-nous ce que "il ne" veut dire. Citer le message d'erreur si il y en a un, ou de nous dire ce qui se passe et ce que vous vous attendiez à la place.
Il serait utile si vous avait dites-nous ce que "il ne" veut dire. Citer le message d'erreur si il y en a un, ou de nous dire ce qui se passe et ce que vous vous attendiez à la place.
OriginalL'auteur desto | 2013-09-27
Vous devez vous connecter pour publier un commentaire.
Utilisation
-file
avant le chemin d'accès à votre script:OriginalL'auteur Nate Hekman
J'ai l'habitude d'exécuter des scripts powershell à partir de cmd.exe parce que c'est portable
(fonctionne out-of-the-box sur d'autres ordinateurs, comme développeur des gens ou des clients):
pas besoin de s'inquiéter à propos de Set-ExecutionPolicy l'association de la .ps1 extension.
J'ai créer le fichier .cmd extension (au lieu de .ps1), et copier&coller un court,
constante de code à la première ligne(s) qui invoque powershell.exe et passe le reste
de le fichier.
Les arguments de passage est délicat. J'ai de multiples variantes de la constante de code
parce que le cas général est douloureux.
lorsqu'il n'est pas le passage d'arguments, l' .cmd fichier ressemble à ceci:
Il utilise l'argument de la Commande de powershell.exe. Powershell lit le .cmd
fichier en tant que texte, le met dans un ScriptBlock avec la première ligne de commentaire,
et l'évalue avec le". " de commande.
En outre arguments de ligne de commande
peut être ajouté à la Powershell invocation, comme l'exige (par exemple,- ExecutionPolicy sans restriction,
-Sta etc.)
lors du passage d'arguments qui ne contiennent pas d'espaces ou d'une seule cité'
(qui est non-standard dans cmd.exe), le one-liner est ceci:
param()
déclarations peuvent être utilisées,$args
n'est pas obligatoire.$argv0
est utilisé pour compenser le manque$MyInvocation.PS*
info.Exemples:
lors du passage d'arguments qui sont "entre guillemets", mais ne contiennent pas de
le & et les personnages, j'ai utiliser un deux-liner à remplacer tous les "avec"
(Notez que l'espace est important dans la
A= %*
mission pour l'l'argument de moins en moins le cas.)
Résultats:
le cas le plus général passe les arguments via des variables d'environnement
ainsi, Powershell est
param()
déclaration ne fonctionne pas. Dans ce cas, leles arguments sont appelés à être "entre guillemets" et peut contenir " ou &
(sauf pour le chemin d'accès de l' .cmd fichier lui-même):
(À noter que dans la première ligne
A=1&
ne doit pas contenir d'espace.)Résultat:
OriginalL'auteur robert4