我正在开发一个脚本,该脚本将删除公司中某些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
他们有两个标题UserPrincipalName
和isLicensed
,但我得到的错误是member
和user
都是空的。
请让我知道您的想法
答案 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
类型没有您尝试访问的成员。