将哈希表从键导出到 csv

Dav*_*vid 4 powershell powershell-5.0

好吧,我正在为这个问题苦苦挣扎。我需要将此哈希表导出到 csv。

$Sku = @{
        "AAD_BASIC"                              = "Azure Active Directory Basic"
        "RMS_S_ENTERPRISE"                       = "Azure Active Directory Rights Management"
        "AAD_PREMIUM"                            = "Azure Active Directory Premium P1"
        "AAD_PREMIUM_P2"                         = "Azure Active Directory Premium P2"
        "MFA_PREMIUM"                            = "Azure Multi-Factor Authentication"
        "RIGHTSMANAGEMENT"                       = "Azure Information Protcetion Plan 1"
        "O365_BUSINESS_ESSENTIALS"               = "Office 365 Business Essentials"
        "O365_BUSINESS_PREMIUM"                  = "Office 365 Business Premium"
        "ADALLOM_O365"                           = "Office 365 Cloud App Security"
        "ADALLOM_S_DISCOVERY"                    = "Unknown"
Run Code Online (Sandbox Code Playgroud)

上面是哈希表的示例您可以在这里找到该站点: https: //github.com/directorcia/Office365/blob/master/o365-skus.ps1

当我导出时,它变得一团糟。我尝试将其转换为 pscustom 对象。由于表的设置方式,我必须调用基本的 . 物品。有没有办法引用 .item 而不是调用每个项目。我尝试过 .name 和 .value,但都不起作用。

Dou*_*rer 8

哈希表可以轻松地直接转换为 PSCustomObject。PSCustomObject 可以直接导出/转换为 CSV。

$Sku = @{
        "AAD_BASIC"                              = "Azure Active Directory Basic"
        "RMS_S_ENTERPRISE"                       = "Azure Active Directory Rights Management"
        "AAD_PREMIUM"                            = "Azure Active Directory Premium P1"
        "AAD_PREMIUM_P2"                         = "Azure Active Directory Premium P2"
        "MFA_PREMIUM"                            = "Azure Multi-Factor Authentication"
        "RIGHTSMANAGEMENT"                       = "Azure Information Protcetion Plan 1"
        "O365_BUSINESS_ESSENTIALS"               = "Office 365 Business Essentials"
        "O365_BUSINESS_PREMIUM"                  = "Office 365 Business Premium"
        "ADALLOM_O365"                           = "Office 365 Cloud App Security"
        "ADALLOM_S_DISCOVERY"                    = "Unknown"
}

[PSCustomObject]$sku | ConvertTo-Csv -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)

编辑

从 powershell v7.2.0-preview.9开始,您可以将哈希表直接传递给 CSV cmdlet

$Sku = @{
        "AAD_BASIC"                              = "Azure Active Directory Basic"
        "RMS_S_ENTERPRISE"                       = "Azure Active Directory Rights Management"
        "AAD_PREMIUM"                            = "Azure Active Directory Premium P1"
        "AAD_PREMIUM_P2"                         = "Azure Active Directory Premium P2"
        "MFA_PREMIUM"                            = "Azure Multi-Factor Authentication"
        "RIGHTSMANAGEMENT"                       = "Azure Information Protcetion Plan 1"
        "O365_BUSINESS_ESSENTIALS"               = "Office 365 Business Essentials"
        "O365_BUSINESS_PREMIUM"                  = "Office 365 Business Premium"
        "ADALLOM_O365"                           = "Office 365 Cloud App Security"
        "ADALLOM_S_DISCOVERY"                    = "Unknown"
}

$sku | ConvertTo-Csv
Run Code Online (Sandbox Code Playgroud)

另请注意,-NoTypeInformation 现在是默认值,仅在 Windows Powershell 中需要它。