En passant Powershell variables dans un scriptblock
Je suis en train de prendre powershell variables et de les appliquer à un scriptblock.
param(
[string]$username = $(throw "Blackberry Admin User Name is required"),
[string]$password = $(throw "Blackberry Admin Password is required"),
[string]$u = $(throw "Blackberry User Name is required")
)
$s = New-PSSession -computerName bbbes01
Invoke-Command -Session $s -Scriptblock {cd "C:\Program Files (x86)\Research In Motion\BlackBerry Enterprise Server Resource Kit\BlackBerry Enterprise Server User Administration Tool Client"
./BESUserAdminClient -username $username -password $password -ad_auth -domain staging -b bbbes -u $u -change -wrandom} -argumentlist $username $password $u
Je suis en cours d'exécution
.\RandomActivationEmail.ps1 -nom d'utilisateur besadmin -mot de passe Pa$$word -u bb.l'utilisateur
L'erreur que j'obtiens est:-
Invoke-Command : Un paramètre de position ne peut pas être trouvé qui accepte l'argument 'Pa$$mot".
Au C:\Scripts\bb\RandomActivationEmail.ps1:12 char:15
+ Invoke-Command <<<< -Session $s -Scriptblock {cd "C:\Program Files (x86)\Research In Motion\BlackBerry Enterprise Se
propriétaires de véhicules récréatifs du Kit de Ressources\BlackBerry Enterprise Server de l'Utilisateur de l'Outil d'Administration de Client"
+ CategoryInfo : InvalidArgument: (:) [Invoke-Command], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commandes.InvokeCommandCommand
Merci pour la lecture, les acclamations Colm.
OriginalL'auteur Colm Blake | 2011-08-11
Vous devez vous connecter pour publier un commentaire.
Vous pouvez transmettre des valeurs via le paramètre arguments et se référer à eux comme $args[0] et ainsi de suite à l'intérieur du bloc de script:
Ou définir les paramètres à l'intérieur du bloc de script et utiliser des paramètres nommés:
Pouvez-vous essayer avec l'opérateur d'appel (e,g &): & BESUserAdminClient.exe -nom d'utilisateur $nom d'utilisateur -mot de passe $par mot de passe ad_auth -domaine de la mise en scène -b bbbes -u $u -changement -wrandom
Fixe! Grâce à Shay pour me pointer dans la bonne direction -nom d'utilisateur $args[0] -mot de passe $args[1] -ad_auth -domaine de la mise en scène -b bbbes -u $args[2] -changement -wrandom } -argumentlist @($username, $password, $u) à l'aide de $args et @() dans la liste d'arguments a travaillé merci beaucoup
Je vivais exactement le même problème. En utilisant le @($var1, $var2) avec l'-ArgumentList option a fonctionné parfaitement pour moi. Merci les gars.
OriginalL'auteur Shay Levy