Сценарий Powershell AD не может быть экспортирован в CSV - PullRequest
0 голосов
/ 16 января 2020

Я написал код, и возникла проблема с его экспортом в CSV. Таким образом, код сравнивает список пользователей AD с группами рассылки или количеством групп рассылки и работает отлично. Я только не могу экспортировать его в .csv.

Get-ADUser -filter {Enabled -eq $true} -SearchBase "OU=Location" |% { $_.samAccountName } | out-file "C:\users.txt"
Get-ADGroupMember -Identity "Company" |% { $_.samAccountName } | out-file "C:\Members.txt"

$List = Get-Content ("C:\Members.txt")
$ListOfUsers = Get-Content ("C:\users.txt")

$compare = Compare-Object -ReferenceObject $ListOfUsers -DifferenceObject $List -IncludeEqual 
foreach($Inp in $compare)
{
$notice = $Inp.InputObject 
    If ($Inp.SideIndicator -eq "==")
    {

        "$notice User is avaiable in Distribution List"
    }
    elseIf ($Inp.SideIndicator -eq "<=")  
    {
        "$notice User is not available in Distribution List "
    } 
} 

Если я добавлю в конце строки export-csv, это даст мне что-то вроде этого:

image

My вопрос в том, как правильно его экспортировать, чтобы получить InputObject в качестве имени, SideIndicator в качестве операторов уведомления и сравнения в качестве информации, если пользователь находится в группе рассылки или нет?

1 Ответ

2 голосов
/ 16 января 2020

Если мы сохраним ваш текущий лог c, вы можете достичь желаемых результатов с вычисленными свойствами в Select-Object .

$compare = Compare-Object -ReferenceObject $ListOfUsers -DifferenceObject $List -IncludeEqual
$hash = @{'==' = "{0} User is available in distribution list" -f $compare.inputobject
          '<=' = "{0} User is not available in distribution list" -f $compare.inputobject
}
$compare | Select-Object @{n='User';e={$_.InputObject}},@{n='Notice';e={$hash.($_.SideIndicator)}} |
    Export-Csv output.csv -NoType

Объяснение:

Рассчитанное свойство, представляющее собой таблицу ha sh с заданными парами ключ-значение c, позволяет вывести имя пользовательского свойства вместе с соответствующим пользовательским значением. Это требует наличия ключа, который представляет имя свойства и ключ, который является выражением для вашего значения. Имя может быть представлено как l, n, name или label. Выражение значения может быть e или expression.

Создание таблицы $hash ha sh просто для того, чтобы сделать вычисляемое свойство более читабельным. У него просто есть ключ, который соответствует вашим желаемым SideIndicator значениям, чтобы мы могли динамически возвращать нужное вам сообщение.

Вы можете изменить имена свойств User и Notice на любые, какие вы будете sh .

...