我必须使用Powershell从 Activity 目录中的组策略中修改gPCMachineExtensionNames属性字符串。为此,我首先要读取现有的字符串,对其进行修改,然后将旧字符串替换为修改后的字符串。
该属性在策略容器中的以下位置定义:
CN = {POLICY GUID},CN =策略,CN =系统,DC = [域],DC = [COM]
当我使用ADSI Edit浏览属性时,gPCMachineExtensionNames的值正确显示为[{827D319E-6EAC-11D2-A4EA-00C04F79F83A} {803E14A0-B4FB-11D0-A0D0-00A0C90F574B}]
我尝试使用ldap查询选择值:
'(objectClass=groupPolicyContainer)'
([adsisearcher]'(objectCategory=groupPolicyContainer)').FindAll() | ForEach-Object {
New-Object -TypeName PSCustomObject -Property @{
abc = $_.Properties.gPCMachineExtensionNames -join ''
}
}
但是结果是空的。我只能查询其他属性,例如name,cn,USNCreated,displayname等。这里显示正确。为什么无法返回属性gPCMachineExtensionNames的值?
我可以进行另一个LDAP查询,还是可以使用其他方法查询或修改Windows Server 2008 R2上的属性?
谢谢您的支持!
最佳答案
检查名称的大小写:
$allGPOs = ([adsisearcher]'(objectCategory=groupPolicyContainer)').FindAll()
# this returns nothing
$allGPOs | % { $_.Properties.gPCmachineExtensionNames }
# this returns what you expect
$allGPOs | % { $_.Properties.gpcmachineextensionnames }
$allGPOs | ForEach-Object {
New-Object -TypeName PSCustomObject -Property @{
abc = $_.Properties.gpcmachineextensionnames -join ''
}
}
我在这里假设
$allGPOs.GetType()
是SearchResultCollection,而$allGPOs[0].Properties.GetType()
是SearchResultCollection,它们的行为与“常规”名称/值对略有不同。
关于powershell - 通过Powershell编辑gPCMachineExtensionNames属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20677683/