我可以在powershell的1个语句中使用2个foreach循环吗?

时间:2015-12-29 11:53:45

标签: windows loops powershell foreach powershell-v3.0

好吧,我几乎想要包含两个"获取内容文件"并将它们循环到get service cmdlet中。问题是我似乎只能使用一个foreach循环来传递get-service cmdlet中的两个不同内容

$ask1 = Read-Host -Prompt "1 for single server, 2 for multiple"


if ($ask1 -eq 1) {

$service = Read-Host -Prompt "enter process"
$server = Read-Host -Prompt "enter server name"

Get-Service -Name $service -ComputerName $server

} else {

$invoke1 = Invoke-Item "u:\Scripts\Servers.txt" 
$invoke2 = Invoke-Item "u:\Scripts\Process.txt"

$ask2 = Read-Host -Prompt "press 1 to continue" 

   while ($ask1 -eq 2) {

      if ($ask2 -eq 1) {
      $content1 = Get-Content "U:\Scripts\process.txt"
      $content2 = Get-Content "U:\Scripts\servers.txt"

      Write-Host "servers are " $content2
      Write-Host "process looking for are " $content1

  foreach ($item in $content1) -and ($item2 in $content2) {     
     Get-Service -name $item -ComputerName $item2  | Format-List -Property MachineName,status,Displayname 

  }


      }
      break
   }


}

如果你看到这部分

foreach($ item1中的$ item) - 和$ content2中的$ item2 {
     Get-Service -name $ item -ComputerName $ item2 | Format-List -Property MachineName,status,Displayname

}

你会看到我试图获取2个不同地方的内容。一个用于服务器,一个用于服务。反正有没有包括第二个forea循环?

1 个答案:

答案 0 :(得分:3)

如果两个文件的行数相同,则可以使用经典的for循环:

$content1

如果您尝试在$content2中列出的每台计算机上检索foreach($serviceName in $content1) { foreach($computerName in $content2) { Get-Service -Name $serviceName -ComputerName $computerName } } 中列出的所有服务,请使用嵌套循环:

fractal