Passer argument en Powershell
J'ai un script powershell qui remplit certaines tâches dans Active Directory et MS Exchange. J'ai besoin de passer dans le nom d'utilisateur Active Directory à partir de notre système de journalisation des appels. Avoir le journal des Appels système de passer l'argument en est simple.
Le problème, je suis confronté est d'avoir powershell lire l'argument dans une variable.
Je vais donner une preuve de concept exemple.
Voici un exemple de commande de passage de l'argument en powershell.
C:\Users\UserName\Desktop\Test.ps1 -ADusername "Hello World"
Voici un exemple de script:
Param([string]$adusername)
$adusername
pause
Je m'Attends à la sortie suivante:
Hello World
Press Enter to continue...:
C'est la sortie réelle:
Press Enter to continue...:
Juste envelopper ma tête autour de ce concept va m'aider énormément. J'ai été incapable de trouver des exemples ou des tutoriels qui a travaillé lorsqu'il est appliqué à mon scénario. Je m'excuse si c'est un double post, ne pourrais pas trouver quelque chose sur ce site.
EDIT: par demande, c'est mon script: http://pastebin.com/ktjpLQek
il semble bien fonctionner pour moi sur 2, ainsi. J'ai trouvé appelant params une étrange affaire sans appel PowerShell première, et souvent commandés $args[x] semble la voie la plus facile (surtout pour un arg)...
Que voulez-vous dire par "sans remettre powershell première"? Vous dire d'essayer d'exécuter un script powershell à partir de
cmd.exe
ou quelque chose directement?Le Script est actuellement sur mon bureau. mais je suis en cours d'exécution à partir de dialogue exécuter, de manière à imiter la commande à partir de l'application que je vais utiliser. L'exécution de PS5
correct, comme à partir de la ligne en cours d'exécution, un raccourci, une tâche planifiée etc.
OriginalL'auteur mttp1990 | 2016-05-06
Vous devez vous connecter pour publier un commentaire.
Je pense que vous aurez beaucoup plus de chance si vous évitez d'essayer d'utiliser params et appeler le script exactement de cette façon.
C'est possible, mais les paramètres fonctionnent mieux si vous inline le fichier comme:
En restant proche de ce que vous faites, cependant, vous devriez être en utilisant $args et l'appel de PowerShell (l'exe directement)
Si vous appelez votre fichier comme: (j'ai utilisé le runbox)
et puis remplacez votre
Param([string]$adusername)
avec:En outre, cela devrait fonctionner pour vous (à disséquer):
Appeler le script avec le chemin d'accès
powershell
c:\Path\Folder\Script.ps1 "Hello World!" $ad = "JSmith"
Si cela ne fonctionne pas, vous devez vous assurer que votre stratégie d'exécution est défini correctement. Get-ExecutionPolicy vais vous dire le niveau actuel. Pour les tests, vous pouvez le configurer très faible avec
Set-ExecutionPolicy unrestricted
Cela a fonctionné qu'une seule fois afin de la preuve de concept a fonctionné, je vais donner une réponse. Je suis juste toujours à une perte quant à pourquoi il ne fonctionne pas pour moi.
Je suis tout aussi confus au sujet d'un "ça a marché une fois"... Ne vous déplacez le fichier de script ou de quoi que ce soit? De quoi êtes-vous les stratégies d'exécution?
L'exécution de la politique est sans restriction. J'ai un tas d'autres scripts que j'utilise pour la vitesse de mes tâches quotidiennes. Le Script n'a pas déplacé les lieux. Je vais essayer cela dans un environnement isolé demain et voir si c'est juste mon PC révulsés.
OriginalL'auteur Austin T French
Ajouter les suivantes au début de votre script.
Appelant exemple, après un cd vers le répertoire de script
OriginalL'auteur mekuls
Le texte suivant dans un nouveau script fonctionne pour moi.
PS C:\scripts> .\Untitled1.ps1 "ce test"
Vous avez choisi ce test
PS C:\scripts>
Pouvez-vous coller votre script sur pastebin.com et le partager? Que
param
notation fonctionne et j'ai Powershell v5 installé.$PSVersionTable.PSVersion
user4317867 par demande c'est mon script pastebin.com/ktjpLQek
Pourriez-vous essayer suivant ce Hey scripteur l'article sur les jeux de paramètres? C'est pour une fonction, mais il devrait fonctionner comme décrit dans le PowerShell ISE.
Cela ne semble pas fonctionner non plus. Je suis capable de passer un argument à l'aide de cette méthode à partir du script et j'ai été capable de le faire pour d'autres projets dans le passé, quelque chose est juste, de ne pas laisser l'argument en provenance de l'extérieur de l'environnement powershell.
OriginalL'auteur user4317867