如何在此脚本的每行结果左侧添加服务器名称?谢谢!
$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
答案 0 :(得分: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
,它是运行它的服务器的名称。您可能希望在输出时通过选择来管理您想要的订单。
$SubResult | Select Server, Status, Name, DisplayName | Export-CSV 'local_group_members.csv' -NoType
答案 1 :(得分:1)
您可以使用Select-Object随意重新排序或添加到您的输出中。您可以使用hash tables来包含计算的属性,例如您所需的ServerName。
因此,对于每个服务器,您可以设置服务并使用该服务器名称标记输出:
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
允许我们按值管道对象。