我通过运行PowerShell脚本的GPO设置了一个任务。我发现只有在运行脚本的机器上有模块时才能使用Get-ADUser。是否有另一种方法可以在多台客户端计算机上运行时查看用户是否在特定组中,而我不想再安装任何其他内容?使用VBScript很容易,但我不确定如何使用PowerShell做到这一点。这是没有AD的机器上没有的一行:
If ((Get-ADUser $User -Properties memberof).memberof -like "CN=GROUP*")
使用VBScript,以下内容适用于所有计算机:
If IsMember("GROUP") Then
答案 0 :(得分:0)
首先,您需要获取用户的DistinguishedName(请参阅上面的函数)和您的DomainController名称,然后您可以使用没有活动目录模块的[ADSI]类型,如下所示:
DC =您的DomainController的名称// DC / $ UserDN
Function Get-DN ($SAMName)
{
$root = [ADSI]''
$searcher = new-object System.DirectoryServices.DirectorySearcher($root)
$searcher.filter = "(&(objectClass=user)(sAMAccountName= $SAMName))"
$user = $searcher.findall()
if ($user.count -gt 1)
{
$count = 0
foreach($i in $user)
{
write-host $count ": " $i.path
$count = $count + 1
}
$selection = Read-Host "Please select item: "
Return $user[$selection].path
}
else
{
return $user[0].path
}
}
$GroupName = "MyGroup"
$UserDN = Get-DN $env:USERNAME
$user = [adsi]$UserDN
if ($User.memberOf -match $GroupName)
{
"The User is Member of $GroupName"
}
else
{
"The User is not Member of $GroupName"
}