我正在尝试为SCCM设置任务序列,以将便携式计算机自动添加到3个Active Directory组中。我已经设置了执行此操作的步骤,并且正在调用Powershell脚本来执行此操作。该脚本应以网络管理员身份运行,因此我不认为授权有任何问题,但是对于Powershell来说我是 super 新手,因此我认为我的问题与语法有关。我的脚本非常简单,我所需要的所有资源似乎使Powershell变得过于复杂。这是我的脚本:
ADD-ADGroupMember "GroupOne" -members "$env:computername$"
ADD-ADGroupMember "GroupTwo" -members "$env:computername$"
ADD-ADGroupMember "GroupThree" -members "$env:computername$"
我发现,$ env:computername应该会自动收集在任务序列中较早建立的计算机的名称,然后需要使用powershell添加$之后的$。
任何帮助,将不胜感激。
编辑:我终于让它工作了,下面是我找到的并用于其中一种powershell脚本的代码-
$ComputerName = gc env:computername
$isMember = new-object DirectoryServices.DirectorySearcher([ADSI]"")
$ismember.filter = “(&(objectClass=computer)(sAMAccountName=$Computername$)(memberof=CN=<CN NAME>,OU=<OU NAME>,DC=<DC NAME>,DC=<DC NAME>))”
$isMemberResult = $isMember.FindOne()
If ($isMemberResult) {exit}
else
{
$searcher = new-object DirectoryServices.DirectorySearcher([ADSI]"")
$searcher.filter = “(&(objectClass=computer)(sAMAccountName= $Computername$))”
$FoundComputer = $searcher.FindOne()
$P = $FoundComputer | select path
$ComputerPath = $p.path
$GroupPath = "LDAP://CN=<CN NAME>,OU=<OU NAME>,DC=<DC NAME>,DC=<DC NAME>"
$Group = [ADSI]"$GroupPath"
$Group.Add("$ComputerPath")
$Group.SetInfo()
}
最佳答案
无需尝试从环境变量中编写计算机的帐户名,然后再使用该帐户名将其添加到组中,只需从Active Directory中获取计算机对象:
$Computer = Get-ADComputer -Identity $env:ComputerName
foreach ($Group in @("GroupOne", "GroupTwo", "GroupThree")) {
Add-ADGroupMember -Identity $Group -Members $Computer
}
关于powershell - 使用Powershell在任务序列期间将计算机添加到多个Active Directory组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43981614/