
.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 が提供するツールを使用してベースライン コードを記述し、そのまま使用するか、必要に応じて調整します。
- Active Directory 管理センター: はじめに
- Active Directory 管理センター
- Windows の「Active Directory 管理センター」
- Windows「Active Directory 管理センター」「PowerShell 履歴ビューアー」
- Active Directory 管理センターの概要
- AD 管理センターを使用して PowerShell コマンドを作成する
- ステップバイステップ: Windows Server 2012 R2 で PowerShell 履歴ビューアーを活用する
- Active Directory 管理センターを使用した PowerShell の学習 (PowerShell 履歴ビューアー)
PowerShell スクリプトで使用されるエイリアスは使用しないでください。ただし、エイリアスの目的である対話型/使い捨てコードには適しています。開発作業でエイリアスを使用する場合は、リリースまたは共有する前に必ずすべて展開してください。理由は次のとおりです。
- このコードを VSCode で開くと、展開するまでエイリアスはエラーになります。
- これに対して PSScriptAnalyzer を実行すると、これもエラーとして呼び出されます。
PowerShell スクリプトでエイリアスを使用するためのベスト プラクティス
- https://devblogs.microsoft.com/scripting/best-practice-for-using-aliases-in-powershell-scripts
- https://devblogs.microsoft.com/scripting/using-powershell-aliases-best-practices
そもそもなぜエイリアスについて心配する必要があるのでしょうか?
エイリアスを使うことに一体何が重要なのでしょうか? エイリアスを使うとコードの入力が簡単になるのであれば、スクリプトでエイリアスを使うことに何の害があるのでしょうか? スクリプトに関しては、2 つのことが関係しています。1 つ目は、Windows PowerShell によって作成されたエイリアスであっても、エイリアスが存在することが保証されていないことです。