2017-12-13 5 views
1

두 줄의 PowerShell을 함께 연결하려고하지만 구문을 이해할 수 없습니다. 내가 필요로하는 것처럼 들리는 a post가 있지만 -LDAPFilter을 사용하지 않습니다. get-ADUser에서 LDAP 필터를 사용하여 Get-ADGroup으로 파이프 출력

, 나는

$now = ((Get-Date).AddDays(-100)).Date 
$users = Get-ADUser -Filter {whenCreated -ge $now} -Searchbase "OU=staff,OU=SMUC_Users,DC=stmarys,DC=ac,DC=ie" | 
     Where-Object { $_.Enabled -eq 'True' } 

사용 지난 100 일 만든 AD 사용자의 목록을 생성하고 "How to get ALL AD user groups (recursively) with Powershell or other tools?"에서이 코드는 사용자가 구성원 인 모든 그룹을 찾을 수 있습니다 다음 단계, 수행 중 :

$username = 'd.trump' 
$dn = (Get-ADUser $username).DistinguishedName 
Get-ADGroup -LDAPFilter ("(member:1.2.840.113556.1.4.1941:={0})" -f $dn) | 
    select -Expand Name 

하지만 I 파이프 번째로 첫 번째의 출력은 전체리스트를 얻을 수 없다.

Get-ADUser -Filter {whenCreated -ge $now} -Searchbase "OU=staff,OU=SMUC_Users,DC=stmarys,DC=ac,DC=ie" | 
    Where-Object { $_.Enabled -eq 'True' } | 
    Select-Object DistinguishedName | 
    Get-ADGroup -LDAPFilter ("(member:1.2.840.113556.1.4.1941:={0})" -f $_) | 
    select -expand Name 

오류 메시지는 다음과 같습니다

은 Get-광고 그룹 : 검색 필터가 나는 두 번째 코드가 distingushed 이름을 추출 생각하고 필터에 공급

을 인식 할 수 , 그리고 그것은 내가 파이프 라인에서하려고했던 것이다.

+3

을'은 Get-광고 그룹 -LDAPFilter ("..."-f $ _)'->'Get-ADGroup -LDAPFilter { "..."-f $ _}'. 그렇지 않으면 : Get-ADGroup -LDAPFilter ("..."-f $ _)'->'% {Get-ADGroup -LDAPFilter ("..."-f $ _)}' –

+1

부록 : Select-Object DistinguishedName' ->'Select-Object -Expand DistinguishedName'을 사용하십시오. 그렇지 않으면 나중에 '$ _. DistinguishedName'을 사용해야합니다. –

답변

1

ForEach-Object (별칭 %)가 누락되었습니다.

다음 코드는 작동합니다 :

Get-ADUser -Filter {whenCreated -ge $now} -SearchBase "OU=staff,OU=SMUC_Users,DC=stmarys,DC=ac,DC=ie" ` 
| Where-Object { $_.Enabled -eq 'True' } ` 
| %{Get-ADGroup -LDAPFilter ("(member:1.2.840.113556.1.4.1941:={0})" -f $_.DistinguishedName)} ` 
| Select-Object -ExpandProperty Name 

당신이이 같은 코드를 확장 할 수 있습니다 출력 사용자 모두와 그룹 정보를 원하는 경우 : 테스트되지 않은

Get-ADUser -Filter {whenCreated -ge $now} -SearchBase "OU=staff,OU=SMUC_Users,DC=stmarys,DC=ac,DC=ie" ` 
| Where-Object { $_.Enabled -eq 'True' } ` 
| %{$group = Get-ADGroup -LDAPFilter ("(member:1.2.840.113556.1.4.1941:={0})" -f $_.DistinguishedName);Write-Output $_.UserPrincipalName $group.Name} 
+0

출력에서 ​​그룹 이름 옆에있는 사용자 이름을 어떻게 얻을 수 있습니까?! 나는 단지 루프를 사용하는 것이 그룹과 관련된 사용자 이름이 아니라면 많이 사용하지 않는다는 것을 깨달았습니다. – DJDave

+1

제 편집을 참조하십시오. 물론 출력 형식을 다르게 지정할 수도 있습니다. – Christophe

관련 문제