私は問題を抱えています、私はscriptを持っています:
PSSession
を使用します)サーバーでプロセスを開始したいので、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
プログラムを起動します(良い)が、私のスクリプトは終了プログラムを待ちます(良くない)
誰かアイデアがありますか?
ありがとう
WMIを使用してみることができます。
$command = "notepad.exe"
$process = [WMICLASS]"\\$CompName\ROOT\CIMV2:win32_process"
$result = $process.Create($command)
資格情報を渡す必要がある場合:
$cred = get-credential
$process = get-wmiobject -query "SELECT * FROM Meta_Class WHERE __Class = 'Win32_Process'" -namespace "root\cimv2" -computername $CompName -credential $cred
$results = $process.Create( "notepad.exe" )
$pathProg
は、最終的に実行されるスクリプトブロック内では使用できない場合があります。スクリプトブロックに引数として渡すことをお勧めします
Invoke-Command -session $mySession -command { param($progPath) ... } -argumentlist $progPath
外側の-argumentlist
、引数をscriptblockに渡します。
コマンドを文字列としてローカルで作成し、それをScriptBlockとしてInvoke-Commandスクリプトに渡してみましたか?
$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 ;'