2

凝縮したい

psexec \\server taskill /f /t /fi "USERNAME eq $username" /im soffice*
psexec \\server taskill /f /t /fi "USERNAME eq $username" /im swriter*
psexec \\server taskill /f /t /fi "USERNAME eq $username" /im scalc*
psexec \\server taskill /f /t /fi "USERNAME eq $username" /im simpress*

1 つの psexec コマンドに。通常、私は&オペレーターにやらせようとしますso & soが、これはすべて PS で行っているため、気に入らないようです。()andの配列を試しました""が、それらも好きではないようです。

編集[回答]

.cmd(BAT)ファイルをコピーして、$PROFILEローカルにショートカットを作成するだけになりました。

function flushlibra
{
param([string]$user = "")
if ($user -eq "")
{
    $user = Read-Host "User to nuke LibraOffice proccesses: "
}

psexec -c "\\unc\path\to\flushlibra.cmd" $user
}

.cmdファイル

taskkill /f /t /fi "USERNAME eq %1" /im soffice*
taskkill /f /t /fi "USERNAME eq %1" /im swriter*
taskkill /f /t /fi "USERNAME eq %1" /im scalc*
taskkill /f /t /fi "USERNAME eq %1" /im simpress*
4

3 に答える 3

8

psexecを使用すると、単一のコマンドだけでなく、バ​​ッチスクリプトをリモートで呼び出すこともできます。スイッチを使用し-cて、スクリプトをリモートシステムにコピーする必要があることを示します。

したがって、ローカルにスクリプトKillProcs.cmdがある場合は、次のようになります。

taskill /f /t /fi "USERNAME eq $username" /im soffice*
taskill /f /t /fi "USERNAME eq $username" /im swriter*
taskill /f /t /fi "USERNAME eq $username" /im scalc*
taskill /f /t /fi "USERNAME eq $username" /im simpress*

次に、このようにリモートで実行できます

psexec \\server -c c:\localpath\KillProcs.cmd
于 2012-09-12T18:03:41.343 に答える
2

私はいつもこのように使用します:)そして適切に動作します

psexec \\COMPUTER -e cmd /c (COMMAND1 ^& COMMAND2 ^& COMMAND3)
于 2014-10-17T08:59:16.277 に答える
1

コマンドを 1 行に連結するだけの場合は、次のようにステートメント セパレータを使用します;

psexec \\server taskill /f /t /fi "USERNAME eq $username" /im soffice*; psexec \\server taskill /f /t /fi "USERNAME eq $username" /im swriter* ; psexec \\server taskill /f /t /fi "USERNAME eq $username" /im scalc* ; psexec \\server taskill /f /t /fi "USERNAME eq $username" /im simpress*

PSEXEC の使用法を見ると、PSEXEC の 1 回の呼び出しで複数のプログラムを指定することはできないようです。

ところで、PowerShell のリモーティング機能を使用できますserver。WMF 2.0 以降がインストールされていて、WSMan リモーティングが有効になっていると仮定します。

Invoke-Command -ComputerName server {Stop-Process -Name soffice*,swriter*,scalc*,simpress* -Force}

リモート ルートを使用できない場合は、PowerShell 関数を作成する別の方法があります。

function Stop-RemoteProcess([string]$ComputerName, [string[]]$Programs, [string]$UserName)
{
    foreach ($program in $Programs)
    {
        psexec "\\$ComputerName" taskill /f /t /fi "USERNAME eq $UserName" /im $program
    }
}

Stop-RemoteProcess server soffice*,swriter*,scalc*,simpress* JohnDoe
于 2012-09-12T17:50:48.847 に答える