我正在尝试为远程管理员实施Taskpads(MMC)。由于我不想将它们保存在工作站上,因此我将它们保存在文件服务器上并在那里共享它们。在客户端(即在远程管理员的工作站上),我所拥有的是Powershell脚本(exe),它接受用户凭据,检查/验证,然后打开驻留在文件服务器上的远程MMC(客户端只有读取权限。)
我的问题是 - 因为我不想为每个管理员创建一个脚本,有没有办法让他们动态访问他们的任务板,具体取决于他们用单个脚本提供的凭据?例如,如果“admin_atlanta”登录,那么他将被提供对“Taskpad_atlanta”的访问权限,依此类推。所有管理员都属于他们各自的组,例如admin_atlanta属于“admins_atlanta”。
很抱歉,如果问题多余且冗长,请随时针对我的问题提出任何问题/说明。
答案 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