Значения заголовков CSV равны нулю, несмотря на то, что данные находятся в заголовках файлов CSV - PullRequest
0 голосов
/ 05 июня 2018

Я работаю над сценарием, который собирается удалить всех отключенных пользователей из определенных 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 оба равны нулю.

Пожалуйста, дайте мне знать, что вы думаете

1 Ответ

0 голосов
/ 06 июня 2018

Когда вы используете 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 не имеет членов, к которым вы пытались получить доступ.

...