如何将Get-WMIObject属性传递给变量

问题描述:

我正在尝试查找在客户端计算机上运行的命令行,并且如果找到运行脚本的命令行,我需要终止该进程ID。这是我目前所拥有的,但是我有点失去了一个杀死ParentProcessID的好方法。如何将Get-WMIObject属性传递给变量

你可以在我的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

'如果($ command.CommandLine -match “MyScript.ps1”){停止进程-Id $ command.ParentProcessID引用所选择的属性与Select-Object }' –

+0

谢谢Mathias!我不认为我可以这样通过主变量传递属性。哇,我学到了一些新东西。 谢谢。我不确定如何将其标记为已回答,因此您可以获得相应的回报。 – TheInfamousOne

+0

这是PowerShell - 一切都是.NET对象:) –

在PowerShell中(与传统shell不同) - 所有东西都是一个包装好的.NET对象。

这意味着,可以使用操作者.

$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 
    } 
}