我在名為“Exchange Mailboxes”的 csv 列中混合了這樣的資料(有些行是空的)。
Exchange Mailboxes
Include:[[email protected]]
Include:[[email protected]]
Include:[[email protected]]
我嘗試先檢查該行是否為空。如果它是空的,那么只需為這些行分配空字串。如果特定的 csv 行不為空,則使用 E??XOMailbox 獲取其名稱和 ID。
另一個詞是,我如何跳過空行?
我像這樣嘗試過,但由于某種原因它不起作用。
$importFile = Import-Csv -Path "C:\AuditLogSearch\Dis\Modified-Audit-Log-Records.csv"
foreach ($csvFile in $importFile){
if([string]::IsNullOrEmpty($csvFile.'Exchange Mailboxes')){
$userName = ""
$userId = ""
}else{
$exoMailbox = $csvFile.'Exchange Mailboxes'.Split([char[]]@('[', ']'))[1]
$exoUser = Get-EXOMailbox -Filter "PrimarySmtpAddress -eq '$exoMailbox'"
$userName = $exoUser.DisplayName
$userId = $exoUser.Identity
}
}
uj5u.com熱心網友回復:
如果要排除具有空Exchange Mailboxes列值的行:
$importFile =
Import-Csv "C:\AuditLogSearch\Dis\Modified-Audit-Log-Records.csv" |
Where-Object 'Exchange Mailboxes' -ne ''
如果您想排除所有列都為空的行(這也適用于您的(非典型)單列CSV):
$importFile =
Import-Csv "C:\AuditLogSearch\Dis\Modified-Audit-Log-Records.csv" |
Where-Object { -join $_.psobject.Properties.Value }
筆記:
Import-Csv將 CSV 檔案的行決議為[pscustomobject]實體,其屬性始終將 CSV 的列值反映為字串。$_.psobject.Properties.Value使用內在.psobject屬性反映物件的所有屬性,并.Properties.Value回傳所有屬性值。運算子的一元形式
-join直接連接所有 - 根據定義字串- 值并將結果作為單個字串回傳。因此,如果所有列值都為空,則結果為空字串(
'');否則,字串是非空的。
Where-Object,當給定一個腳本塊({ ... }) 時,隱式地將其輸出強制轉換為[bool]($true或$false);在 PowerShell 中,將任何非空字串轉換為[bool]yield$true,而空字串則轉換為$false.
將上述內容與僅從Exchange Mailboxes列值中提取電子郵件地址相結合:
$emailAddresses =
Import-Csv "C:\AuditLogSearch\Dis\Modified-Audit-Log-Records.csv" |
Where-Object { -join $_.psobject.Properties.Value } |
ForEach-Object { ($_.'Exchange Mailboxes' -split '[][]')[1] }
使用您的樣本輸入,輸出$emailAddresses然后產生:
[email protected]
[email protected]
[email protected]
適用于我認為您的原始代碼的意圖:
$customObjects =
Import-Csv "C:\AuditLogSearch\Dis\Modified-Audit-Log-Records.csv" |
Where-Object { -join $_.psobject.Properties.Value } |
ForEach-Object {
$exoMailbox = ($_.'Exchange Mailboxes' -split '[][]')[1]
$exoUser = Get-EXOMailbox -Filter "PrimarySmtpAddress -eq '$exoMailbox'"
# Construct and output a custom object with the properties of interest.
[pscustomobject] @{
UserName = $exoUser.DisplayName
UserId = $exoUser.Identity
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/490628.html
