Arrays Powershell将字符串转换为带有标题的数组
我想用从输出中提取的一系列字符串的标题创建一个表。我已经用过这个了Arrays Powershell将字符串转换为带有标题的数组,arrays,string,powershell,Arrays,String,Powershell,我想用从输出中提取的一系列字符串的标题创建一个表。我已经用过这个了 $Scopearray = @("$server","$ip","$ScopeName","$Comment") 要扭转这个局面 $ip = $Trimmed[0] $server = $Trimmed[1] $ScopeName = $Trimmed[2] $Comment = $Trimmed[3] 为此: 但我需要把它变成一张桌子,像这样: 我试过下面的例子,还有其他多维例子,但我显然遗漏了一些基本的东西 $table
$Scopearray = @("$server","$ip","$ScopeName","$Comment")
要扭转这个局面
$ip = $Trimmed[0]
$server = $Trimmed[1]
$ScopeName = $Trimmed[2]
$Comment = $Trimmed[3]
为此:
但我需要把它变成一张桌子,像这样:
我试过下面的例子,还有其他多维例子,但我显然遗漏了一些基本的东西
$table = @()
foreach ($instance in $Scopearray) {
$row = "" | Select ServerName,IP,ScopeName,Comment
$row.Heading1 = "Server Name"
$row.Heading2 = "IP Address"
$row.Heading3 = "Scope Name"
$row.Heading4 = "Comment"
$table += $row
}
从输入数据创建对象:
... | ForEach-Object {
New-Object -Type PSObject -Property @{
'Server Name' = $Trimmed[1]
'IP Address' = $Trimmed[0]
'Scope Name' = $Trimmed[2]
'Comment' = $Trimmed[3]
}
}
在PowerShell v3及更新版本中,您可以通过使用[PSCustomObject]类型的加速器来简化这一过程:
... | ForEach-Object {
[PSCustomObject]@{
'Server Name' = $Trimmed[1]
'IP Address' = $Trimmed[0]
'Scope Name' = $Trimmed[2]
'Comment' = $Trimmed[3]
}
}
PowerShell默认情况下以表格形式显示最多具有4个属性的对象,除非这些对象具有特定的格式说明,但如果需要,您可以通过Format Table cmdlet强制表格输出:
... | Format-Table
请注意,若要将表格表示形式写入文件,则除格式化表格外,还需要输出字符串:
... | Format-Table | Out-String | Set-Content 'C:\output.txt'
为什么不在foreach循环中创建一个对象,并将该对象添加到arraylist中呢。在循环外部声明arraylist。在循环内部,您仍然可以执行修剪操作,并将该值指定给该对象。有意义吗?为了完整性,这会输出四个相同的值,因此在末尾添加“select-First 1”可以提供准确的答案,但在其他方面是一个很好的解决方案。
... | Format-Table | Out-String | Set-Content 'C:\output.txt'