在 AD:\ 提供程序中使用 Test-Path 时如何转义逗号

问题描述 投票:0回答:1

我有一个脚本,使用

Test-Path
AD:
驱动器来检查 Active Directory OU 列表是否存在。有几个 OU 在
distinguishedName
中带有逗号。

当我查找这些项目的

distinguishedName
值时,我看到逗号以传统方式用 '\' 字符转义。 此 DN 可与
Get-ADOrganizationalUnit
配合使用,但使用
Test-Path AD:\ + distinguishedName

时会引发错误

例如:

OU=Soz, Eggs and Chips,DC=BobsCafe,DC=co,DC=uk1

我可以这样获取 OU 属性:

Get-ADOrganizationalUnit "OU=Soz\, Eggs and Chips,DC=BobsCafe,DC=co,DC=uk"

但是如果我尝试这个:

Test-Path "AD:\OU=Soz\, Eggs and Chips,DC=BobsCafe,DC=co,DC=uk"

它抛出此错误(三次!)并返回

True

Test-Path : The object name has bad syntax
At line:1 char:1
+ Test-Path "AD:\OU=Soz\, Eggs and Chips,DC=BobsCafe,DC=co,DC=uk
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (\\RootDSE\OU=So...afe,DC=co,DC=uk:String) [Test-Path], ADException
    + FullyQualifiedErrorId : ADProvider:ItemExists::ADError,Microsoft.PowerShell.Commands.TestPathCommand

我也尝试过这个:

Test-Path 'AD:\OU=Soz, Eggs and Chips,DC=BobsCafe,DC=co,DC=uk'

没有错误,但它返回

False
,即使 OU 存在。

这三个尝试也都得到了相同的结果:

Test-Path 'AD:\OU=Soz`, Eggs and Chips,DC=BobsCafe,DC=co,DC=uk'

Test-Path 'AD:\OU=Soz`2C Eggs and Chips,DC=BobsCafe,DC=co,DC=uk'

Test-Path 'AD:\OU=Soz\2C Eggs and Chips,DC=BobsCafe,DC=co,DC=uk'

我该怎么做?

powershell active-directory
1个回答
0
投票

您应该使用 ActiveDirectory PowerShell 模块。如果您的计算机上安装了 Microsoft 远程服务器管理工具,则也会安装必要的 PowerShell 模块。您可以通过在 PowerShell 中输入:

Get-Module -ListAvailable -Name ActiveDirectory
来检查是否拥有它。 如果您没有安装它(如果您管理 AD,那么您确实应该安装),您可以从已安装的计算机上获取这两个 DLL,这样您就可以在不安装任何内容的情况下使用 AD PowerShell 命令。

安装 AD PowerShell 模块后,验证 OU 是否存在非常简单:

$ouexist = $true
try
{
    Get-ADOrganizationalUnit -Identity 'DC=fully,DC=qualified,DC=domain'
}
catch
{
    $ouexist = $false
}
© www.soinside.com 2019 - 2024. All rights reserved.