Powershell 如何获得唯一的结果而不是全部

时间:2021-04-05 06:37:14

标签: powershell foreach powershell-5.0 foreach-loop-container powershell-5.1

这是我的第一个问题。非常感谢您的帮助。

$ser1='E:\1.exe' , 'E:\2.exe'
$sername=("A1Testservice","A1Testservice")

foreach($ser in $sername)
{
    foreach ($ser2 in $ser1)
    {
        New-Service -Name $ser -DisplayName $ser -Description $ser -BinaryPathName $ser2 -ErrorAction SilentlyContinue -StartupType Automatic 
        Restart-Service $ser 
    }
}

以下是实际结果

1.exe A1Testservice,
1.exe A2Testservice

但我需要以下结果
1.exe A1Testservice,
2.exe A2Testservice

1 个答案:

答案 0 :(得分:1)

您有两个完全不相关的数组,并使用嵌套循环在另一个数组的每个元素上迭代一个数组的每个元素。如果我假设是正确的,您实际上应该使用一个来源,其中您在其中存储的信息之间存在关系。例如,您可以使用 CSV 文件。 根据您的示例,代码可能如下所示:

$CSV = @'
Name,Binary
'E:\1.exe', 'A1Testservice'
'E:\2.exe', 'A1Testservice'
'@ | ConvertFrom-Csv

foreach ($item in $CSV) {
    New-Service -Name $Item.Name -DisplayName $Item.Name -Description $Item.Name -BinaryPathName $Item.Binary -ErrorAction SilentlyContinue -StartupType Automatic 
    Start-Service $ser 
}