我目前正在尝试查找在客户端计算机上运行的命令行,如果找到运行该脚本的命令行,我需要终止该进程ID。这是我目前所拥有的,但我有点迷失了杀死ParentProcessID的好方法。
您可以在我的Get-WMIObject中看到,我正在获取CommandLine和ParentProcess ID的属性。我可以运行foreach并使用字符串匹配这些命令行。但是在这一点上,我不知道如何传递或链接ParentProcessID属性,所以我可以杀死那个ParentProcessID。
$process = "powershell.exe"
$GetCommand = Get-WmiObject Win32_Process -Filter "name = '$process'" |select CommandLine, ParentProcessID
foreach($command in $GetCommand){
If($command -match "MyScript.ps1"){
#kill ParentProcessID
}
}
我是如何实现这一目标的?
答案 0 :(得分:0)
在PowerShell中(与传统的shell不同) - 一切都是包装的.NET对象。
这意味着您可以使用Select-Object
运算符
.
选择的属性
$process = "powershell.exe"
$GetCommand = Get-WmiObject Win32_Process -Filter "name = '$process'" |Select-Object CommandLine, ParentProcessID
foreach($command in $GetCommand){
if($command.CommandLine -match "MyScript.ps1"){
Stop-Process -Id $command.ParentProcessID
}
}