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*

进入一个 psexec 命令。通常我会尝试&操作员这样做,so & so但由于我是在 PS 中做这一切,它似乎不喜欢那样。我尝试了一系列,()""它似乎也不喜欢那些。

编辑[答案]

最后只是复制了一个.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

如果您只想在一行上连接命令,请使用语句分隔符,;例如:

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 调用中指定多个程序。

顺便说一句,您可以使用 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 回答