2012-04-30 29 views
4

私は、adコマンドレットを実行して残りのクエリを実行すると実行されるこの基本的な1ライナーのPowerShellスクリプトを作成しました。しかし、それらを一列にまとめて実行しようとすると、コマンドレットを読み込むように見えるだけで、残りのcmdは実行されません。ワンライナーPowerShellスクリプト

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

なぜこのようにまとめて実行されないのですか?

答えて

0

複雑なコマンドが疑わしい場合は、Base64で符号化し、-EncodedCommandを使用してみてください。例については、powershell /?を参照してください。

PowerShellで直接入力したときに回線が意図したとおりに機能しますか?

+0

PowerShellで直接使用すると回線が機能​​します。 ADモジュールをインポートする場合は、毎回動作する残りのモジュールを実行します。 –

0

引用の問題のようです。状況のこれらの種類を回避するために

-filter {name -eq "xxxx"} 

、あなたは長いリストを実行するコマンドを持っているとき、私はあなたがスクリプトファイルにコマンドを入れて-Fileへのパスを渡し勧め:中括弧で囲むフィルタ引用符を置き換えるようにしてくださいパラメータ。答えは二重引用符をエスケープした

5

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'}" 

は基本的に、私はDSADDとアクセスできないのActiveDirectoryの属性を更新するためにSQLからこれを実行していますよ。

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