如何在powershell中使用get进程结果填充数组

如何在powershell中使用get进程结果填充数组,powershell,Powershell,我正在尝试编写一个PS1脚本: 1.接受计算机名和进程名 2.显示与搜索匹配的所有PID和进程 3.问你想杀什么。(我还没有包括这部分代码) 我需要$processInfo数组的帮助。 我希望能够查看每个进程,并显示名称和ID。然后我将知道在这之后要杀死什么PID 因此,如果我搜索“App*”,我如何将其输出为以下格式: Process ID: 1000 Name: Apple Process ID: 2000 Name: Appster Process ID: 3000 Name: AppSa

我正在尝试编写一个PS1脚本:
1.接受计算机名和进程名
2.显示与搜索匹配的所有PID和进程
3.问你想杀什么。(我还没有包括这部分代码)

我需要$processInfo数组的帮助。 我希望能够查看每个进程,并显示名称和ID。然后我将知道在这之后要杀死什么PID

因此,如果我搜索“App*”,我如何将其输出为以下格式:

Process ID: 1000 Name: Apple
Process ID: 2000 Name: Appster
Process ID: 3000 Name: AppSample
这是我到目前为止所拥有的

# Look up a computer, and a process, and then 
$computerName = Read-Host "Enter the FQDN of the target computer:"

# Enter the name of the process you're looking for. Wildcard searching is asterix
$processSearch = Read-Host "Enter the process name to look for:"

# Create a process array with PID, Name, and Runpath
$processInfo = (
    processID = get-process -ComputerName $computerName -Name $processSearch | select -expand ID,
    processName = get-process -ComputerName $computerName -Name $processSearch |select -expand Name,
    processPath = get-process -ComputerName $computerName -Name $processSearch |select -expand Path
)

# Display all of the processes and IDs that match your search
foreach($id in $processInfo){
    write-host Process ID: $id.processID Name: $id.processName
}

Get进程
可以在
Name
参数中使用通配符。因此,您只需要在对象上循环并输出您要查找的属性

# Look up a computer, and a process, and then 
$ComputerName = Read-Host "Enter the FQDN of the target computer:"

# Enter the name of the process you're looking for. Wildcard searching is asterix
$ProcessSearch = Read-Host "Enter the process name to look for:"

Get-Process -ComputerName $ComputerName -Name "$ProcessSearch*" | ForEach-Object {Write-Host Process ID: $_.ID Name: $_.ProcessName}
你也可以为一个更强大的感觉

Get-Process -ComputerName $ComputerName -Name "$ProcessSearch*" | Select-Object ID,ProcessName

不要多次调用
Get Process
。调用它一次并保存结果-它已经是一个数组。然后让你的foreach检查每个对象。更好的方法是,尝试以下操作:
$process=Get process-ComputerName$ComputerName-Name$processSearch | Out GridView-OutputMode Single
。或者按照@BenH的建议去做。你不需要扩展它们来获得所有细节。类似于
$processinfo=get process-ComputerName$ComputerName-name$processsearch |选择id、name、path
。另外,请将写入主机更改为写入输出