我有这个脚本来杀死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
有没有办法将tasklist输出直接传递给变量?
提前感谢任何提示! 约瑟夫
答案 0 :(得分: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
}