Loops 从机器列表中获取特定进程的进程会反复返回相同的结果
我这里有一个令人困惑的问题。我创建了一个脚本,用于检查一组机器上运行的JAVAW实例Loops 从机器列表中获取特定进程的进程会反复返回相同的结果,loops,powershell,foreach,Loops,Powershell,Foreach,我这里有一个令人困惑的问题。我创建了一个脚本,用于检查一组机器上运行的JAVAW实例 $computers = Get-Content C:\computers.txt foreach ($computer in $computers){ Get-Process -ComputerName $computers -Name Javaw | select machinename, id, ProcessName } 它当然会在TXT文件中找到一些机器上运行的JAVAW进程(如
$computers = Get-Content C:\computers.txt
foreach ($computer in $computers){
Get-Process -ComputerName $computers -Name Javaw | select machinename, id, ProcessName
}
它当然会在TXT文件中找到一些机器上运行的JAVAW进程(如预期的那样),但会在某种循环中重复结果。我希望它只报告运行JAVAW的每台机器一次。它也不会在同一台机器上报告不同的JAVAW实例,PID是相同的。例如,在一台机器上,它报告JAVAW PID 1612 5次
因此,输出如下所示:
计算机1612 javaw计算机2 1964 javaw
计算机3 8448 javaw
计算机1612 javaw
计算机2 1964 javaw
计算机3 8448 javaw
计算机1612 javaw
计算机2 1964 javaw
计算机3 8448 javaw
etc
非常感谢您的帮助。您正在扫描每台计算机
X
次,其中X
是您在computers.txt
中的计算机数量
的Get Process
参数接受计算机名称的集合,当您向其传递集合时,它会提取这些计算机的进程列表。您正在传递-Computername
,但您想传递$computers
——每次通过循环的“迭代器”$computer
- 您在
computers.txt中循环浏览计算机列表,每台计算机一次
$computers
传递到获取过程
备选方案1(我的偏好):
备选案文1a:
Get-Process -ComputerName $(get-content c:\computers.txt) -Name Javaw | select machinename, id, ProcessName;
备选案文2:
$computers = Get-Content C:\computers.txt;
foreach ($computer in $computers){
Get-Process -ComputerName $computer -Name Javaw | select machinename, id, ProcessName;
}
备选案文3:
Get-Content C:\computers.txt | foreach-object {Get-Process -ComputerName $_ -Name Javaw | select machinename, id, ProcessName};
您正在扫描每台计算机
X
次,其中X
是您在computers.txt
中的计算机数
的Get Process
参数接受计算机名称的集合,当您向其传递集合时,它会提取这些计算机的进程列表。您正在传递-Computername
,但您想传递$computers
——每次通过循环的“迭代器”$computer
- 您在
computers.txt中循环浏览计算机列表,每台计算机一次
$computers
传递到获取过程
备选方案1(我的偏好):
备选案文1a:
Get-Process -ComputerName $(get-content c:\computers.txt) -Name Javaw | select machinename, id, ProcessName;
备选案文2:
$computers = Get-Content C:\computers.txt;
foreach ($computer in $computers){
Get-Process -ComputerName $computer -Name Javaw | select machinename, id, ProcessName;
}
备选案文3:
Get-Content C:\computers.txt | foreach-object {Get-Process -ComputerName $_ -Name Javaw | select machinename, id, ProcessName};
你好,阿尔罗克,非常感谢我选择了你的选项2,它非常好用。我现在明白我做错了什么,也谢谢你的解释@兰布:接受这个答案将是相当可观的。嗨,阿尔罗克,非常感谢。我选择了你的选项2,它非常有效。我现在明白我做错了什么,也谢谢你的解释@兰布:接受这个答案是可以接受的