Powershell Как получить только уникальный результат вместо всех
Это мой 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 ответ
Решение
У вас есть два совершенно не связанных массива, и вы используете вложенный цикл для перебора каждого элемента одного массива по каждому элементу другого массива. Если я правильно понимаю, вам действительно следует использовать источник, в котором у вас есть связь между информацией, хранящейся в нем. Например, вы можете использовать файл 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
}