首页 > 解决方案 > 如何设置 PowerShell 脚本将 AD 组添加到域中的 PC/用户帐户?

问题描述

下面是我编写的脚本(目的是将 AD 组添加到指定的参数——计算机名称和用户名)。我有一个成功导入的单独的 AD 模块脚本。但是下面的脚本不起作用。一位同事提到我需要参考我们公司的域。我添加了如下信息(LDAP 信息,但现在只是占位符信息)。还需要什么来确保它适用于我们的 AD 域环境?

[ADSI] "LDAP://cn=VPNAdminUsers,ou=West,dc=MyDomain,dc=com


function Add-DevADGroup {

try {
    param (
        [Parameter(Mandatory = $True)]
        [string] $ComputerName,
        [Parameter(Mandatory = $True)]
        [string] $UserName
    )

[string]$LocalAdmin = (Get-ADGroup -Identity [ADSI] "LDAP://cn=GPP Computer Local Admin Exception,ou=West,dc=MyDomain,dc=com").DistinguishedName
[string]$RDP = (Get-ADGroup -Identity [ADSI] "LDAP://cn=GPP Computer RDP,ou=West,dc=MyDomain,dc=com").DistinguishedName
[string]$RDPException = (Get-ADGroup -Identity [ADSI] "LDAP://cn=GPP Computer RDP Exception,ou=West,dc=MyDomain,dc=com").DistinguishedName
[string]$VPNAdminUsers = (Get-ADGroup -Identity [ADSI] "LDAP://cn=VPNAdminUsers,ou=West,dc=MyDomain,dc=com").DistinguishedName

    $ADGroups = @()
    $ADGroups.Add($LocalAdmin)
    $ADGroups.Add($RDP)
    $ADGroups.Add($RDPException)


foreach ($group in $ADGroups){
            Add-ADPrincipalGroupMembership -Identity $ADGroups -Members $ComputerName
            Write-Output ("{0} has been added to {1}" -f $group.Name, $ComputerName)
    }

if ($ComputerName.Substring($ComputerName.Length -1) -match "L") {
            Add-ADGroupMember -Identity $VPNAdminUsers -Members $UserName
            Write-Output ("VPNAdminUsers has been added to {0}" -f $UserName)
    }

    Catch {

    Write-Error "Unable to add all members to the specified AD Group(s)." -verbose

    }
}
}

Add-DevADGroup

标签: powershellactive-directory

解决方案


如果它需要在您的环境中工作,那么最好的测试方法是在您的环境中运行它。大多数 PowerShell cmdlet 都有一个-WhatIf参数来告诉它以确保它可以工作,但实际上不会改变任何东西。因此,为了进行测试,您可以将其添加到通常会更改某些内容的任何 cmdlet。例如:

Add-ADPrincipalGroupMembership -Identity $ADGroups -Members $ComputerName -WhatIf

然后,一旦脚本运行没有错误,您就可以删除-WhatIf并真正运行它。

也就是说,我可以告诉你,你至少有几个语法错误会阻止它运行:

  1. 您在第一行缺少结束引号,并且
  2. 你错过了一个}之前Catch(看起来Catch应该向上移动块下面的一个)

推荐阅读