各位前輩好
請問要如何用C#取得目前登入的使用者隸屬的群組呢?
如下圖:
若登入帳號為本機帳號應該會顯示 Administrators /Users /...等
若登入帳號為網域帳號則應該顯示 Domain Users / Domain Admin...等
或是cmd指令也可以 感恩!!
**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帳號隸屬哪個群組時適用,但我想解決的問題是:我使用本機登入/或是電腦並無加入網域,只有本機帳號能登入的狀況下,列出本機帳號所隸屬的群組,請問是否有方法能夠做到?
PowerShell
#列出本機所有群組
$AllGroup = get-localgroup | select Name
#指定要搜尋的本機使用者帳號
$User="administrator"
#列出每個群組中含有 administrator帳號的群組.
Foreach ($a in $AllGroup) { Get-LocalGroupMember -Group $a | where-object {$_.Name -match $User}}