我尝试设置SCCM的任务序列,以自动将笔记本电脑添加到3个Active Directory组。我已经设置了一个步骤来执行此操作,并且正在调用Powershell脚本来执行此操作。该脚本应该作为网络管理员运行,所以我不相信我在授权方面遇到任何问题,但我对Powershell来说是新手,所以我相信我的问题在于我的语法。我的脚本非常简单,我看到的所有资源似乎都让Powerershell过于复杂,因为我需要做的事情。这是我的剧本:
SELECT d.name
FROM `database1`.domains AS d
WHERE (SELECT COUNT(u.id) FROM `database2`.users u) > 0
$ env:computername应该自动收集在任务序列中早先建立的计算机名称,并且需要使用powershell添加后面的$,我已找到。
对此的任何帮助都将非常感激。
编辑:我终于让它工作了,下面是我发现并用于其中一个powershell脚本的代码 -
ADD-ADGroupMember "GroupOne" -members "$env:computername$"
ADD-ADGroupMember "GroupTwo" -members "$env:computername$"
ADD-ADGroupMember "GroupThree" -members "$env:computername$"
答案 0 :(得分:1)
不是尝试从环境变量中编写计算机的帐户名,而是使用它来添加到组中,只需从Active Directory中获取计算机对象:
$Computer = Get-ADComputer -Identity $env:ComputerName
foreach ($Group in @("GroupOne", "GroupTwo", "GroupThree")) {
Add-ADGroupMember -Identity $Group -Members $Computer
}
答案 1 :(得分:0)
由于您提到您没有可用的AD cmdlet。以下是使用ADSI的方法:
$filter = "(&(objectCategory=computer)(objectClass=computer)(cn=$env:COMPUTERNAME))"
$ComputerDN = ([adsisearcher]$filter).FindOne().Properties.distinguishedname
$GroupName = "GroupOne"
$filter = "(&(objectClass=Group)(cn=$GroupName))"
$GroupDN = ([adsisearcher]$filter).FindOne().Properties.distinguishedname
$Group = [adsi]"LDAP://$GroupDN"
$Group.Add($ComputerDN)
$GroupName = "GroupTwo"
$filter = "(&(objectClass=Group)(cn=$GroupName))"
$GroupDN = ([adsisearcher]$filter).FindOne().Properties.distinguishedname
$Group = [adsi]"LDAP://$GroupDN"
$Group.Add($ComputerDN)
$GroupName = "GroupThree"
$filter = "(&(objectClass=Group)(cn=$GroupName))"
$GroupDN = ([adsisearcher]$filter).FindOne().Properties.distinguishedname
$Group = [adsi]"LDAP://$GroupDN"
$Group.Add($ComputerDN)
如果你有更多的团体,那么它可能值得变成一个功能。
只需确保无论运行何种用户上下文,都有权将成员添加到该组。