Win2008r2 তে পাওয়ারশেলের সাথে সমস্ত গ্রুপ এবং তাদের সদস্যদের তালিকাবদ্ধ করুন


14

আমি পাওয়ারশেলে নতুন, তবে আমি ম্যানুয়াল পড়ছি এবং কিছুটা অনুশীলন করেছি। আমার উদ্দেশ্য হ'ল সমস্ত সুরক্ষা গোষ্ঠীর সমস্ত ব্যবহারকারীকে নির্দিষ্ট পথে অনুসরণ করা। আমি এটি করার উপায় খুঁজে পেয়েছি:

 get-adgroup -Filter * -SearchBase "OU=Groups,DC=corp,DC=ourcompany,DC=Com"  | %{Get-ADGroupMember $_.name} | ft name

তবে সমস্যাটি হচ্ছে আমি গ্রুপের নামটি দেখছি না। আমি যা পাই তা হ'ল একগুচ্ছ ব্যবহারকারী। এই গ্রুপের সমস্ত সদস্যের তালিকাভুক্ত হওয়ার আগে যদি কেউ আমাকে কীভাবে গ্রুপের নামটি প্রদর্শন করবেন তা বললে ভাল লাগবে। ধন্যবাদ।


2
আপনি যদি সার্চবেসের পরে পরিবর্তন করে ঘুরে দেখেন % { "GroupName: $($_.Name)"; "==========" ; Get-ADGroupMember $_ } | ft nameতবে আপনি পরে যা পেতে পারেন তা পেতে পারেন। রায়ান এর উত্তর এখনও ভাল, আপনি যদি এটি চান তবে এটি একক লাইন।
TheCleaner

আপনাকে ধন্যবাদ ক্লিনার যেমন আমি বলেছিলাম আমি পিএসে নতুন, তবে এই উদাহরণগুলি বোঝার ক্ষেত্রে সত্যই সহায়তা করে।
অ্যালেক টি

আপনার উদাহরণও দুর্দান্ত কাজ করে!
এলেক টি

উত্তর:


26

Gimme the codes! ক্ষমতা, সক্রিয়!

$Groups = Get-ADGroup -Properties * -Filter * -SearchBase "OU=Groups,DC=corp,DC=ourcompany,DC=Com" 
Foreach($G In $Groups)
{
    Write-Host $G.Name
    Write-Host "-------------"
    $G.Members
}

মূল কথাটি, আপনার সময় নিন এবং এটিকে পদক্ষেপগুলিতে ছড়িয়ে দিন। আমি জানি যে পাওয়ারওয়ারের সাথে ওয়ান-লাইনারে ফিট করার জন্য সমস্ত কিছু এবং রান্নাঘরের ডোবা পাওয়ার চেষ্টা করা মজাদার তবে এটি কোনওভাবেই প্রয়োজন হয় না।

কয়েকটি নোট:

  • আপনি Get-ADGroupMemberযদি প্রাথমিক Get-ADGroupসিএমডলেটে সদস্যদের সম্পত্তি সংগ্রহ করেন তবে আপনাকে করার দরকার নেই। এ সম্পর্কে ভাল বিষয়টি হ'ল এটি আপনাকে AD তে যে পরিমাণ কল করতে হবে তার পরিমাণ অর্ধেক করে দেয় যা আপনার স্ক্রিপ্টটি দ্রুত চালিত করে তোলে এবং এটি ডোমেন নিয়ামকের উপর বোঝা হ্রাস করে।

  • । জি.মেম্বার্স ers জি ... গ্রুপের সমস্ত সদস্যকে পাওয়ারশেল ৩ তে প্রদর্শিত করবে Pow ( হ্যাঁ, আমি শুনেছি আপনি লুপ পছন্দ করেন ... )

  • আমি Write-Hostএখানে ব্যবহার , যা স্থূল। আপনার সত্যই কখনও ব্যবহার করা উচিত নয় Write-Host। পরিবর্তে, আপনার পাঠ্য নয়, বস্তুগুলি তৈরি এবং আউটপুট করা উচিত, তবে এটি সম্পূর্ণ অন্য বিষয় ছিল এবং এই উত্তরের জন্য আমি এটি করতে খুব অলস ছিল was


10

এখানে একটি আরও ভাল সমাধান। এটি গ্রুপের নাম, ব্যবহারকারীর নাম এবং সাম অ্যাকাউন্টের নাম সহ 3 টি কলাম সিএসভিতে সমস্ত কিছু রাখবে। যখন আপনাকে স্ক্রোল করতে হবে না তখন গ্রুপে 400 জন ব্যবহারকারী রয়েছে তখন কেউ কী গ্রুপে রয়েছে তা নির্ধারণ করা খুব সহজ।

Import-Module ActiveDirectory

$Groups = (Get-AdGroup -filter * | Where {$_.name -like "**"} | select name -ExpandProperty name)

$Table = @()

$Record = @{
  "Group Name" = ""
  "Name" = ""
  "Username" = ""
}


Foreach ($Group in $Groups) {

  $Arrayofmembers = Get-ADGroupMember -identity $Group -recursive | select name,samaccountname

  foreach ($Member in $Arrayofmembers) {
    $Record."Group Name" = $Group
    $Record."Name" = $Member.name
    $Record."UserName" = $Member.samaccountname
    $objRecord = New-Object PSObject -property $Record
    $Table += $objrecord

  }
}

$Table | export-csv "C:\temp\SecurityGroups.csv" -NoTypeInformation

সম্ভবত একটি গ্রুপে 400 জন ব্যবহারকারী যুক্ত এবং সিএসভি বা এক্সএলএক্সএক্স ফাইল থেকে ডেটা ধরতে পারবেন?
কুইকিনেট

আমার অজ্ঞতার জন্য দুঃখিত তবে, আপনার কোডটি কোন ল্যাং-এ রয়েছে?
স্কটসি

আমার মন্তব্যের জন্য ক্ষণিকের জন্য দুঃখিত তবে পাওয়ারশেলের ভাষা ছিল
রাইলি কার্নি

1

আমি যোগ করতে ছিল .nameপরে $groupআমার জন্য এই কাজ করা।

$Arrayofmembers = Get-ADGroupMember -identity $Group.name -recursive | select name,samaccountname

0

আপনি যদি Size Limit5000 টিরও বেশি সদস্য সমন্বিত গোষ্ঠীগুলির সাথে সমস্যাটি নিয়ে চলে থাকেন তবে আপনি নিম্নরূপে একটি লাইন পরিবর্তন করতে পারেন:

$Arrayofmembers = (Get-ADGroup $Group -Properties member).member | Get-ADUser -Properties *

0

এখানে এমন একটি স্ক্রিপ্ট রয়েছে যা গ্রুপের নাম এবং বিবরণ সহ প্রতিটি গ্রুপের জন্য একটি পৃথক ফাইলে OU এর সমস্ত দলকে রফতানি করে। কেউ যদি তা চায় ..

$groups = Get-ADGroup -filter * -SearchBase "OU=XXX, DC=XX,DC=XX"
ForEach ($g in $groups) 
{
$path = "c:\scripts\" + $g.Name + ".csv"
Get-ADGroup -Identity $g.Name -Properties * | select name,description | Out-File $path -Append

$results = Get-ADGroupMember -Identity $g.Name -Recursive | Get-ADUser -Properties displayname, name 

ForEach ($r in $results){
New-Object PSObject -Property @{       

    DisplayName = $r.displayname | Out-File $path -Append
  }
}   
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.