powershell - 通过Powershell编辑gPCMachineExtensionNames属性

标签 powershell ldap ldap-query group-policy adsi

我必须使用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/

相关文章:

python - 如何查找用户所属的所有组? (LDAP)

msbuild - 异常消息 : TF270015: 'MSBuild.SonarQube.Runner.exe' returned an unexpected exit code. 预期 '0' ;实际 '-532462766'

active-directory - LDAP 查询已删除的用户

r - 如何使用 R 运行 ldap 查询?

powershell - 你能用powershell在应用程序之间切换吗

使用 UTF-8 编码的 Powershell 字符串变量

node.js - npm activedirectory 获取 objectGUID

active-directory - LDAP 组成员身份(包括域用户)

PowerShell 中的 .NET 类文档?

git - SSH 注册机 "no such file or directory"