【问题标题】:Export-Csv Cannot bind argument to parameter 'InputObject' because it is nullExport-Csv 无法将参数绑定到参数“InputObject”,因为它为空
【发布时间】:2018-09-18 05:32:43
【问题描述】:

我正在尝试通过 power shell 获取 AD 组成员信息。但我收到的消息是

Export-Csv:无法将参数绑定到参数“InputObject”,因为它为空。

Import-Module ActiveDirectory

$Path = Get-Location

$GroupName = Read-Host "Type the Group Name to check the members in it`t "

foreach ($group in $GroupName) {
    $users = @{}

    Get-ADUser -Filter '*' -Property Name, DisplayName | ForEach-Object {
        $users[$_.DistinguishedName] = $_
    }

    $MemberCount = (Get-ADGroup $group -Properties Member | Select-Object -Expand Member).Count

    Write-Host "`t Total Number of Users/Groups added on this Group : $MemberCount" -BackgroundColor DarkCyan

    $Info = Get-ADGroup $group -Properties Member |
            Select-Object -Expand Member |
            ForEach-Object { $users[$_] }

    $Info | Export-Csv -NoTypeInformation -Append -Force $Path\new.csv

【问题讨论】:

  • $Info 很可能包含 emtpy/null 值。我的猜测是您的一些组成员是孤立的(帐户被删除而没有删除组成员身份)或外部引用或类似的东西。将ForEach-Object { $users[$_] } 更改为ForEach-Object { if ($users.ContainsKey($_)) {$users[$_]} else {Write-Host "Unknown DN: ${_}"} }
  • 感谢 Angar - 按照您的建议进行编辑。它的工作。谢谢

标签: active-directory powershell-3.0


【解决方案1】:

错误意味着$Info 包含空/空值。他们出现的最可能原因是该组的成员不是由Get-ADUser 返回的。

您可以通过检查 $users 哈希表中是否存在密钥来避免此问题:

$Info = Get-ADGroup $group -Properties Member |
        Select-Object -Expand Member |
        ForEach-Object { if ($users.ContainsKey($_) {$users[$_]} }

如果您想进一步调查丢失的专有名称,您可以像这样收集它们:

$missing = Get-ADGroup $group -Properties Member |
           Select-Object -Expand Member |
           ForEach-Object { if (-not $users.ContainsKey($_) {$_} }

【讨论】:

  • 请在下方查看
猜你喜欢
  • 1970-01-01
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 2021-02-20
  • 2017-03-09
  • 2020-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多