Powershell数组问题

时间:2014-07-15 23:19:16

标签: powershell

我是Powershell的新手。我想要做的是通过文本文件path.txt(其中包含超过500个目录列表) 然后我需要为每个目录分配AD安全组 然后显示每个小组的工作人员。

我已经完成了以下操作,它将遍历文本文件并将ACP转储给属于域的每个目录的ACP" work"

我知道自己需要做什么。 将目录文本文件放入数组中 从数组中选择IdentityReference,FileSys。对于每个IdentityReference,转储此AD组中的用户。

我想输出到文本文件/ csv 目录 显示访问权限的AD组。最后和该组中的用户。

重复这个过程。 我已完成以下操作,只浏览前6个目录并仅显示安全组。

有人给我一个快速的想法吗?感谢

$path = "c:\path.txt"
$patharray = gc $path
$linebreak = "#########################"
get-acl $patharray[0..5] | select -ExpandProperty access | where {$_.IdentityReference -like "WORK*" } | ft -property IdentityReference,FileSys

1 个答案:

答案 0 :(得分:0)

我建议您查看活动目录模块(import-module activedirectory),该模块自动出现在任何AD服务器上,或者可以添加AD工具。

只需在本地控制台窗口中玩游戏即可:

$test = get-acl $path | select -expandproperty access
$group = $test[1].identityreference.value.split('\')[1]
get-adgroupmember $group

所以我将访问列表分配给变量($ test),我在\字符(cos Im lazy / amateur)上分割了一个结果值,然后我使用提供的cmdlet来获取成员资格列表。

$ test [1]是第一个组条目($ test [0]是特定用户),而.identityreferencevalue.split(' \')[1]只是意味着我抓住了第二个将字符串拆分为2个后的元素。

我希望这会有所帮助。我自己不是专家。 (Ed Wilson博客提供了一些关于在不使用cmdlet的情况下查询AD的好信息。您需要对组名进行一些验证,因为您可能有2个同名的组位于不同的容器中)

在您实际格式化输出之前,您需要管理的其他内容(例如格式表)是不必要的。因此,在收集数据之前,我不会浪费太多的能量格式。