如何检查Powershell中的用户凭据,以确定它们是否属于某个组?

时间:2012-11-19 15:03:23

标签: powershell active-directory credentials mmc

我正在尝试为远程管理员实施Taskpads(MMC)。由于我不想将它们保存在工作站上,因此我将它们保存在文件服务器上并在那里共享它们。在客户端(即在远程管理员的工作站上),我所拥有的是Powershell脚本(exe),它接受用户凭据,检查/验证,然后打开驻留在文件服务器上的远程MMC(客户端只有读取权限。)

我的问题是 - 因为我不想为每个管理员创建一个脚本,有没有办法让他们动态访问他们的任务板,具体取决于他们用单个脚本提供的凭据?例如,如果“admin_atlanta”登录,那么他将被提供对“Taskpad_atlanta”的访问权限,依此类推。所有管理员都属于他们各自的组,例如admin_atlanta属于“admins_atlanta”。

很抱歉,如果问题多余且冗长,请随时针对我的问题提出任何问题/说明。

3 个答案:

答案 0 :(得分:2)

您可以执行类似的操作(如果您已经验证了用户凭据):

$user = get-adobject -ldapfilter "(samaccountname=$username)" -properties memberof

现在您可以使用$ user.memberof来遍历所有组成员。

$user.memberof | % { if ($_ -match "admin_" ) { write-host "Found Admin Group"; /* DO MORE STUFF */ } }

对于用户输入,我们使用:

# Input - Read User Credentials
$credentials = Get-Credential

# Split username & password
$username = $cred.username
$password = $cred.GetNetworkCredential().password

 # Get your Domain
 $Root = "LDAP://" + ([ADSI]"").distinguishedName
 $domain = New-Object System.DirectoryServices.DirectoryEntry($Root,$UserName,$Password)

if ($domain.name -ne $null)
{
    write-host "Authenticated"
}else{
    write-host "Not authenticated"
}

希望有所帮助

答案 1 :(得分:1)

不确定你想要什么。如果所有用户的格式相同,则可以使用拆分提取部分名称,例如:

说$ c是你可以做的获取凭证结果:

$name=$c.Username.split("admin_")[1] # will outupt atlanta for the user admin_atlanta

然后做你想要的“mmc Taskpad_ $ name.msc”

答案 2 :(得分:0)

PowerShell Community Extensions模块有一个命令来帮助这个名为Test-UserGroupMembership的例如:

C:\PS> Test-UserGroupMembership -GroupName Administrators -Identity joe
False