帮我解决一些问题。我是PS新手, 我需要输出数据到表视图。 看起来像这样。
name1 name2
----- -----
value1 value2
但是我有:
$a=(get-service).name
$b=(get-service).Status
foreach ($name in $a)
{
$data = [pscustomobject]@{name1 = $name}
}
$data
结果
name1
-----
XboxNetApiSvc
毫无预感
$a=(get-service).name
$b=(get-service).Status
$data = [pscustomobject]@{name1 = $a ; name2 = $b }
$data
结果
name1 name2
----- -----
{2GISUpdateService, AcronisActiveProtectionService, AcrSch2Svc, AdobeARMservice...} {Stopped, Running, Running, Running...}
此脚本所需的全部
$list = ((Get-ADComputer -SearchBase "OU=PC,DC=cbu,DC=lan" -Filter {Enabled -eq "True" } -Properties DNSHostName).DNSHostName)
$encoding = [System.Text.Encoding]::UTF8
$up = @()
$down = @()
$table= @()
foreach ($pc in $list)
{
if ((Test-Connection -Count 1 -computer $pc -quiet) -eq $True)
{
$up += $pc
#write-host $pc "is up"
}
else
{
$down += $pc
#Write-Host $pc "down"
}
}
毕竟我需要2列的$ up和$ down输出值
答案 0 :(得分:0)
如果仅以Get-Service
为例,则可以使用Select
:
Get-Service | Select Name, Status
其他
$MyList | Select Name1, Name2
此外,如果您有复杂的命令,并且想要提取PSObject
的表:
Get-Process | Select-Object -Property ProcessName, Id, WS
详细了解Select-Object
:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-object?view=powershell-4.0
答案 1 :(得分:0)
您可能有一个自定义的Commandlet,但您可以运行类似于以下内容的
:(Get-Service) | select Name,Status | Format-Table
更新
阅读更新后。在脚本的最后,您有两个数组$up
和$down
。我将以静态方式声明它以简化示例
$up = @('pc1', 'pc2')
$down = @('pc3','pc4', 'pc5')
由于数组可以是不同的长度,因此您需要使用以下方法计算最大长度:
$max = ($up, $down | Measure-Object -Maximum -Property Count).Maximum
然后创建一个对象,该对象与以下数组“合并”:
0..$max | Select-Object @{n="Up";e={$up[$_]}}, @{n="Down";e={$down[$_]}}
输出为:
Up Down
-- ----
pc1 pc3
pc2 pc4
pc5
答案 2 :(得分:0)
是的,Piotr Stapp是权利。您可以使用格式表
示例1:
获取过程|排序对象开始时间|格式表-查看开始时间
示例2:
(获取服务)|选择名称,状态|格式表
示例3:
获取过程| FT