2016-01-26 7 views
5

मैं समूह नाम, नाम से प्रबंधित और ईमेल द्वारा प्रबंधित पावरशेल क्वेरी में प्रबंधित करने के लिए देख रहा हूं।गेट-एडी ग्रुप - समूह का नाम, प्रबंधित नाम और ईमेल

Group Name | Managed By Name | Managed By Email 

मुद्दा मैं आ रही Get-ADGroup और Get-ADUser में शामिल होने के साथ है:

Get-ADGroup -filter {Name -like "*Admins" } 

उत्पादन के लिए इसी तरह कुछ ऐसा दिखाई देगा। एसक्यूएल में यह "शामिल" get-adgroup.managedby = get-aduser.distinguishedname पर होगा। मुझे पता है कि यह पावरहेल में कैसे काम करता है, सिर्फ सोचा कि मैं जो कुछ करने की कोशिश कर रहा हूं उसका एक उदाहरण फेंक दूंगा।

किसी भी मदद का स्वागत और सराहना की जाएगी।

उत्तर

4

मैं @Mathias आर Jessen मुझे यह करने के लिए हरा देखते हैं, लेकिन यहाँ मैं क्या था है:

Get-ADGroup -filter {Name -like "*IT*" } -Properties managedBy | 
ForEach-Object { ` 
$managedBy = $_.managedBy; 

if ($managedBy -ne $null) 
{ 
$manager = (get-aduser -Identity $managedBy -Properties emailAddress); 
$managerName = $manager.Name; 
$managerEmail = $manager.emailAddress; 
} 
else 
{ 
$managerName = 'N/A'; 
$managerEmail = 'N/A'; 
} 

Write-Output $_; } | 
Select-Object @{n='Group Name';e={$_.Name}}, @{n='Managed By Name';e={$managerName}}, @{n='Managed By Email';e={$managerEmail}} 
+0

आपके उत्तर @dugas के लिए धन्यवाद, ऐसा लगता है कि परिणाम के माध्यम से पहला ईमेल पता प्रचारित होता है। – Rob

+0

@Rob - एक टाइपो था। मैंने द्वारा प्रबंधित नल की जांच के लिए भी अद्यतन किया। – dugas

+0

मैं अपनी जरूरतों को पूरा करने के लिए क्वेरी को ट्विक करने में सक्षम था। सहायता के लिए आपका धन्यवाद! – Rob

2

आप इस तरह यह कर सकते हैं:

$Groups = Get-ADGroup -Filter { Name -like "*Admins" } -Properties managedBy,mail 
$Groups |Select-Object Name,@{Name='ManagedBy';Expression={(Get-ADUser $_.managedBy).Name}},Mail 

@{} वाक्य रचना के बाद Select-Object एक calculated property के रूप में जाना जाता है।


आप कर सकते थे भी पाइप ForEach-Object को समूहों और Get-ADUser प्रक्रिया scriptblock अंदर फोन:

Get-ADGroup -Filter {Name -like "*Admins"} -Properties managedBy,mail |ForEach-Object { 
    # Find the managedBy user 
    $GroupManager = Get-ADUser -Identity $_.managedBy 

    # Create a new custom object based on the group properties + managedby user 
    New-Object psobject -Property @{ 
     Name  = $_.Name 
     ManagedBy = $GroupManager.Name 
     Email  = $_.mail 
    } 
} 
+0

ध्यान दें कि यह समूह का मेल पता प्राप्त करेगा, जबकि मैंने सोचा था कि ओपी समूह प्रबंधक का मेल पता चाहता था। – dugas

+0

@ माथीस आर जेसन - ईमेल पता खींचा जा रहा है, समूह के लिए ईमेल है, न कि उपयोगकर्ता द्वारा प्रबंधित के लिए। – Rob

+0

मुझे यकीन है कि मैंने इसके लिए अच्छी डुप्ली देखी है। – Matt

0

मैं कुछ होगा इस तरह कार्य करें:

# Get all groups into a variable 
$Group = Get-ADGroup -Filter {Name -like "*Admin*"} | Select-Object -expandProperty Name 
    foreach ($Groups in $Group){ 
    # Get ManagedBy name for each group (If ManagedBy is empty group wil not be listed) 
    $User = Get-ADGroup $Groups -Properties * | Select-Object -ExpandProperty ManagedBy 
    foreach ($Users in $User){ 
     # Get Name and EmailAddress for each User 
     $Name = Get-ADUser $Users | Select-Object -ExpandProperty Name 
     $Email = Get-ADUser $Users -Properties * | Select-Object -ExpandProperty EmailAddress 
    # Write output 
    Write-Host $Groups "," $Name "," $Email 
    } 
} 

उम्मीद है कि यह मदद करता है।

+0

'-प्रॉपर्टीज *' न करें, यह ऑब्जेक्ट के सभी गुण खींचता है। यह बहुत बेकार डेटा है। बस जो चाहते हैं उसे खींचें और '*' का उपयोग न करें। जब आपको आवश्यकता नहीं होती है तो आप कई प्रश्न पूछते हैं। जानकारी के लिए – Matt

+0

Thx :) – questhome

संबंधित मुद्दे