Powershell 错误添加到数组

Sam*_*cas 5 powershell

嗨,我正在尝试运行一个脚本,将网络中的用户放入一个数组中,以便将它与我将要获取的其他数据(例如通讯组)一起输出到 csv 文件。

我正在运行的代码脚本出现错误:

方法调用失败,因为 [System.Management.Automation.PSObject] 不包含名为“op_Addition”的方法。

该脚本是一个简单的 for 循环:

$ActiveDirectoryList=@() 
$UserDetails = get-aduser -filter {enabled -eq $true} -properties * | Select DisplayName,EmailAddress, SAMAccountName
$counter = 0
foreach($User in $UserDetails){

    $ActiveDirectoryList = New-Object PSObject
    $Users = get-aduser $User.SAMAccountName -properties * 
    if(!$Users.EmailAddress -eq ""){
        $counter++
        $ActiveDirectoryList | Add-Member -MemberType NoteProperty -Name "DisplayName" -Value $Users.DisplayName
        $ActiveDirectoryList | Add-Member -MemberType NoteProperty -Name "Email Address" -Value $Users.EmailAddress 
        write-host $Users.DisplayName
        $ActiveDirectoryList+=$ActiveDirectoryList
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试在互联网上寻找解决方案,但他们似乎没有解决任何问题。

Mat*_*sen 9

不要为数组重复使用相同的变量名,以及要添加到数组中的单个对象。在这里,我已将PSObject变量重命名为$ActiveDirectoryObject

$ActiveDirectoryList=@() 
$UserDetails = get-aduser -filter {enabled -eq $true} -properties * | Select DisplayName,EmailAddress, SAMAccountName
$counter = 0
foreach($User in $UserDetails){

    $ActiveDirectoryObject = New-Object PSObject
    $Users = get-aduser $User.SAMAccountName -properties * 
    if(!$Users.EmailAddress -eq ""){
        $counter++
        $ActiveDirectoryObject | Add-Member -MemberType NoteProperty -Name "DisplayName" -Value $Users.DisplayName
        $ActiveDirectoryObject | Add-Member -MemberType NoteProperty -Name "Email Address" -Value $Users.EmailAddress 
        write-host $Users.DisplayName
        $ActiveDirectoryList += $ActiveDirectoryObject
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,我实际上是在遵循一位同事编写的脚本,而他的脚本中也有相同的内容。他说它有效,所以我没有理由相信它直到现在才有效!感谢您的版本有效! (3认同)