当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 和 AD 组的最佳组合

作者:精品下载站 日期:2024-12-14 07:13:33 浏览:15 分类:玩电脑

PowerShell 和 AD 组的最佳组合


在日常生活中,有很多情况需要复制AD组的成员,或者检查某人是否是AD组的成员。因此,我创建了这篇博文,为通过 powershell 执行此任务提供一点帮助。

检查用户组成员资格的功能

这是一个简短的函数,检查用户是否是特殊组的成员:

function Check-UserInGroup {
  [CmdletBinding()]
  param (
    [Parameter(
        Mandatory=$true,
    Position=0)]
    [string] $samaccount,
    [Parameter(Mandatory=$true)]
    [string] $groupsamaccount
  )
  $user = $samaccount
  $group = "$groupsamaccount"
  [string]$memberofs = Get-ADuser -Identity "$user" -Properties MemberOf | Select-Object MemberOf -ExpandProperty MemberOf
  If ($memberofs -match $group) {
    return $true
  } Else {
    return $false
  }
}

我该如何使用这个功能?这是一个简短的例子:

 $membergroupb = Check-UserInGroup -samaccount "user-a" -groupsamaccount "group-b"
    
    if($membergroupb -eq $false){
    
      Add-ADGroupMember -identity "group-b" -members "user-a"
    }

第一行检查用户是否是会员(TRUE 或 FALSE),如果用户不是会员,您可以使用 IF 添加操作(例如添加)

列出所有特殊用户组

如果你想从一个特殊用户那里获得所有组成员资格,你可以使用这种在线工具:

Get-ADPrincipalGroupMembership -Identity USERSAMACCOUNTNAME | select SamAccountName,name 

如果你想排除一些特殊组,你可以在上面的命令中添加一个扩展:

Get-ADPrincipalGroupMembership -Identity USERSAMACCOUNTNAME | select SamAccountName,name  |where{$_.name -ne "SAMACCOUNTGROUPNOTWANTED"} | sort name
#multiple groups not wanted
Get-ADPrincipalGroupMembership -Identity USERSAMACCOUNTNAME | select SamAccountName,name  |where{$_.name -ne "SAMACCOUNTGROUPNOTWANTED" -and $_.name -ne "SAMACCOUNTANOTHERGROUP" } | sort name

功能检查AD组是否存在

检查当前 AD 中是否已存在 AD 组

function Check-Groupexists {
  [CmdletBinding()]
  param (
    [Parameter(
        Mandatory=$true,
    Position=0)]
    [string] $groupname,
   [Parameter(Mandatory=$true)]
    [string] $dc
    
        
  )
  $gn = $groupname
  $domaincontroller = $dc
  $groupexists = $(try {Get-ADGroup -Filter "SamAccountName -eq '$gn'"} catch {$null})
  If ($groupexists) {
    return $true
  } Else {
    return $false
  }


}

如何使用这个功能呢?请参阅此示例。

$grpname = "NEWADGROUPNAME"
$DC = "DOMAINCONTROLLER"

if(Check-Groupexists -groupname $grpname -dc $DC)
{
  Write-Host "$grpname already exists!" -ForegroundColor Yellow
}
else{
  Write-Host "$grpname available..." -ForegroundColor Green
  New-ADGroup -SamAccountName "$grpname" -DisplayName "$grpname" -Server "$DC" -GroupScope Global -Name "$grpname" -Description "DESCRIPTION" -Path "distinguished name to OU"
}

这个简短的脚本检查组的名称是否可用,如果未使用,则会创建一个新的 AD 组

享受这个 powershell 功能和小脚本的乐趣。如果您喜欢这篇文章,请点击“有用”。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯