PowerShell を使用して AD ユーザー プロパティを .csv ファイルにエクスポートする方法は?

PowerShell を使用して AD ユーザー プロパティを .csv ファイルにエクスポートする方法は?

.csv特定の AD グループのメンバーであるAD ユーザー プロパティをファイルにエクスポートする際に問題が発生します。

これは私のコードです

$ExportPath= "C:\Users\group_list.csv"
$groupname = "group1"
$users = Get-ADGroupMember -Identity $groupname | ? {$_.objectclass -eq "user"}
foreach ($activeusers in $users) { Get-ADUser -Identity $activeusers | ? {$_.enabled -ne $true} | select Name, SamAccountName, UserPrincipalName, enabled, DistinguishedName | Format-Table} Export-Csv $ExportPath }

答え1

$Users必要なプロパティを選択するパイプラインに変数を指定して、それを.csvファイルにパイプラインするだけです。

$ExportPath = "C:\Users\group_list.csv"
$GroupName = "group1"
$Users = Get-ADGroupMember -Identity $GroupName | ? {$_.objectclass -eq "user"}

$Users | ? {$_.enabled -ne $true} | select Name, SamAccountName, UserPrincipalName, enabled, DistinguishedName | Export-Csv $ExportPath

答え2

投稿内容に構文上の問題があります

$ExportPath = 'C:\Users\group_list.csv'
$groupname  = 'group1'
$users = Get-ADGroupMember -Identity $groupname | 
         Where-Object {$_.objectclass -eq 'user'}

foreach ($activeusers in $users) 
{ 
    Get-ADUser -Identity $activeusers | 
    Where-Object {
    $_.enabled -ne $true} | 
    Select-Object Name, 
                  SamAccountName, 
                  UserPrincipalName, 
                  enabled, 
                  DistinguishedName | 
    Format-Table
} Export-Csv $ExportPath 

投稿したコードを簡単にリファクタリングします。

$ExportPath = 'C:\Users\group_list.csv'
$groupname  = 'group1'
$users = Get-ADGroupMember -Identity $groupname | 
         Where-Object {$_.objectclass -eq 'user'}

foreach ($activeuser -in $users) 
{ 
    Get-ADUser -Identity $activeuser | 
    Where-Object {
    $PSItem.enabled -ne $true} | 
    Select-Object Name, 
                  SamAccountName, 
                  UserPrincipalName, 
                  enabled, 
                  DistinguishedName | 
    Export-Csv $ExportPath  -NoTypeInformation -Append
} 

「Zoran Jankov」が提供したものはより直接的でコードが少ないですが、「-NoTypeInformation」を必ず追加してください。そうしないと、出力に不要な余分なテキストが含まれてしまいます。

ご参考までに...

MS が提供するツールを使用してベースライン コードを記述し、そのまま使用するか、必要に応じて調整します。

PowerShell スクリプトで使用されるエイリアスは使用しないでください。ただし、エイリアスの目的である対話型/使い捨てコードには適しています。開発作業でエイリアスを使用する場合は、リリースまたは共有する前に必ずすべて展開してください。理由は次のとおりです。

  1. このコードを VSCode で開くと、展開するまでエイリアスはエラーになります。
  2. これに対して PSScriptAnalyzer を実行すると、これもエラーとして呼び出されます。

PowerShell スクリプトでエイリアスを使用するためのベスト プラクティス

そもそもなぜエイリアスについて心配する必要があるのでしょうか?

エイリアスを使うことに一体何が重要なのでしょうか? エイリアスを使うとコードの入力が簡単になるのであれば、スクリプトでエイリアスを使うことに何の害があるのでしょうか? スクリプトに関しては、2 つのことが関係しています。1 つ目は、Windows PowerShell によって作成されたエイリアスであっても、エイリアスが存在することが保証されていないことです。

PSScriptAnalyzer を使用して PowerShell コードのベスト プラクティスを確認する

関連情報