ব্যবহারকারী যে সমস্ত গ্রুপের সদস্য সেগুলি কীভাবে পাবেন?


135

পাওয়ারশেলের Get-ADGroupMemberসিএমডিলেট নির্দিষ্ট গ্রুপের সদস্যদের ফেরত দেয়। কোনও নির্দিষ্ট ব্যবহারকারী সদস্য হিসাবে থাকা সমস্ত গোষ্ঠীগুলি পেতে একটি সেমিডলেট বা সম্পত্তি রয়েছে কি?


আমি আমার ভুল ঠিক করেছিলাম: Get-Memberহওয়া উচিত Get-ADGroupMember


প্রশ্নটি পরিষ্কার নয়। আপনি কি এটি পুনর্নির্মাণ করতে পারেন বা একটি উদাহরণ যুক্ত করতে পারেন?
মোহিত চক্রবর্তী

1
দেখুন stackoverflow.com/questions/668321/... এবং technet.microsoft.com/en-us/library/dd315351.aspx । আপনি কী নিশ্চিত যে গেট-মেম্বার যা মনে করে তা করে?
tiago2014

@ মোহিত চক্রবর্তী এখন আরও স্পষ্ট?
প্রিমোজ

1
দ্রুত আপনি ব্যবহার করতে পারেন net user /domain username, গেট গ্রুপে
মোহাম্মদ

উত্তর:


282

গেট-এডি প্রিন্সিপালগ্রুপ মেম্বারশিপ এটি করবে।

Get-ADPrincipalGroupMembership username | select name

name
----
Domain Users
Domain Computers
Workstation Admins
Company Users
Company Developers
AutomatedProcessingTeam

1
এটি আমাকে এটি সন্ধানের সর্বাধিক সংশ্লেষযুক্ত এবং দীর্ঘ ঘূর্ণিত পদ্ধতি ব্যবহার থেকে বাঁচিয়েছে। জানতেন যে পাওয়ারশেলের কাছে এরকম কিছু থাকবে তবে এটি কোথাও খুঁজে পেল না। +1
টিম আলেকজান্ডার

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

5
উপরেরটি আমাকে ত্রুটি দিচ্ছিল ("অভ্যন্তরীণ ত্রুটির কারণে সার্ভারটি অনুরোধটি প্রক্রিয়া করতে অক্ষম" - সম্ভবত সার্ভারে কার্যকারিতা উপলব্ধ নয়) available get-aduser $username -Properties memberof | select -expand memberofভাল কাজ যদিও।
জনএলবেয়ান

5
আপনি যদি সার্ভারের পরিবর্তে উইন্ডোজ 10 ওয়ার্কস্টেশনে থাকেন তবে এখান থেকে আরএসএটি ইনস্টল করুন , তারপরে import-module activedirectoryপাওয়ারশেল কমান্ডলাইনে টাইপ করুন, তবে এটি চালানো উচিত।
জেমস টুমে

3
মডিউল ইনস্টল করা না থাকলে: ইনস্টল-WindowsFeature RSat-আদ-PowerShell
Preben Huybrechts

81

একক লাইন, কোনও মডিউল প্রয়োজন নেই, বর্তমান লগ ব্যবহারকারীকে ব্যবহার করে:

(New-Object System.DirectoryServices.DirectorySearcher("(&(objectCategory=User)(samAccountName=$($env:username)))")).FindOne().GetDirectoryEntry().memberOf

: এই vbs / PowerShell নিবন্ধটি Qudos http://technet.microsoft.com/en-us/library/ff730963.aspx


5
আপনাকে ধন্যবাদ, আমি এই নো-মডিউল সংস্করণটির প্রশংসা করি। আমি কেবল থেকে পরিবর্তনশীল পরিবর্তিত $env:usernameকরতে $usernameএবং সাথে সেট $username = "testuser"সহজে অন্যান্য ব্যবহারকারীর লুক-জন্য পরিবর্তনশীল প্রতিকল্পন না।
প্রজেক্টডিপি

এখানে আবার ফিরে আমার পথ googled! এখনও এ্যান্ড সরঞ্জাম উপলব্ধ নয় এমন এলোমেলো পরিস্থিতিতে কার্যকর।
নাথন

43

বর্তমানে লগ-অন থাকা ব্যবহারকারীর জন্য গ্রুপ সদস্যতা পেতে ক্যানোয়াস পোস্ট করেছেন এমন একটি আরও সংক্ষিপ্ত বিকল্প।

এই ব্লগ পোস্টে আমি এই পদ্ধতিটি দেখতে পেয়েছি: http://www.travisrunyard.com/2013/03/26/auto-create-outlook-mapi-user-profiles/

([ADSISEARCHER]"samaccountname=$($env:USERNAME)").Findone().Properties.memberof

একটি আরও ভাল সংস্করণ যা এলডিএপি গ্যাফটি ফেলার জন্য একটি রেজেেক্স ব্যবহার করে এবং কেবলমাত্র গ্রুপের নামগুলি ছেড়ে দেয়:

([ADSISEARCHER]"samaccountname=$($env:USERNAME)").Findone().Properties.memberof -replace '^CN=([^,]+).+$','$1'

[ADSISEARCHER] টাইপ এক্সিলারেটর ব্যবহার সম্পর্কে আরও বিবরণ স্ক্রিপ্টিং লোক ব্লগে পাওয়া যাবে: http://blogs.technet.com/b/heyscripttingguy/archive/2010/08/24/use-the-powershell-adsisearcher-type -accelerator টু অনুসন্ধান-সক্রিয়-directory.aspx


1
এই উভয়ই আমাকে ত্রুটি দেয়: "0" যুক্তি (গুলি) সহ "ফাইন্ডওন" কল করা ব্যতিক্রম: "স্যামকাউন্টের নাম = অনুসন্ধান ফিল্টারটি অবৈধ।"
ডালাস

অদ্ভুত .... আমি এটি আবার পরীক্ষা করেছি, তবে উইন্ডোজ 7 এ সম্পূর্ণ ভিন্ন পরিবেশে, এবং এটি এখানেও দুর্দান্ত কাজ করে।
ড্যানিয়েল.এস

আমি এখনই আবার চেষ্টা করেছি, এখনও উইন 7 এ, এবং এটি কার্যকর কাজ করে। প্রথম চেষ্টা করার সময় সম্ভবত আমার টাইপ হয়েছিল। বন "গাফ" কেটে ফেলার জন্য প্রতিস্থাপন যোগ করার জন্য ধন্যবাদ।
ডালাস

2
দুর্দান্ত কাজ করে, | Sort-Objectএটিকে আরও পাঠযোগ্য করে তোলার জন্য সংযোজন করুন ।
মার্টিন হোলিংসওয়ার্থ

31

সিএমডি থেকে পুরানো বিদ্যালয়ের পথ:

net user mst999 /domain 

1
এটি অতিরিক্ত খ্রি সরঞ্জাম ছাড়া ক্লায়েন্ট মেশিনের উপর কাজ করে
Rast

4
দুর্ভাগ্যক্রমে - যদি আপনার গোষ্ঠীর নামগুলি দীর্ঘ হয় (যেমন> 21 টি অক্ষর) তবে তা সেগুলি কেটে যাবে ...
কিল্টানেন

যে একজন অন্যভাবে মারধর করে! ব্র্যাভো
স্টেইকুল

24
(GET-ADUSER Identity USERNAME Properties MemberOf | Select-Object MemberOf).MemberOf

ধন্যবাদ! এই কাজ। শুধুমাত্র ডাউনসাইড হ'ল মান একটি স্ট্রিং।
শাইস

3
| get-adgroup গ্রুপ অবজেক্টগুলিকে আউটপুট দেবে। উজ্জ্বল!
8DH

1
বা, logged env: ব্যবহারকারীর নাম ব্যবহার করুন পরিবর্তে বর্তমানে লগ ইন করা ব্যবহারকারীর ব্যবহারকারীর নাম দখল করতে
ড্যাভ লুক্রে

6

আপনি যদি ব্যবহারের জন্য গেট-এডি প্রিন্সিপালগ্রুপ মেম্বারশিপ না পেতে পারেন তবে সেই ব্যবহারকারী হিসাবে লগ ইন করার চেষ্টা করতে পারেন।

$id = [Security.Principal.WindowsIdentity]::GetCurrent()
$groups = $id.Groups | foreach-object {$_.Translate([Security.Principal.NTAccount])}
$groups | select *

আপনি যেমন ব্যবহার করেন তবে আপনাকে ব্যবহারকারী হিসাবে লগইন করতে হবে না$id = [Security.Principal.WindowsIdentity]("username")
বিটকয়েন মার্ডারাস ম্যানিয়াক

1
এটি ওয়ান-লাইনারে সুন্দরভাবে সংক্ষিপ্ত করে [System.Security.Principal.WindowsIdentity]::GetCurrent().Groups | % {$_.Translate([Security.Principal.NTAccount])}
alx9r

5

কোনও ব্যবহারকারীর জন্য গ্রুপ সদস্যতা পান:

$strUserName = "Primoz"
$strUser = get-qaduser -SamAccountName $strUserName
$strUser.memberof

কোনও ব্যবহারকারীর জন্য গ্রুপ সদস্যতা পান দেখুন

তবে সক্রিয় ডিরেক্টরির জন্য কোয়েস্টের ফ্রি পাওয়ারশেল কমান্ডগুলিও দেখুন

[ সম্পাদনা করুন : উইন্ডোজ ২০০৮ আর 2 এর সাথে ভি 2-এর পর থেকে পাওয়ার-এডি প্রিন্সিপালগ্রুপ মেম্বারশিপ কমান্ড পাওয়ারশেলের অন্তর্ভুক্ত। নীচে kstrauss এর উত্তর দেখুন]]


2
আসলে সেখানে কোয়েস্ট cmdlets সঙ্গে একটি সহজ উপায় আছে: পান-QADGroup -Contains Primoz
fenster

18
এটি আর সেরা উত্তর নেই কারণ গেট-এডি প্রিন্সিপালগ্রুপ মেম্বারশিপ এখন পাওয়ারশেলের মধ্যে নির্মিত হয়েছে
রব ক্যানন

1
ভোট দেওয়া হয়েছে কারণ গেট-এডি প্রিন্সিপালগ্রুপ মেম্বারশিপটি ব্যবহার করা আরও ভাল। আমি এই ডাউনওয়েটটি পূর্বাবস্থায় ফিরিয়ে আনতে চাই, তবে পারি না। আমি উত্তরটি সম্পাদনা করব যেটি অন্তর্নির্মিত বিকল্পটি এখন বিদ্যমান রয়েছে point
আব্রাহাম

4

Get-Member.NET এর সদস্যদের তালিকা করার জন্য একটি সেমিডলেট object। ব্যবহারকারী / গোষ্ঠী সদস্যতার সাথে এর কোনও যোগসূত্র নেই। আপনি বর্তমান ব্যবহারকারীর গোষ্ঠী সদস্যতা পেতে পারেন:

PS> [System.Security.Principal.WindowsIdentity]::GetCurrent().Groups | 
         Format-Table -auto

BinaryLength AccountDomainSid    Value
------------ ----------------    -----
          28 S-1-5-21-...        S-1-5-21-2229937839-1383249143-3977914998-513
          12                     S-1-1-0
          28 S-1-5-21-...        S-1-5-21-2229937839-1383249143-3977914998-1010
          28 S-1-5-21-...        S-1-5-21-2229937839-1383249143-3977914998-1003
          16                     S-1-5-32-545
...

আপনার যদি স্বেচ্ছাসেবী ব্যবহারকারীদের গোষ্ঠী সম্পর্কিত তথ্যে অ্যাক্সেসের প্রয়োজন হয় তবে @tiagoinu কোয়েস্ট AD এর সেমিডলেট ব্যবহার করার পরামর্শটি আরও ভাল উপায়।


4

প্রথমে সক্রিয় ডিরেক্টরি মডিউলটি আমদানি করুন:

import-module activedirectory

তারপরে এই আদেশটি জারি করুন:

Get-ADGroupMember -Identity $group | foreach-object {
    Write-Host $_.SamAccountName
}

এটি নির্দিষ্ট গ্রুপের সদস্যদের প্রদর্শন করবে।


ওপি বিপরীতে জিজ্ঞাসা করে। একটি নির্দিষ্ট ব্যবহারকারী সদস্য হিসাবে সমস্ত গ্রুপ পান।
8DH

4

এটি যখন সাধারণ এক লাইনার হয় তখন লম্বা স্ক্রিপ্টগুলির প্রয়োজন হয় না ..

কোয়েস্ট কমান্ড

(Get-QADUser -Identity john -IncludedProperties MemberOf | Select-Object MemberOf).MemberOf

এমএস এডি কমান্ড

(GET-ADUSER Identity john Properties MemberOf | Select-Object MemberOf).MemberOf

আমি দেখতে পেয়েছি যে এমএস এডি সেন্টিমিটারটি দ্রুত তবে কিছু লোক কোয়েস্টকে আরও ভাল পছন্দ করে ..

স্টিভ


4

গেট-মেম্বার ব্যবহারকারীর গ্রুপ সদস্যতা পাওয়ার জন্য নয়। আপনি যদি স্থানীয় সিস্টেমে কোনও ব্যবহারকারী অন্তর্ভুক্ত গ্রুপগুলির একটি তালিকা পেতে চান তবে আপনি এটি দ্বারা এটি করতে পারেন:

$query = "ASSOCIATORS OF {Win32_Account.Name='DemoUser1',Domain='DomainName'} WHERE ResultRole=GroupComponent ResultClass=Win32_Account"

Get-WMIObject -Query $query | Select Name

উপরের ক্যোয়ারিতে, ডেমোউজার 1 আপনার ব্যবহারকারীর নাম এবং ডোমেননামটি আপনার স্থানীয় কম্পিউটারের নাম বা ডোমেন নামের সাথে প্রতিস্থাপন করুন।


এই ক্যোয়ারীটি খুব সময় ব্যয়কারী এবং যখন পরিবেশে একাধিক ব্যবহারকারী এবং গোষ্ঠী উপস্থিত রয়েছে তখন খুব ধীরগতির প্রতিক্রিয়া জানায়
রন্দদীপ্প

যে কেউ উত্তরটি সম্পাদনা করছে তা নিশ্চিত করুন যে আপনি এটি সঠিকভাবে সম্পাদনা করেছেন। আমি ওপিকে ডেমোউজার 1 যা-ই চাই তার ব্যবহারকারী নাম দিয়ে প্রতিস্থাপনের পরামর্শ দিচ্ছিলাম। এবং, আপনি সম্পূর্ণরূপে এর অর্থ পরিবর্তন করেছেন।
রভিকান্ত

4

ব্যবহার করুন:

Get-ADPrincipalGroupMembership username | select name | export-CSV username.csv

কমান্ডের এই পাইপগুলি একটি সিএসভিতে আউটপুট দেয় ফাইলে প্রবেশ করে।


4

এটি আপনাকে বর্তমান ব্যবহারকারীর জন্য বিশদ সরবরাহ করবে। পাওয়ারশেলের দরকার নেই।

whoami /groups


3

এটি কেবল একটি লাইন:

(get-aduser joe.bloggs -properties *).memberof

শেষ :)


এটির পাইপিংয়ের select -expandproperty memberofফলে আউটপুটটি আরও কিছুটা পাঠযোগ্য / দরকারী হয়ে উঠবে।
বেন থুল

2

আমি পাওয়ার-শেল ফাংশন লিখেছি যা গেট-এডি প্রিন্সিপালগ্রুপ মেম্বারশিপ রিসার্চ নামে পরিচিত। এটি কোনও ব্যবহারকারী, কম্পিউটার, গোষ্ঠী বা পরিষেবা অ্যাকাউন্টের ডিএসএন গ্রহণ করে। এটি অ্যাকাউন্টের সদস্য থেকে গ্রুপের একটি প্রাথমিক তালিকা পুনরুদ্ধার করে বৈশিষ্ট্যটি, তারপরে পুনরাবৃত্তভাবে এই গোষ্ঠীর সদস্যতাগুলি পরীক্ষা করে। সংক্ষিপ্ত কোডটি নীচে is মন্তব্য সহ সম্পূর্ণ উত্স কোডটি এখানে পাওয়া যাবে

function Get-ADPrincipalGroupMembershipRecursive( ) {

    Param(
        [string] $dsn,
        [array]$groups = @()
    )

    $obj = Get-ADObject $dsn -Properties memberOf

    foreach( $groupDsn in $obj.memberOf ) {

        $tmpGrp = Get-ADObject $groupDsn -Properties memberOf

        if( ($groups | where { $_.DistinguishedName -eq $groupDsn }).Count -eq 0 ) {
            $groups +=  $tmpGrp           
            $groups = Get-ADPrincipalGroupMembershipRecursive $groupDsn $groups
        }
    }

    return $groups
}

# Simple Example of how to use the function
$username = Read-Host -Prompt "Enter a username"
$groups   = Get-ADPrincipalGroupMembershipRecursive (Get-ADUser $username).DistinguishedName
$groups | Sort-Object -Property name | Format-Table

2

নীচে ভাল কাজ করে:

get-aduser $username -Properties memberof | select -expand memberof

আপনার যদি ব্যবহারকারীদের একটি তালিকা থাকে:

$list = 'administrator','testuser1','testuser2'
$list | `
    %{  
        $user = $_; 
        get-aduser $user -Properties memberof | `
        select -expand memberof | `
        %{new-object PSObject -property @{User=$user;Group=$_;}} `
    }

1

Get-QADUser -SamAccountName লগইনআইডি | % {$ _। সদস্যআফ} | গেট-কিএডিগ্রুপ | নাম নির্বাচন করুন


1

আমি কোনও নির্দিষ্ট ব্যবহারকারীর জন্য নিম্নলিখিত কাজগুলি করতে পারি না:

Get-ADPrincipalGroupMembership username

এটি একটি ত্রুটি ফেলেছিল যে আমি সমস্যার সমাধান করতে রাজি নই।

তবে আমি get-ADUser ব্যবহার করে একটি ভিন্ন সমাধান নিয়ে এসেছি। আমি এটি কিছুটা ভাল পছন্দ করি কারণ আপনি যদি অ্যাকাউন্টের নামটি না জানেন তবে আপনি এটি ব্যবহারকারীর আসল নামটির সাথে ওয়াইল্ডকার্ডের ভিত্তিতে পেতে পারেন। শুধু পার্টফুজার ব্যবহারকারী নাম পূরণ করুন এবং এটি চলে যায়।

#Get the groups that list of users are the member of using a wildcard search

[string]$UserNameLike = "*PartOfUsersName*" #Use * for wildcards here
[array]$AccountNames = $(Get-ADUser -Filter {Name -like $UserNameLike}).SamAccountName

ForEach ($AccountName In $AccountNames) {
Write-Host "`nGETTING GROUPS FOR" $AccountName.ToUpper() ":"
(Get-ADUser -Identity $AccountName -Properties MemberOf|select MemberOf).MemberOf|
    Get-ADGroup|select Name|sort name
    }

আমাকে এই সমাধানে পাওয়ার জন্য স্কেমসেকেন্ডেউগলার এবং 8 ডিএইচ কাছে বিশাল প্রপস। আপনার দুজনের কাছেই +1


1

যদিও এখানে অনেকগুলি দুর্দান্ত উত্তর রয়েছে, সেখানে একটি রয়েছে যা আমি ব্যক্তিগতভাবে খুঁজছিলাম যা অনুপস্থিত ছিল। একবার আমি এটি সন্ধান করার পরে - আমি ভেবেছিলাম যে পরে যদি এটি সন্ধান করতে চাই তবে আমার এটি পোস্ট করা উচিত, বা এটি আসলে কোনও সময়ে অন্য কাউকে সহায়তা করার ব্যবস্থা করে:

Get-ADPrincipalGroupMembership username | Format-Table -auto

এটি উপস্থাপনের জন্য একটি দ্বিতীয় পদ্ধতি হ'ল আপনার আগ্রহী স্বতন্ত্র কলামগুলি নির্দিষ্ট করা:

Get-ADPrincipalGroupMembership username | select name, GroupScope, GroupCategory

এটি ব্যবহারকারীর নামটির সাথে সম্পর্কিত সমস্ত AD গোষ্ঠীগুলি দেয় - তবে প্রতিটি গ্রুপের সমস্ত ডিফল্ট বৈশিষ্ট্যগুলি টেবিল হিসাবে সুন্দরভাবে ফর্ম্যাট করে।

এর প্রধান সুবিধাটি আপনাকে দেয় এক নজরে আপনি দেখতে পারেন যা বিতরণ তালিকাগুলি, এবং যা সুরক্ষা গোষ্ঠীগুলি। আপনি আরও একবারে এক নজরে দেখতে পারবেন যা সর্বজনীন, যা ডোমেনলোকাল এবং যা বিশ্বব্যাপী।
আপনি এই শেষ বিট সম্পর্কে যত্ন করবেন কেন?

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

0
Import-Module ActiveDirectory
Get-ADUser -SearchBase "OU=Users,DC=domain,DC=local" -Filter * | foreach-object {
write-host "User:" $_.Name -foreground green
    Get-ADPrincipalGroupMembership $_.SamAccountName | foreach-object {
        write-host "Member Of:" $_.name
    }
}

আপনাকে ব্যবহারকারীদের তালিকা থেকে তালিকাভুক্ত করতে হবে এমন OU প্রতিফলিত করার জন্য -সন্ধানবেসের মান পরিবর্তন করুন :)

এটি সেই OU- র সমস্ত ব্যবহারকারীর তালিকা তৈরি করবে এবং আপনাকে দেখাবে যে তারা কোন গ্রুপের সদস্য।



0
   Get-ADUser -Filter { memberOf -RecursiveMatch "CN=Administrators,CN=Builtin,DC=Fabrikam,DC=com" } -SearchBase "CN=Administrator,CN=Users,DC=Fabrikam,DC=com"  -SearchScope Base
                  ## NOTE: The above command will return the user object (Administrator in this case) if it finds a match recursively in memberOf attribute. 

0

নামগুলি সন্ধান করার এটি সহজতম উপায়:

Get-ADPrincipalGroupMembership "YourUserName"

# Returns distinguishedName : CN=users,OU=test,DC=SomeWhere GroupCategory : Security GroupScope : Global name : testGroup objectClass : group objectGUID : 2130ed49-24c4-4a17-88e6-dd4477d15a4c SamAccountName : testGroup SID : S-1-5-21-2114067515-1964795913-1973001494-71628

প্রতিক্রিয়াটি ছাঁটাতে বা OU- র প্রত্যেক গ্রুপকে প্রতিটি গ্রুপ তারা ব্যবহারকারীর জন্য একটি নির্বাচিত বিবৃতি যুক্ত করুন:

foreach ($user in (get-aduser -SearchScope Subtree -SearchBase $oupath -filter * -Properties samaccountName, MemberOf | select samaccountName)){ Get-ADPrincipalGroupMembership $user.samaccountName | select name}


0

এটি পুনরাবৃত্তি পেতে আপনি ব্যবহার করতে পারেন:

<# 
    .SYNOPSIS   
        Get all the groups that a user is MemberOf.

    .DESCRIPTION
        This script retrieves all the groups that a user is MemberOf in a recursive way.

    .PARAMETER SamAccountName
        The name of the user you want to check #>

Param (
    [String]$SamAccountName = 'test',
    $DomainUsersGroup = 'CN=Domain Users,CN=Users,DC=domain,DC=net'
)


Function Get-ADMemberOf {
    Param (
        [Parameter(ValueFromPipeline)]
        [PSObject[]]$Group,
        [String]$DomainUsersGroup = 'CN=Domain Users,CN=Users,DC=grouphc,DC=net'
    )
    Process {
        foreach ($G in $Group) {
            $G | Get-ADGroup | Select -ExpandProperty Name
            Get-ADGroup $G -Properties MemberOf| Select-Object Memberof | ForEach-Object {
                Get-ADMemberOf $_.Memberof
            }
        }
    }
}


$Groups = Get-ADUser $SamAccountName -Properties MemberOf | Select-Object -ExpandProperty MemberOf
$Groups += $DomainUsersGroup
$Groups | Get-ADMemberOf | Select -Unique | Sort-Object

0

প্রায় উপরের সমস্ত সমাধান ব্যবহার করে ActiveDirecotry মডিউলটি যা বেশিরভাগ ক্ষেত্রে ডিফল্টরূপে নাও পাওয়া যায়।

আমি পদ্ধতি নীচে ব্যবহার। কিছুটা পরোক্ষ, তবে আমার উদ্দেশ্যটি পূরণ করেছে।

সমস্ত উপলব্ধ গ্রুপ তালিকা

Get-WmiObject -Class Win32_Group

এবং তারপরে ব্যবহারকারীদের সাথে সম্পর্কিত গ্রুপগুলির তালিকা দিন

[System.Security.Principal.WindowsIdentity]::GetCurrent().Groups

তারপরে চেকের মাধ্যমে তুলনা করা যেতে পারে SIDs। এটি লগ ইন করা ব্যবহারকারীর জন্য কাজ করে। আমি ভুল হলে আমাকে সংশোধন করুন। পাওয়ারশেলের কাছে সম্পূর্ণ নতুন, তবে কাজের প্রতিশ্রুতিবদ্ধ হয়ে এটি সম্পন্ন করতে হয়েছিল।


যদি আপনি এমন কোনও ব্যবহারকারী যাচাই করে থাকেন যা ইতিমধ্যে প্রশাসক গোষ্ঠীর সদস্য, তবে "অ্যাডমিনিস্ট্রেটর অ্যাজ অ্যাডমিনিস্ট্রেটর" দ্বারা পাওয়ারশেল শুরু করা নিশ্চিত করুন, অন্যথায় গ্রুপগুলি ২ য় কমান্ডের জন্য সঠিকভাবে তালিকাভুক্ত হবে না ... চিত্রিত হতে বেশ কিছুটা সময় নিয়েছে এই আউট ... উইন্ডোজ ...
রুইফেং মা

0

ব্যবহারকারীর ইনপুট এবং অভিনব আউটপুট বিন্যাস সহ:

[CmdletBinding(SupportsShouldProcess=$True)] 
Param( 
    [Parameter(Mandatory = $True)] 
    [String]$UserName 
) 
Import-Module ActiveDirectory 
If ($UserName) { 
    $UserName = $UserName.ToUpper().Trim() 
    $Res = (Get-ADPrincipalGroupMembership $UserName | Measure-Object).Count 
    If ($Res -GT 0) { 
        Write-Output "`n" 
        Write-Output "$UserName AD Group Membership:" 
        Write-Output "===========================================================" 
        Get-ADPrincipalGroupMembership $UserName | Select-Object -Property Name, GroupScope, GroupCategory | Sort-Object -Property Name | FT -A 
    } 
}

0

ভবিষ্যতের রেফারেন্সের জন্য এটি এখানে রাখছি। আমি একটি ইমেল স্থানান্তরের মাঝে আছি। আমার প্রতিটি ব্যবহারকারীর অ্যাকাউন্ট এবং তার সম্পর্কিত গ্রুপ সদস্যতা জানতে হবে এবং প্রতিটি গোষ্ঠী এবং এর সম্পর্কিত সদস্যদেরও আমার জানা দরকার।

আমি প্রতিটি ব্যবহারকারীর গ্রুপ সদস্যতার জন্য সিএসভি আউটপুট দেওয়ার জন্য নীচের কোড ব্লকটি ব্যবহার করছি।

Get-ADUser -Filter * |`
  ForEach-Object { `
    $FileName = $_.SamAccountName + ".csv" ; `
    $FileName ; `
    Get-ADPrincipalGroupMembership $_ | `
      Select-Object -Property SamAccountName, name, GroupScope, GroupCategory | `
        Sort-Object -Property SamAccountName | `
          Export-Csv -Path $FileName -Encoding ASCII ; `
  }

গোষ্ঠীগুলি এবং তাদের নিজ নিজ সদস্যদের রফতানি প্রক্রিয়াটি কিছুটা বিশৃঙ্খলাযুক্ত ছিল, তবে নীচে কাজ করে। আউটপুট ফাইলের নামগুলিতে গ্রুপের ধরণ অন্তর্ভুক্ত। সুতরাং, আমার প্রয়োজন ইমেল বিতরণ গ্রুপগুলি হ'ল ইউনিভার্সাল এবং গ্লোবাল ডিস্ট্রিবিউশন গ্রুপগুলি। আমার প্রয়োজন হয় না এমন ফলাফলের টিএক্সটি ফাইলগুলি কেবল মুছতে বা সরাতে আমার সক্ষম হওয়া উচিত।

Get-ADGroup -Filter * | `
 Select-Object -Property Name, DistinguishedName, GroupScope, GroupCategory | `
  Sort-Object -Property GroupScope, GroupCategory, Name | `
   Export-Csv -Path ADGroupsNew.csv -Encoding ASCII

$MyCSV = Import-Csv -Path .\ADGroupsNew.csv -Encoding ASCII

$MyCSV | `
 ForEach-Object { `
  $FN = $_.GroupScope + ", " + $_.GroupCategory + ", " + $_.Name + ".txt" ; `
  $FN ; `
  Get-ADGroupMember -Identity $_.DistinguishedName | `
   Out-File -FilePath $FN -Encoding ASCII ; $FN=""; `
  }

0

উপস্থাপিত সমস্ত মন্তব্য অধ্যয়ন আমাকে একটি সূচনা পয়েন্ট দিয়েছে (এর জন্য ধন্যবাদ) তবে বেশ কয়েকটি অমীমাংসিত সমস্যা নিয়ে আমাকে রেখে গেছেন। ফলস্বরূপ এখানে আমার উত্তর। প্রদত্ত কোড স্নিপেট যা চাওয়া হয়েছে তার চেয়ে একটু বেশি করে তবে এটি সাহায্যকারী ডিবাগিংয়ের তথ্য সরবরাহ করে।

[array] $script:groupsdns = @()
function Get-ADPrincipalGroupMembershipRecursive() 
{
  Param( [string] $dn, [int] $level = 0, [array] $groups = @() )

  #if(($groupsdns | where { $_.DistinguishedName -eq $dn }).Count -ne 0 ) { return $groups } # dependency on next statement
  #$groupsdns += (Get-ADObject $dn -Properties MemberOf) # Get-ADObject cannot find an object with identity
  if ($script:groupsdns.Contains($dn)) { return $groups }
  $script:groupsdns += $dn
  $mo = $Null
  $mo = Get-ADObject $dn -Properties MemberOf # Get-ADObject cannot find an object with identity
  $group = ($dn + " (" + $level.ToString())
  if ($mo -eq $Null) { $group += "!" }
  $group += ")"
  $groups += $group
  foreach( $groupdn in $mo.MemberOf )
  {
    $groups = Get-ADPrincipalGroupMembershipRecursive -dn $groupdn -level ($level+1) -groups $groups
  }
  if ($level -le 0) 
  { 
    $primarygroupdn = (Get-ADUser -Identity $dn -Properties PrimaryGroup).PrimaryGroup 
    $groups = Get-ADPrincipalGroupMembershipRecursive -dn $primarygroupdn -level ($level+1) -groups $groups
  }
  return $groups
}
$adusergroups = Get-ADPrincipalGroupMembershipRecursive -dn $aduser.DistinguishedName
$adusergroups | ft -AutoSize | `
              Out-File -Width 512 Get-ADPrincipalGroupMembershipRecursive.txt #-Append #-Wrap # | Sort-Object -Property Name

দুঃখিত আমি স্পষ্ট করতে ভুলে গেছি। কি এই প্রথম: $ aduserDistinguishedName = "সিএন = নাম এবং যে অবজেক্টের = ..." $ aduser = পান-ADUser -Identity $ aduserDistinguishedName -Properties *
ES44AC SD70MAC

0

আপনি যখন অন্যান্য সদস্য গোষ্ঠীগুলির সাথে পরামর্শ করার সুযোগ পাচ্ছেন না তবে গ্রুপের সদস্যদের সাথে পরামর্শ করার সুযোগ আপনার রয়েছে, তখন কোন ব্যবহারকারী কোন গ্রুপে অ্যাক্সেস পেয়েছেন তার একটি মানচিত্র তৈরি করতে আপনি নিম্নলিখিতটি করতে পারেন।

$groups = get-adgroup -Filter * | sort name | select Name
$users = @{}
foreach($group in $groups) {
    $groupUsers = @()
    $groupUsers = Get-ADGroupMember -Identity $group.Name | Select-Object SamAccountName
    $groupUsers | % {
        if(!$users.ContainsKey($_.SamAccountName)){
            $users[$_.SamAccountName] = @()
        }
        ($users[$_.SamAccountName]) += ($group.Name)
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.