【问题标题】:Issue with passing variable to get-aduser cmdlt将变量传递给 get-aduser cmdlt 的问题
【发布时间】:2018-05-09 19:51:01
【问题描述】:

刚开始使用 Powershell,我遇到了障碍。我正在尝试遍历 AD 并获取所有 OU 的列表。从那里我试图获取每个 OU 中每个用户的用户帐户信息。为了测试,我已经能够获取所有 OU 的 DN 并输出到控制台,但是当我尝试将这些值传递给 get-aduser cmdlt 时,它失败了。

这是我的代码:

import-module activedirectory
$SearchBase = get-adorganizationalunit -filter * -searchbase "ou=users,ou=myUsers,dc=company,dc=local" -Properties CanonicalName | select-object -Property distinguishedName
foreach ($ou in $SearchBase) {
get-aduser -filter * -searchbase $ou -Properties givenName,sn,mail
}

我收到以下错误消息:“提供的 distinctName 必须属于以下分区之一...”

我认为问题在于将 $ou 传递给 get-aduser cmdlt 时,专有名称必须在 -searchbase 之后用引号括起来正确吗?如果是这样,不知道该怎么做。任何帮助表示赞赏。

【问题讨论】:

  • 尝试在您的选择对象中使用 -Expandproperty。这只会显示对象,不会显示其他内容。

标签: powershell active-directory


【解决方案1】:

您遇到的问题是您需要扩展您选择的属性。如果你运行,你会注意到:

get-adorganizationalunit -filter * -searchbase "ou=users,ou=myUsers,dc=company,dc=local" -Properties CanonicalName | select-object -Property distinguishedName

它将显示父属性:

有两种方法可以解决此问题:

  1. 在您的选择语句中展开属性:

    $SearchBase = get-adorganizationalunit -filter * -searchbase "ou=users,ou=myUsers,dc=company,dc=local" -Properties CanonicalName | select-object -ExpandProperty distinguishedName

  2. 调用foreach中的属性:

    foreach ($ou in $SearchBase) { get-aduser -filter * -searchbase $ou.distinguishedName -Properties givenName,sn,mail }

【讨论】:

    猜你喜欢
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多