0

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

我的问题是 - 因为我不想为每个管理员制作一个脚本,有没有一种方法可以让他们根据他们提供的单个脚本的凭据动态访问他们的任务板?例如,如果“admin_atlanta”登录,那么他将获得“Taskpad_atlanta”的访问权限等等。所有管理员都属于各自的组,例如 admin_atlanta 属于“admins_atlanta”。

很抱歉,如果问题是多余且冗长的,但请随时就我的问题提出任何问题/澄清。

4

3 回答 3

3

您可以这样做(如果您已经验证了用户凭据):

$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"
}

希望有帮助

于 2012-11-19T17:02:09.897 回答
1

不知道你想要什么。如果您所有的用户都采用相同的格式,您可以使用 split 提取他们的部分名称,例如:

说 $c 是您可以执行的获取凭据结果:

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

然后做任何你想做的事,比如“mmc Taskpad_$name.msc”

于 2012-11-19T15:13:19.193 回答
0

PowerShell 社区扩展模块有一个命令可以帮助解决这个问题,例如Test-UserGroupMembership

C:\PS> Test-UserGroupMembership -GroupName Administrators -Identity joe
False
于 2012-11-19T17:44:19.657 回答