今天是星期五,我的大腦無法正常作業!我有一個 Powershell 物件,它是我想用作 Power BI 資料集的 DSInternals Test-PasswordQuality cmdlet 的結果;它是一組用戶帳戶,例如。
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 BI 資料集?
謝謝你們一百萬!
uj5u.com熱心網友回復:
此答案中的物件是您的最小表示,旨在演示您可以使用的方法。
首先,您需要計算所有屬性的元素的最大計數,為此,我們可以訪問每個值PSObject.Properties的and ,得到它的計數。然后,我們可以使用回圈來重建它。for
$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
5
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/434571.html
