1

2 つのプロセスをリモートで強制終了し、いくつかのフォルダーを削除し、サービスをアプリケーションとして起動するスクリプトを作成しています。最終的にこれは複数のサーバーに対して実行されるように展開されますが、現在、単一のサーバーに対してテストしています。リモート サービスを起動する最後のステップを除いて、すべてがうまく機能します (サービスとして実行されるとの互換性の問題により、-cl 引数を使用してアプリケーションとして実行されます)。アプリケーションはスクリプトを介して起動しますが、スクリプトが次のステップに進むとすぐにシャットダウンします。私はまったく初心者なので、かなり掘り下げてきましたが、解決策を見つけることができませんでした。新しい実行空間でプロセスを起動する必要があるようですが、それを行うための適切な noob ガイドを見つけることもできません。

また、スクリプトは、ローカライズされてマシン上で実行された場合と同じように実行されます。

これが私が持っているものです

$a = Get-ChildItem "\\TestMachine\c$\DataFiles"

$pass = cat "C:\cred.txt" | convertto-securestring 

$mycred = new-object -typename System.Management.Automation.PSCredential -argumentlist "username",$pass

if ($a.Count -gt 10)
{
Invoke-Command -ComputerName TestMachine -cred $mycred -scriptBlock {stop-process -name TestProcess -force -EA SilentlyContinue}

Invoke-Command -ComputerName TestMachine -cred $mycred -scriptBlock {stop-process -name Winword -force -EA SilentlyContinue}

Get-ChildItem -Path \\TestMachine\c$\WordDocs -Recurse -EA SilentlyContinue | Where-Object {$_.PsIsContainer} | Remove-Item -Recurse -Force -EA SilentlyContinue

Invoke-Command -ComputerName TestMachine -cred $mycred -scriptBlock {Start-Process "C:\Program Files (x86)\Test\TestUploadManager\TestUploadManager.exe" -Verb Runas -ArgumentList -cl}

echo "Success: TestMachine Was successfully reset"
}

else

{
echo "Failed: Reset was not necessary"
}

exit
4

5 に答える 5

1

でリモートセッションを開いてから、コマンドレットを使用せずEnter-PSSessionにコマンドレットを使用することができますStart-ProcessInvoke-Command

このようにプログラムを実行することもできます& "C:\Program Files (x86)\Test\TestUploadManager\TestUploadManager.exe" -cl(リモートセッション内で)

最後に、セッションを終了する必要がありますExit-PSSession

もう1つの可能性は、スクリプトを「ローカル」で実行することです。ローカルマシンで実行するのと同じようにスクリプトを記述します。アクセス可能な共有にコピーします。次に、リモーティングメソッドを使用して、マシン上でスクリプトを実行します。

于 2012-02-13T09:51:29.987 に答える
1

この WMI ソリューションが私にとって最も効果的でした: https://social.technet.microsoft.com/Forums/scriptcenter/en-US/ead19612-5e7b-4012-8466-0d650232c7a5/invokecommand-and-startprocess?forum=ITCG – Adam Driscoll (同じリンクを指している)

使用する:

([WMICLASS]"\\localhost\ROOT\CIMV2:win32_process").Create("something.exe argument1Here")

それ以外の:

Start-Process
于 2016-08-08T21:08:47.750 に答える
0

Start-Process 呼び出しで、-Wait パラメーターを使用してみてください。

于 2012-02-11T03:06:04.027 に答える
0

まったく同じ問題がありました。と の組み合わせで、きれいに動作するように[WMICLASS] 's create()なりStart-Processました。

ここで私の答えを確認してください

于 2016-01-28T04:25:37.083 に答える