7

問題があります。次のようなスクリプトがあります。

  • PSSession に接続します (PSSession管理者アカウントで使用します)
  • 停止 2 プロセス
  • それらのファイルを変更してください
  • 2プロセスを開始します(ここで問題)

サーバー上で処理を開始したいので、PSSessionで接続しています(問題ありません)

私は Invoke-Command を行います:

# $pathProg path to my program
Invoke-Command -session $mySession -command {Start-Process $($args[0])} -ArgumentList $pathProg

しかし、それは何もしません (私は VNC で確認します)

私も Invoke-Command を行います:

# $pathProg path to my program
Invoke-Command -session $mySession -command {&$($args[0])} -ArgumentList $pathProg

プログラムを起動しますが (良い)、私のスクリプトはプログラムの終了を待ちます (良くない)

誰にもアイデアがありますか?

ありがとう

4

3 に答える 3

0

$pathProg最終的に実行されるスクリプト ブロック内で使用できない場合があります。スクリプト ブロックに引数として渡すことができます。

Invoke-Command -session $mySession -command { param($progPath) ... } -argumentlist $progPath

外側の-argumentlist, が引数をスクリプトブロックに渡すわけではありません。

于 2013-08-12T08:47:03.883 に答える
0

コマンドをローカルで文字列として作成し、それを Invoke-Command スクリプトに ScriptBlock として渡してみましたか?

$remoteSession = New-PSSession -ComputerName 'MyServer'
$processName = 'MyProcess'

$command = 'Start-Service ' + $processName + ';'

Invoke-Command -Session      $remoteSession `
               -ScriptBlock  ([ScriptBlock]::create($command))

Remove-PSSession $remoteSession

リモート サーバーからのフィードバックが必要な場合は、次のように Write-Output を介して出力を取得できます。

$command = 'Start-Service ' + $processName + ' | Write-Output ;'
于 2013-08-12T09:43:44.590 に答える