从进程 ID 列表中获取 processId 的值
Fetching value of processId from list of process Ids
我运行以下cmdlet
获取文件使用的进程ID:
Get-Process | foreach{$processVar = $_;$_.Modules | foreach{if($_.FileName -eq $lockedFile){$processVar.Name + " PID:" + $processVar.id}}}
以上 cmdlet 正在生成输出 process1 PID:5260
现在,我需要通过管道传输 cmdlet 以终止上面的 process id
,我在下面的 cmdlet 中编写了它:
Get-Process | foreach{$processVar = $_;$_.Modules | foreach{if($_.FileName -eq $lockedFile){$processVar.Name + " PID:" + $processVar.id}}} | Stop-Process $processVar.id
但是,它并没有停止进程。
我基本上是想打印出进程名和进程id,然后杀掉进程。
进程名称和进程 ID 已正确打印出来,但需要帮助将进程 ID 通过管道传输到 cmdlet,然后终止进程。
也许你可以这样做,我相信将 object 输出到控制台会更具可读性。您需要做的唯一更改是将 Stop-Process
移动到 if
条件内。
$lockedFile = 'defineThisVariable'
Get-Process | ForEach-Object {
if($_.Modules.FileName.where({$_ -eq $lockedFile})) {
# This is the ouput object to the console
[pscustomobject]@{
Process = $_.Name
PID = $_.id
}
# Here you stop the Process, you can add
# `-Verbose` for more output to console
Stop-Process -Id $_.Id
}
}
我运行以下cmdlet
获取文件使用的进程ID:
Get-Process | foreach{$processVar = $_;$_.Modules | foreach{if($_.FileName -eq $lockedFile){$processVar.Name + " PID:" + $processVar.id}}}
以上 cmdlet 正在生成输出 process1 PID:5260
现在,我需要通过管道传输 cmdlet 以终止上面的 process id
,我在下面的 cmdlet 中编写了它:
Get-Process | foreach{$processVar = $_;$_.Modules | foreach{if($_.FileName -eq $lockedFile){$processVar.Name + " PID:" + $processVar.id}}} | Stop-Process $processVar.id
但是,它并没有停止进程。
我基本上是想打印出进程名和进程id,然后杀掉进程。
进程名称和进程 ID 已正确打印出来,但需要帮助将进程 ID 通过管道传输到 cmdlet,然后终止进程。
也许你可以这样做,我相信将 object 输出到控制台会更具可读性。您需要做的唯一更改是将 Stop-Process
移动到 if
条件内。
$lockedFile = 'defineThisVariable'
Get-Process | ForEach-Object {
if($_.Modules.FileName.where({$_ -eq $lockedFile})) {
# This is the ouput object to the console
[pscustomobject]@{
Process = $_.Name
PID = $_.id
}
# Here you stop the Process, you can add
# `-Verbose` for more output to console
Stop-Process -Id $_.Id
}
}