我对PowerShell不是很熟悉,但我正在努力学习。遗憾的是,我无法在其他地方找到解决这个问题的方法。
这是我的剧本:
Import-Module ActiveDirectory
$DomainName = "OPMEIS"
$UserName = "ClientInstall"
$computers = Get-ADComputer -Filter {OperatingSystem -NotLike "*Server*"} | Select -ExpandProperty Name
foreach ($computer in $computers) {
try {
$AdminGroup = [ADSI]"WinNT://$computer/Administrators,group"
$User = [ADSI]"WinNT://$DomainName/$UserName,user"
$AdminGroup.Add($User.Path)
} catch [Exception] {
echo $_.Exception.GetType().FullName, $_.Exception.Message
}
}
域中有两台计算机:WORKSTATION1和WORKSTATION2。它们非常相似。奇怪的是,脚本执行它在第一次迭代中应该做的事情(WORKSTATION1)(编辑:我很确定其他人在这台计算机上手动完成它),但在第二次迭代(WORKSTATION2) ,抛出以下异常:
format-default : The following exception occurred while retrieving member "distinguishedName": "The network path was not found.
"
+ CategoryInfo : NotSpecified: (:) [format-default], ExtendedTypeSystemException
+ FullyQualifiedErrorId : CatchFromBaseGetMember,Microsoft.PowerShell.Commands.FormatDefaultCommand
异常是由AdminGroup变量引起的。 这需要自动化,因为实际的工作站数量是未知的。如果有更好的方法,我很想听,但是让脚本运行会很好。
有什么想法吗?感谢...
PowerShell版本(Windows Server 2016):
Major Minor Build Revision
----- ----- ----- --------
5 1 14393 1770
修改 突破性发现:我需要将“.local”附加到WORKSTATION2,而不是WORKSTATION1。为什么会这样?
答案 0 :(得分:0)
尝试调整下一个代码段:
gwmi -query "select * from Win32_Group where sid='S-1-5-32-544'" -computername $env:computername|fl -force
供参考:
和