function - 在 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
}
我怎样才能让它工作?
解决方案
你的括号是错误的。尝试这个:
Add-Member -MemberType NoteProperty -Name "Members" -Value (Get-Members $_.IdentityReference) -PassThru
-Value
由于括号,这将使 Get-Members 部分首先执行并将其值返回给属性。
顺便说一句,我建议您选择一个不同的名称,Get-Members
因为它太接近众所周知的Get-Member
cmdlet。
推荐阅读
- ruby - Sorbet:我如何编写通用工厂方法?
- simulation - Modelsim(Questasim 10.1)保存某个时间的结果并查看原理图数据
- python - Django formset 错误显示在打印中,但不在模板中
- c - 如何将多个变量数据存储在字符串/数组中
- xml - 如何访问 XSL for-each 标签中的“xmlns:”属性?
- linux - 从不同文件夹复制 .png 图像,将原始文件夹名称保留在 png 上
- vue.js - Vue - 从 vue 文件调用 beforeMount 方法
- javascript - Flask 动态用户输入,无需重定向或重新加载
- javascript - 无法读取nodejs中未定义的属性'body'
- laravel - 侦听器返回 false 只会停止将事件传播给其他侦听器吗?或者也停止相关事件?(拉拉维尔)