【发布时间】:2019-05-17 02:06:49
【问题描述】:
在部署之前,我正在尝试使用 PowerShell Invoke-Command 杀死锁定文件的进程
这是我的代码:
$password = ConvertTo-SecureString "password" -AsPlainText -Force
$credentials = New-Object System.Management.Automation.PsCredential("Admin",$password)
$scriptBlock = {Get-Process | Where-Object { $_.MainWindowTitle -like 'MyApp*'} | Stop-Process}
Invoke-Command -computername Agent1 -Credential $credentials -scriptblock $scriptBlock
不幸的是,它什么也没做,也没有抛出任何错误。
在机器上,这工作正常:
Get-Process | Where-Object { $_.MainWindowTitle -like 'MyApp*'} | Stop-Process
【问题讨论】:
-
如果有一个进程在后台运行,那么它不会有一个窗口标题。尝试
Enter-PSSession -computername Agent1,然后执行Get-Process -IncludeUsername | Where-Object { $_.MainWindowTitle }你应该得到一个空的结果,即使你通过 RDP 登录到 Agent1 并启动记事本或其他东西,如果你尝试通过远程会话列出它,你仍然不会得到任何结果。 -
我试图杀死的进程正在作为控制台应用程序运行,并且标题与我的停止进程脚本中的标题匹配。使用完全相同的命令,在 Agent1 机器上,我可以杀死它,运行:Get-Process | Where-Object { $_.MainWindowTitle -like 'MyApp*'} |停止进程我已经尝试过 Enter-PSSession -computername Agent1 -credential $credentials 它工作得很好,但是一样。运行命令没有结果。
-
所以如果我理解正确,它可以使用
Enter-PSSession,是吗?尝试使用New-PSSession创建一个会话对象,然后将该对象传递给Enter-PSSession并进行测试;如果可行,请尝试将会话对象传递给Invoke-Command。 -
我可以连接到机器,但是当我尝试真正停止那里的任何进程时,它没有..
标签: powershell