Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Powershell将字符串转换为带有标题的数组_Arrays_String_Powershell - Fatal编程技术网

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'