PowerShell을 사용하여 AD 사용자 속성을 .csv 파일로 내보내는 방법은 무엇입니까?

PowerShell을 사용하여 AD 사용자 속성을 .csv 파일로 내보내는 방법은 무엇입니까?

.csvAD 사용자 속성을 특정 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 스크립트에서 별칭을 사용하는 모범 사례

애초에 별칭에 대해 걱정하는 이유는 무엇입니까?

어쨌든 별칭을 사용하면 무엇이 중요합니까? 코드를 입력하기 쉽게 만든다면 스크립트에서 이를 사용하면 어떤 해가 됩니까? 스크립트와 관련하여 작업에는 두 가지가 있습니다.첫 번째는 별칭이 존재한다고 보장할 수 없다는 점입니다. Windows PowerShell에서 생성된 별칭이라도 마찬가지입니다.

PSScriptAnalyzer를 사용하여 PowerShell 코드의 모범 사례 확인

관련 정보