2012-11-19 16 views
0

我正在尝试为远程管理员实施任务板(MMC)。由于我不想让他们在他们的工作站上,我将他们放在文件服务器上并在那里共享。在客户端(即在远程管理员的工作站上),我拥有的是一个Powershell脚本(exe),它接受用户凭证,检查/验证,然后打开驻留在文件服务器上的远程MMC客户端只具有读取权限)。如何检查Powershell中的用户凭据,以确定它们是否属于某个组?

我的问题是 - 因为我不想让每一个每一个管理脚本,是有办法,我可以给他们访问他们的任务垫上取决于他们提供了一个脚本凭据飞?例如,如果“admin_atlanta”登录,则他将被提供对“Taskpad_atlanta”的访问等。所有管理员都属于他们各自的组,例如admin_atlanta属于“admins_atlanta”。

对不起,如果问题是多余的和长时间的,但请随时拍摄关于我的问题的任何问题/澄清。

回答

1

你可以做这样的事情(如果你已经验证了用户凭证):

$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

不知道你想要什么确切的。

说:$ C是GET-凭据导致你可以这样做::

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

然后做世袭的你,如果你的用户是相同的格式,你可以采用分体式例如提取其名称的一部分要像“MMC Taskpad_ $ name.msc”

+0

对不起由于混淆,用户的格式不同,他们是通用用户,但属于群组如admin_atlanta,admin_dallas;每个管理员都将受权的授权限制在他们受尊敬的OU中。 – Darktux

0

PowerShell Community Extensions模块有一个命令,以帮助这家名为Test-UserGroupMembership如:

C:\PS> Test-UserGroupMembership -GroupName Administrators -Identity joe 
False 
相关问题