В вашем примере вы не отправляете данные или объекты в вашу команду 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