【问题标题】:Powershell How to get only unique result instead of allPowershell如何只获得唯一的结果而不是全部
【发布时间】:2021-07-01 02:03:11
【问题描述】:

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

$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

【问题讨论】:

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


    【解决方案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 
    }
    

    【讨论】:

    • 感谢奥拉夫,它成功了。我感谢你的帮助。一些小的更正: E:\1.exe, A1Testservice E:\2.exe, A2Testservice 这个值不应该用反逗号('')。
    猜你喜欢
    • 2018-07-17
    • 2020-01-07
    • 2014-06-03
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多