今天是星期五,我的大脑不工作了!我有一个Powershell对象,它是我想要用作Power数据集的DSInternals的结果;它是一组用户帐户数组,例如。
ClearTextPassword : {}
LMHash : {someuser, another user...}
EmptyPassword : {someuser, another user}
WeakPassword : {someuser, another user...}
DefaultComputerPassword : {etc...}
PasswordNotRequired : {etc...}
PasswordNeverExpires : {etc...}
AESKeysMissing : {etc...}
PreAuthNotRequired : {}
DESEncryptionOnly : {}
Kerberoastable : {}
DelegatableAdmins : {}
SmartCardUsersWithPassword : {}
DuplicatePasswordGroups : {}我想将它导出到一个csv,其中每个数组都是它自己的列。如果我就这么做
$result | export-csv .\result.csv -NoTypeInformation我确实为每个数组获得了一个列,但是每个列中的用户都被组合成一个单元格。
我怎么能得到相同的,但在每个用户在它自己的细胞?
或者,如何使用MicrosoftPowerBIMgmt模块将这个PS对象直接放入Power数据集?
谢谢你们百万!
发布于 2022-02-25 20:52:05
这个答案中的对象是您的最小表示,是为了演示您可以使用的方法。
首先,您需要计算所有属性的元素的最大计数,为此,我们可以访问PSObject.Properties,并对每个值获取它的计数。然后,我们可以使用一个循环播放来重建它。
$object = [pscustomobject]@{
ClearTextPassword = @()
EmptyPassword = @('someuser', 'another user', 'yet another')
WeakPassword = @('someuser', 'another user')
DefaultComputerPassword = @('etc')
PasswordNotRequired = @(1,2,3,4,5)
}
$max = [System.Linq.Enumerable]::Max($object.PSObject.Properties.ForEach({ $_.Value.Count }))
$result = for($i = 0; $i -lt $max; $i++) {
$outObject = [ordered]@{}
foreach($prop in $object.PSObject.Properties) {
$outObject[$prop.Name] = $prop.Value[$i]
}
[pscustomobject]$outObject
}
$result | Format-Table上面的示例将导致下面的object[],对于导出到CSV应该是非常好的。
ClearTextPassword EmptyPassword WeakPassword DefaultComputerPassword PasswordNotRequired
----------------- ------------- ------------ ----------------------- -------------------
someuser someuser etc 1
another user another user 2
yet another 3
4
5https://stackoverflow.com/questions/71271320
复制相似问题