gpt4 book ai didi

arrays - PowerShell-使用不同的键创建哈希表数组

转载 作者:行者123 更新时间:2023-12-02 23:54:18 25 4
gpt4 key购买 nike

是否可以输出具有不同键的哈希表数组?

我的实验代码如下:

$object1 = New-Object psobject -Property @{key1 = "Yep";
key3 = "Sure!"}

$object2 = New-Object psobject -Property @{key2 = "Yep";
key3 = "Sure!"}

$object3 = New-Object psobject -Property @{key1 = "Yep";
key2 = "Yep";
key3 = "Yep"}

Write-Host "Object 1 First"
$OutArray = @()
$OutArray += $object1
$OutArray += $object2

$OutArray

Write-Host "Object 2 First"
$OutArray = @()
$OutArray += $object2
$OutArray += $object1

$OutArray

Write-Host "Object 3 First"
$OutArray = @()
$OutArray += $object3
$OutArray += $object2
$OutArray += $object1

$OutArray

似乎它们存储在内存中,因为当您首先在对象1或2上“写入主机$ OutArray”时,您可以看到键和值。

最终,我尝试将ADUser帐户列表导出到CSV,但是有问题的ADUser对象并不总是具有所有属性。似乎数组的第一个元素将设置“标题”是什么,然后排除其他键的显示,第一个元素可能没有。

有任何想法吗?

最佳答案

您可以做的是将所有缺少的属性添加到第一项。首先,我们获得所有潜在的属性:

$AllProps = $OutArray |%{$_.PSObject.Properties.Name} |Select -Unique

然后我们将丢失的添加到数组的第一项。
$AllProps |?{$_ -notin $OutArray[0].PSObject.Properties.Name} |%{Add-Member -InputObject $OutArray[0] -NotepropertyName $_ -NotePropertyValue ''}

然后,我们可以显示数组,将其通过管道传输到CSV或任何我们想要的东西,它将表现良好。

编辑:正如Frode F.指出的那样,我们不必将属性添加到第一个对象即可使PowerShell为所有对象输出这些属性。我们可以简单地使用 Select-Object并告诉它要显示的属性,这将解决问题。
$AllProps = $OutArray |%{$_.PSObject.Properties.Name} |Select -Unique
$OutArray | Select $AllProps

您必须明确一点,因为使用 Select *的行为与上述行为不同。

关于arrays - PowerShell-使用不同的键创建哈希表数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49204095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com