powershell - 如何设置 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
解决方案
如果它需要在您的环境中工作,那么最好的测试方法是在您的环境中运行它。大多数 PowerShell cmdlet 都有一个-WhatIf
参数来告诉它以确保它可以工作,但实际上不会改变任何东西。因此,为了进行测试,您可以将其添加到通常会更改某些内容的任何 cmdlet。例如:
Add-ADPrincipalGroupMembership -Identity $ADGroups -Members $ComputerName -WhatIf
然后,一旦脚本运行没有错误,您就可以删除-WhatIf
并真正运行它。
也就是说,我可以告诉你,你至少有几个语法错误会阻止它运行:
- 您在第一行缺少结束引号,并且
- 你错过了一个
}
之前Catch
(看起来Catch
应该向上移动块下面的一个)
推荐阅读
- qml - QML:初始化空列表
- opencv - 如何使用opencv将已知对象的图像与该对象的3D模型对齐?
- python - 在列表中找到最小值时出错
- r - 闪亮的仪表板 R:使用标题 excel 文件作为输入 SelectInput 字段
- android - 从另一个 Activity 更新 ArrayList 而无需访问它
- css - SCSS:如何处理多个值?
- c# - C#:在不更改原始源代码的情况下将基类从一个更改为另一个
- java - Java concurrentHashMap 迭代
- css - 在 css 变量中使用 scss 变量
- php - VSCode PHP Debug - 未定义变量的异常