首页 > 解决方案 > 在 PowerShell 中将函数的字符串作为 Add-Member 值参数返回

问题描述

我正在尝试创建一个显示文件夹权限和权限组成员的 Powershell 脚本。我有一个名为“Get-Members”的函数,它返回(作为逗号分隔的字符串)作为参数发送到函数的组成员。

现在我想知道如何将返回的字符串与 Add-Member 的 value 参数一起使用。我该如何使用该功能?我试过了

Add-Member -MemberType NoteProperty -Name "Members" -Value Get-Members($_.IdentityReference) -PassThru

但它似乎没有工作。

这是整个事情:

($root | get-acl).Access | Add-Member -MemberType NoteProperty -Name "Members" -Value Get-Members($_.IdentityReference) -PassThru  | Add-Member -MemberType NoteProperty -Name "Folder" -Value $($root.fullname).ToString()  -PassThru | select -Property Path, IdentityReference, FileSystemRights

这是功能:

Function Get-Members {
    param( [string]$group )

    $xyz=$group
    if ($group -match '\\')
    {
        $xyz=$group -creplace '^[^\\]*\\', ''
    }

    $Group = [ADSI]"LDAP://cn=$xyz,ou=SecurityGroups,ou=Accounting,ou=Services,dc=CONTOSO,dc=ny,dc=local"

$Members = $Group.Member | ForEach-Object {[ADSI]"LDAP://$_"}

$combined = $Members | select -ExpandProperty name

$result= $combined -join ","

return $result

}

我怎样才能让它工作?

标签: functionpowershell

解决方案


你的括号是错误的。尝试这个:

Add-Member -MemberType NoteProperty -Name "Members" -Value (Get-Members $_.IdentityReference) -PassThru

-Value由于括号,这将使 Get-Members 部分首先执行并将其值返回给属性。

顺便说一句,我建议您选择一个不同的名称,Get-Members因为它太接近众所周知的Get-Membercmdlet。


推荐阅读