gpt4 book ai didi

powershell - Powershell获取计算机AD OU并与定义的字符串进行比较

转载 作者:行者123 更新时间:2023-12-02 23:54:28 25 4
gpt4 key购买 nike

我需要获取AD OU计算机所属的计算机并与指定的字符串进行比较。我将在一些运行Windows 7 Embedded Powershell v2的计算机上在PC上运行脚本。

我已经在Windows 10上尝试了该脚本,并且可以正常工作。但是,在带有Powershell v2的嵌入式PC上出现此错误:

Method invocation failed because [System.DirectoryServices.PropertyValueCollection] doesn't contain a method named 'Split'.


    $ComputerName = $env:computername
$Filter = "(&(objectCategory=Computer)(Name=$ComputerName))"

$DirectorySearcher = New-Object System.DirectoryServices.DirectorySearcher
$DirectorySearcher.Filter = $Filter
$SearcherPath = $DirectorySearcher.FindOne()
$DistinguishedName = $SearcherPath.GetDirectoryEntry().DistinguishedName

$OUName = ($DistinguishedName.Split(","))[1]
$OUMainName = $OUName.SubString($OUName.IndexOf("=")+1)

# Compare OU name to specified string
If ($OUMainName -eq "BT")
{
$PreferredServer=$BTServer
$AlternativeServer=$TTServer

任何帮助将不胜感激。我对Powershell很陌生。
谢谢。

最佳答案

所以线...

$DistinguishedName = $SearcherPath.GetDirectoryEntry().DistinguishedName

返回一个类型的对象...
[System.DirectoryServices.PropertyValueCollection]

并且该对象类型不支持split方法。我认为您可能对AD对象的字符串化输出很感兴趣,因此您只需要在拆分之前将name属性转换为字符串,既可以在存储到变量中,也可以在这样的拆分时...

在变量存储中
$DistinguishedName = ($SearcherPath.GetDirectoryEntry().DistinguishedName).tostring()

在拆分调用时
$OUName = ($DistinguishedName.tostring().Split(","))[1]

就是说,我不太确定您是否只想访问PropertyValueCollection对象,在将其转换为字符串之前,不需要额外选择目标Property的特定Value属性(可能是OU还是路径?) 。

关于powershell - Powershell获取计算机AD OU并与定义的字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48737267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com