Get-ADGroupMember и extensionAttribute5 членов - PullRequest
1 голос
/ 28 марта 2020

Я написал какой-то скрипт, и он работает до того момента, пока я не попытаюсь сделать экспорт в файл. после этого у меня появляется ошибка - «командлет Export-Csv в позиции конвейера команд 1» Я что-то не так делаю? Я новичок в PowerShell и сценариях в целом. Заранее спасибо.

 Get-ADGroupMember -Recursive ‘MFA - Users’ | ForEach {Get-ADUser -filter {SamAccountName -eq $_.SamAccountName} -Properties extensionAttribute5 ,employeeid} | Format-Table -Property  name ,extensionAttribute5 ,SamAccountName ,employeeid



Export-CSV -path "$home\desktop\out-ADGroupMember.csv"

1 Ответ

0 голосов
/ 28 марта 2020

В вашем примере вы не отправляете данные или объекты в вашу команду Export-Csv. Вам нужно будет сделать что-то вроде следующего:

Get-ADGroupMember -Recursive 'MFA - Users' | ForEach {
    Get-ADUser -filter "SamAccountName -eq '$_.SamAccountName'" -Properties extensionAttribute5 ,employeeid
} | Export-Csv -Path "$home\desktop\out-ADGroupMember.csv" -NoType

Если вы посмотрите на информацию о команде для Export-Csv, вы заметите, что -InputObject требуется, потому что это параметр, который не содержится с набором []. Документация для Export-Csv показывает, что параметр InputObject может принимать значение конвейера. Это означает, что вы можете либо передать объект в команду, либо передать его непосредственно параметру.

# Show command info
Get-Command Export-Csv -Syntax
Export-Csv [[-Path] <string>] [[-Delimiter] <char>] -InputObject <psobject> [-LiteralPath <string>] [-Force] [-NoClobber
] [-Encoding <string>] [-Append] [-NoTypeInformation] [-WhatIf] [-Confirm] [<CommonParameters>]

Export-Csv [[-Path] <string>] -InputObject <psobject> [-LiteralPath <string>] [-Force] [-NoClobber] [-Encoding <string>]
 [-Append] [-UseCulture] [-NoTypeInformation] [-WhatIf] [-Confirm] [<CommonParameters>]

# Using pipeline
$data | Export-Csv -Path file.csv -NoType

# Using named parameter
$data | foreach { Export-Csv -InputObject $_ -Path file.csv -Append -NoType}

Кроме того, команды Format-* следует использовать только для целей отображения. Если вы планируете обрабатывать вывод, выходящий за пределы простого просмотра его в консоли, вам не следует в этот момент передавать Format-*.

# Good practice
Get-ADGroupMember 'MFA - Users' | Format-Table
$users = Get-ADGroupMember 'MFA - Users'
$users | Export-Csv file.csv -NoType
$users | Format-Table

# Bad practice
Get-ADGroupMember 'MFA - Users' | Format-Table | Select SamAccountName
$users = Get-ADGroupMember 'MFA - Users' | Format-Table
$users | Export-Csv file.csv -NoType
...