Как я могу добавить имя сервера слева от результата каждой строки в этом скрипте? Спасибо!
$servers = Get-Content -path .\Machines.txt
[pscustomobject]$result = @()
$subresult =
ForEach ($server in $servers)
{
Set-Service -computername $servers -Name sacsvr -StartupType Disabled -PassThru
}
$result = $subresult
$result | Out-File local_group_members.csv
Это пример результата:
Status Name DisplayName
------ ---- -----------
Stopped sacsvr Special Administration Console Helper
Stopped sacsvr Special Administration Console Helper
Stopped sacsvr Special Administration Console Helper
2 ответа
В качестве альтернативы вы можете просто добавить свойство к объектам, которые вы выводите прямо сейчас. Передайте свой Set-Service в Add-Member следующим образом:
Set-Service -computername $servers -Name sacsvr -StartupType Disabled -PassThru | Add-Member -MemberType NoteProperty -Name 'Server' -Value $Server -PassThru
Теперь каждый объект, который вы передаете $subresult
, имеет новое свойство Server
, которое является именем сервера, на котором он был запущен. Вы, вероятно, захотите использовать Select при выводе, чтобы иметь желаемый порядок.
$SubResult | Select Server, Status, Name, DisplayName | Export-CSV 'local_group_members.csv' -NoType
Вы можете произвольно изменить порядок или добавить что-либо в вывод с помощью Select-Object. . Вы можете использовать хэш-таблицы, чтобы включить вычисляемые свойства, такие как желаемое имя сервера.
Таким образом, для каждого сервера вы можете установить службы и пометить выходные данные этим именем сервера:
ForEach ($server in $servers)
{
Set-Service -computername $server -Name sacsvr -StartupType Disabled -PassThru |
Select @{Name = 'ServerName'; Expression = {$server}}, Name, DisplayName, Status
}
Вышесказанное является сокращением для:
Select-Object -Property (properties)
Параметр -Property
позволяет выбрать любую произвольную группу свойств по типу передаваемого объекта. Другой параметр -InputObject
позволяет нам передавать объекты по значению.
Похожие вопросы
Новые вопросы
powershell
PowerShell - это кроссплатформенная утилита командной строки и сценариев от Microsoft. Используйте этот тег только для вопросов о написании и выполнении сценариев PowerShell. Вопросы программирования, относящиеся к кроссплатформенной версии PowerShell Core (Windows, macOS и Linux), должны быть помечены [powershell-core]. Вопросы о системном администрировании следует задавать в случае сбоя суперпользователя или сервера.