【问题标题】:Passing results to a -like filter in PowerShell将结果传递给 PowerShell 中的类似过滤器
【发布时间】:2019-01-31 21:08:30
【问题描述】:

我正在尝试创建一个脚本来处理我的重复性任务。基本上我需要获取管理特定文件夹的人的 ID。
我的第一个脚本告诉我分配给指定文件夹的各种安全组。第二个脚本采用指定的 AD 组并告诉我谁管理它。理想情况下,我只想运行脚本,输入我的文件夹名称并让它告诉我谁管理分配的各种 AD 组。然后我就可以去做剩下的了。但是我对第一个脚本的输出有疑问。我有它,所以它正确显示在控制台中,但我无法弄清楚如何将这些结果放入第二个脚本中的过滤器中。

脚本一:

$FN = Read-Host -Prompt "Please enter Folder name"
$ADG = (Get-Acl $FN).Access |
       Select IdentityReference |
       Where-Object IdentityReference -like '*SL*'
foreach ($ACL in $ADG) {
    $Group.Fullname + ($ACL.IdentityReference.Value.Split('\'))[1] | Out-String
} 

脚本二:

Get-ADGroup -Filter {Name -like "use output here"} -Properties managedby |
    Select managedby

如果能提供任何帮助,我将不胜感激。特别是如果我在吠叫错误的 PowerShell 命令!我第一次尝试在脚本中使用多个查询。

【问题讨论】:

  • 通常情况下,只需将两段代码放在同一个脚本中 - 这样就可以将 $Var 从第一部分传递到第二部分。 [grin] ///// 顺便说一句,$Group 在你的第一个脚本中来自哪里?

标签: powershell filter output


【解决方案1】:

我不太清楚 $Group.Fullname + (...)[1] | Out-String 应该做什么,但假设您想为第一个命令中的每个身份引用运行第二个命令,您可以执行以下操作:

Get-Acl $FN |
    Select-Object -Expand Access |
    Select-Object -Expand IdentityReference |
    Where-Object { $_.Value -like '*SL*' } |
    ForEach-Object {
        $name = $_.Value.Split('\', 2)[-1]
        Get-ADGroup -Filter "Name -like '*${name}*'" -Property ManagedBy
    } |
    Select-Object -Expand ManagedBy |
    Get-ADUser

【讨论】:

  • $Group.Fullname +...... 剥离了 ACL 的域部分,因此我可以只将组名本身传递给命令。这让我快到了,现在我只需要看看我能不能把它展示给他们管理的小组。我肯定会将您的脚本与我的脚本进行比较,以了解哪些内容可以更好地理解。谢谢!
  • @S.Raines 您可以将尾随的Select-Object | Get-ADUser 直接放在Get-ADGroup 之后,然后输出一个包含组名($name)及其经理的自定义对象。
  • 得到脚本,以我需要的方式提供信息。再次感谢 Ansgar!
猜你喜欢
  • 2011-07-10
  • 1970-01-01
  • 2011-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
相关资源
最近更新 更多