Powershell 值未存储在变量上
我试图将带有add member的函数值存储在$GroupStorage变量上,但它不存储在变量上?有人知道怎么做吗?我的目标是在$storageHolder中添加它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
$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它的成本是指数级的。我还强烈建议您创建一个单独的缓存来维护您的缓存。它将更好地将您的缓存密钥与系统变量分开,它将散列相同的性能和更简单的语法。