2012-04-30 5 views
4

J'ai créé ce script de base PowerShell à une ligne qui s'exécute si j'exécute la cmdlet ad pour AD, puis le reste de la requête. Mais en essayant de les faire fonctionner ensemble, il semble seulement charger la cmdlet et n'exécuter pas le reste du cmd.Script PowerShell à une ligne

powershell.exe -command "&{Import-Module ActiveDirectory; Get-AdGroup -Server DC.Mydomain.com -filter 'name -eq "xxxx"'| set-Adgroup -Replace @{wWWHomePage='10.24.218.194'}}" 

Pourquoi ne fonctionne-t-il pas tous ensemble comme ceci?

Répondre

0

En cas de doute avec des commandes complexes, vous pouvez essayer de les coder en Base64 et en utilisant -EncodedCommand. Voir powershell /? pour un exemple.

La ligne fonctionne-t-elle comme prévu lorsque vous l'entrez directement dans PowerShell?

+0

La ligne fonctionne quand je l'utilise directement dans PowerShell. Si importer le module AD puis exécutez le reste de celui-ci, il fonctionne à chaque fois. –

0

Cela ressemble à un problème de citation. Essayez de remplacer les citations de filtre entourant avec des accolades:

-filter {name -eq "xxxx"} 

Pour éviter ce genre de situations, lorsque vous avez longue liste de commandes à exécuter, je vous suggère de mettre les commandes dans un fichier de script et passer son chemin vers le -File paramètre.

5

La réponse était d'échapper aux guillemets doubles:

powershell.exe -noprofile -command "&Import-Module ActiveDirectory; Get-AdGroup -Server server.mydomain.com -filter 'name -eq *\"xxxx\"*'| set-Adgroup -Replace @{wWWHomePage='10.10.10.10'}" 

Fondamentalement, je suis en cours d'exécution de SQL à ce jour un attribut ActiveDirectory qui n'est pas accessible avec DSADD.

0
# Start-Run, type: 
powershell.exe -noprofile -command "[guid]::newguid()|Set-Clipboard" 
Questions connexes