Powershell 值未存储在变量上

Powershell 值未存储在变量上,powershell,object,nested,storage,Powershell,Object,Nested,Storage,我试图将带有add member的函数值存储在$GroupStorage变量上,但它不存储在变量上?有人知道怎么做吗?我的目标是在$storageHolder中添加它 $NestedGroupUsers = Get-ADUsers_cachedV2 -GroupName $nestedmember.distinguishedName $GroupStorage = $NestedGroupUsers | Add-Member -NotePropertyName M

我试图将带有add member的函数值存储在$GroupStorage变量上,但它不存储在变量上?有人知道怎么做吗?我的目标是在$storageHolder中添加它

        $NestedGroupUsers = Get-ADUsers_cachedV2 -GroupName $nestedmember.distinguishedName
        $GroupStorage = $NestedGroupUsers | Add-Member -NotePropertyName MainParentGroup -NotePropertyValue $ADgroupname.name  -Force 
        $resultHOlder += $GroupStorage
============================================================================================== 这是我的全部密码。此代码正在从嵌套组获取所有用户

function Get-CachedADUSER($AduserCached) {
    # $AduserCached = $resultHOlder
    $cachedResults = Get-Variable -Scope Global -Name $AduserCached  -ErrorAction SilentlyContinue
    if ($null -ne $cachedResults) {
        $existing = write-host "Check: i found existing"
        return $cachedResults.value , $existing
    }
    else {
        $searching = write-host "Check: Searching"
        $results = get-aduser $AduserCached -properties * #enabled, displayname, EmployeeNumber, LastLogonDate, PasswordLastSet
        Set-CachedADUSER -setAduserCached $AduserCached -value $results
     
        return $results.value , $searching
    }
}

Function Set-CachedADUSER($setAduserCached, $value) {
    Set-Variable -Scope Global -Name $setAduserCached -Value $value
    return $value
}
function Get-ADUsers_cachedV2 { 
    param ( 
        [Parameter(ValuefromPipeline = $true, mandatory = $true)][String] $GroupName
    ) 
    [int]$circular = $null

    # result holder
    $resultHolder = @()
    $table = $null 
    $nestedmembers = $null 
    $adgroupname = $null   
    $GroupStorage = @()  
    $NestedGroupUsers = @()

    # get members of the group and member of
    $ADGroupname = get-adgroup $groupname -properties memberof, members

    # $ADGroupname = Get-CachedGroupMembership -GroupName $groupName -properties memberof, members

    # list all members as list (no headers) and save to var
    $memberof = $adgroupname | select -expand memberof 
       
    if ($adgroupname) {  
        if ($circular) { 
            $nestedMembers = Get-ADGroupMember -Identity $GroupName -recursive 
            $circular = $null 
        } 
        else { 
            $nestedMembers = Get-ADGroupMember -Identity $GroupName | sort objectclass -Descending
            # if get adgroupmember returns nothing, it uses the members for ordinary getADGroup
            if (!($nestedmembers)) {
                $unknown = $ADGroupname | select -expand members
                if ($unknown) {
                    $nestedmembers = @()
                    foreach ($member in $unknown) {
                        $nestedmembers += get-adobject $member #-ErrorAction SilentlyContinue
                    }
                }
            }
        } 
        # loops through each member
        ForEach ($nestedmember in $nestedmembers) { 
            # creates the properties into a custom object. 
            $Props = @{
                Type            = $nestedmember.objectclass;
                Name            = $nestedmember.name;
                DisplayName     = "";
                ParentGroup     = $ADgroupname.name;
                Enabled         = "";
                EmployeeNumber  = "";
                LastLogonDate   = "";
                PasswordLastSet = "";
            } 
            # if member object is a user
            if ($nestedmember.objectclass -eq "user") { 
                # saves all the properties in the table. 
                $nestedADMember = Get-CachedADUSER -AduserCached $nestedmember.Name  -properties * #enabled, displayname, EmployeeNumber, LastLogonDate, PasswordLastSet
                $table = new-object psobject -property $props 
                $table.enabled = $nestedadmember.enabled
                $table.name = $nestedadmember.samaccountname
                $table.displayname = $nestedadmember.displayname
                $table.EmployeeNumber = $nestedadmember.EmployeeNumber
                $table.LastLogonDate = $nestedadmember.LastLogonDate
                $table.PasswordLastSet = $nestedadmember.passwordLastSet
                    
                #save all in 1 storage
                $resultHOlder += $table #| select type, name, displayname, parentgroup, enabled, EmployeeNumber, LastLogonDate, PasswordLastSet
            } 


            # if member object is group
            elseif ($nestedmember.objectclass -eq "group") {  
                $table = new-object psobject -Property $props 

                # if circular, meaning the groups member of list contains one of its members. 
                # e.g. if group 2 is a member of group 1 and group 1 is a member of grou 2
                if ($memberof -contains $nestedmember.distinguishedname) { 
                    $table.comment = "Circular membership" 
                    $circular = 1 
                } 
                $NestedGroupUsers = Get-ADUsers_cachedV2 -GroupName $nestedmember.distinguishedName
                $GroupStorage = $NestedGroupUsers | Add-Member -NotePropertyName MainParentGroup -NotePropertyValue $ADgroupname.name  -Force 
                $resultHOlder += $NestedGroupUsers
            } 
            else { 
                if ($nestedmember) {
                    $table = new-object psobject -property $props
                    $resultHolder += $table #| select type, name, displayname, parentgroup, enabled, EmployeeNumber, LastLogonDate, PasswordLastSet
                }
            } 
        } 
    } 
    return   $resultHOlder 

}
function Get-NestedGroupUsers_cachedV2 {
    param ( 
        [Parameter(Mandatory = $true)][String]$FileName,
        [Parameter(Mandatory = $true)][String]$searchFilePath
    )
    $storageHolder = @()
    $groupList = Get-Content $searchFilePath 
    $groupList |  ForEach-Object { 
        $allusers = Get-ADUsers_cachedV2 -GroupName $_
        $storageHolder += $allusers  
       
    }
    $storageHolder | Export-Csv -Path "C:\Users\***\***\$FileName.csv" -NoTypeInformation #-Force
} 

您的$GroupStorage变量可能是空的

将-PassThru添加到addmember命令,该命令将修改后的对象沿管道发送到$GroupStorage。添加成员不返回没有该开关的任何对象

$GroupStorage = $NestedGroupUsers | Add-Member -NotePropertyName MainParentGroup -NotePropertyValue $ADgroupname.name  -PassThru

您有充分的理由,但是“NotePropertyName”不存在?noteproperty的名称是“MainParentGroup”(带引号或不带引号均可使用,因为powershell需要一个字符串值,而它只是一个不带空格的术语。请尝试创建一个并细化您的问题陈述,因为我猜这些值实际上是存储的,但问题在于。换句话说,您如何得出结论以及如何验证?作为旁注:as它的成本是指数级的。我还强烈建议您创建一个单独的缓存来维护您的缓存。它将更好地将您的缓存密钥与系统变量分开,它将散列相同的性能和更简单的语法。