将输出加载到变量直接PowerShell



我有这个脚本来终止VNC前提并重新启动VNC服务:

$ip = Read-Host 'Enter hostname or IP'
& tasklist /s $ip /FI "IMAGENAME eq winvnc*"
$procid_1 = Read-Host 'pid 1'
$procid_2 = Read-Host 'pid 2'
& taskkill /s $ip /pid $procid_1
& taskkill /s $ip /pid $procid_2
Stop-Service -InputObject $(Get-Service -Computer $ip -Name "uvnc_service")
Start-Service -InputObject $(Get-Service -Computer $ip -Name "uvnc_service")

此命令

& tasklist /s $ip /FI "IMAGENAME eq winvnc*"

给我这个输出:

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
winvnc.exe                    3576                            0      2,968 K
winvnc.exe                    4444                            0      5,556 K

我必须手动将 PID(在本例中为 3576 和 4444)输入到变量 $procid_1 和 $procid_2

有没有办法将任务列表输出直接传递给变量?

提前感谢您的任何提示!约瑟夫

使用 Get-Process cmdlet 而不是 tasklist - Get-Process将输出真正的实时 .NET 对象,因此可以使用点表示法直接获取 Id 属性:

$RemoteComputer = Read-Host 'Enter hostname or IP'
Get-Process -Name winvnc -ComputerName $RemoteComputer |ForEach-Object {
    & taskkill /s $ip /pid $_.Id
}

最新更新