尽管数据位于CSV文件标题

时间:2018-06-05 20:41:01

标签: powershell ms-office

我正在开发一个脚本,该脚本将删除公司中某些Dls的所有已禁用用户以及可能附加到用户帐户的许可证。

到目前为止,当我运行它时,它给出了一个错误,指出脚本中的参数为空,但导出的CSV文件中有明确的标题。该脚本是:

Get-MsolUser -EnabledFilter DisabledOnly| select UserPrincipalName, isLicensed |Export-Csv -path "file\path\test" 

$Remove = Import-Csv "file\path\test"| Out-String 

Foreach($users in $Remove) {

    Remove-DistributionGroupMember -Identity CC@company.com -Member $users.UserPrincipalName -Confirm:$false

    Remove-MailboxPermission -Identity Sales -User $users.UserPrincipalName -AccessRights FullAcces -InheritanceType All -Confirm:$false

    Remove-DistributionGroupMember -Identity Everyone -Member $users.UserPrincipalName -Confirm:$false

        if($user.isLicensed -eq "true") {
        Set-MsolUserLicense -UserPrincipalName $users.UserPrincipalName -RemoveLicenses "reseller-account:DESKLESSPACK"

        Set-MsolUserLicense -UserPrincipalName $users.UserPrincipalName -RemoveLicenses "reseller-account:O365_BUSINESS_PREMIUM"

        Set-MsolUserLicense -UserPrincipalName $users.UserPrincipalName -RemoveLicenses "reseller-account:EXCHANGEDESKLESS"

        Set-MsolUserLicense -UserPrincipalName $users.UserPrincipalName -RemoveLicenses "reseller-account:O365_BUSINESS_ESSENTIALS"
        }
}

Remove-Item –path "file\path\test" –recurse

他们有两个标题UserPrincipalNameisLicensed,但我得到的错误是memberuser都是空的。

请让我知道您的想法

1 个答案:

答案 0 :(得分:4)

当您使用Import-Csv时,它会将该信息转换为pscustomobject,并将标题作为访问您信息的密钥。当您使用| Out-String时,它会将该对象转换为string,其格式基于ps1xml文件中有关pscustomobject类型的内容。

CSV:

"a","b","c"
"1","2","3"

代码:

(Import-Csv -Path .\example.csv).GetType().FullName
# => System.Management.Automation.PSCustomObject

(Import-Csv -Path .\example.csv | Out-String).GetType().FullName
# => System.String

您遇到的错误是string类型没有您尝试访问的成员。