iT邦幫忙

1

如何取得目前登入使用者隸屬的群組

各位前輩好

請問要如何用C#取得目前登入的使用者隸屬的群組呢?

如下圖:

https://ithelp.ithome.com.tw/upload/images/20200521/20122797vuOD8E8wtv.jpg

若登入帳號為本機帳號應該會顯示 Administrators /Users /...等
若登入帳號為網域帳號則應該顯示 Domain Users / Domain Admin...等

或是cmd指令也可以 感恩!!

1 個回答

5
jeles51
iT邦研究生 4 級 ‧ 2020-05-22 08:13:24

**C# **參考

string CurrentUser = WindowsIdentity.GetCurrent().Name;

PrincipalContext context = new PrincipalContext(ContextType.Domain, "Domain");
UserPrincipal upUser = UserPrincipal.FindByIdentity(context, CurrentUser);
if(upUser != null)
{
    if (upUser.IsMemberOf(context, IdentityType.SamAccountName, "CustomGroup")) 
    {
        // The user belongs to the group
    }
}

PowerShell
註. 可能需要 Import AD module

#目前使用者
Get-ADPrincipalGroupMembership $env:UserName | select name

#指定使用者
Get-ADPrincipalGroupMembership '帳號' | select name

CMD

net user /domain %username%
REM 或是
whoami /groups 

首先謝謝前輩回復,以上的各項程式/指令碼皆是在電腦連結網域,並使用AD帳號登入時查詢AD帳號隸屬哪個群組時適用,但我想解決的問題是:我使用本機登入/或是電腦並無加入網域,只有本機帳號能登入的狀況下,列出本機帳號所隸屬的群組,請問是否有方法能夠做到?

jeles51 iT邦研究生 4 級 ‧ 2020-05-25 08:30:51 檢舉

PowerShell

#列出本機所有群組
$AllGroup = get-localgroup | select Name
#指定要搜尋的本機使用者帳號
$User="administrator" 
#列出每個群組中含有 administrator帳號的群組.
Foreach ($a in $AllGroup) { Get-LocalGroupMember -Group $a | where-object {$_.Name -match $User}}

我要發表回答

立即登入回答