如何获得头衔?
我有这个脚本我一直在做两件基本的事情:a)使用get-ntfsaccess来提取文件夹的安全性然后b)使用输出来查找有组的组成员访问。
$Outfile2 = "C:\Users\local\Documents\GroupMembers.csv"
$Header2 = "GroupName,Member"
Add-Content -Value $Header2 -Path $Outfile2
$RootPath = "p:\city\Department\building"
$Folders = get-childitem2 -directory -recurse -path $RootPath
foreach ($Folder in $Folders){
$ACLs = Get-NTFSAccess $Folder.fullname
Foreach ($ACL in $ACLs){
If ($Acl.accounttype -match 'group' -and $acl.Account.accountname -notmatch '^builtin|^NT AUTHORITY\\|^Creator|^AD\\Domain')
{
$members = Get-ADGroupMember $acl.Account.accountname.TrimStart("AD\\")
}
Foreach ($member in $members) {
$OutInfo = $ACL.Account.AccountName + "," + $member.samaccountname
Add-Content -Value $OutInfo -Path $OutFile2
}
}}
我希望能够过滤get-ntfsaccess的输出。我想只查找群组'和不是基本组的组(如内置,域管理员等),但我的匹配和不匹配不在脚本中工作。如果我采用完全相同的行并从提示符运行它 - 它可以工作。
PS C:\Windows\system32> $acl.Account.accountname -notmatch '^builtin|^NT AUTHORITY\\|^Creator|^AD\\Domain'
True
当作为脚本的一部分运行时 - 不起作用。我的输出包括所有域基本组和用户。我想也最终添加-unique只获得独特的群体,但这部分让我感到难过......
提前致谢...!
答案 0 :(得分:0)
我成功地做到了这一点:
((dir)[0] | get-acl).access | % { $_.IdentityReference } | ? { $_ -notmatch 'builtin|nt authority' }
我目前无法使用ntfsaccess进行测试,但get-acl的返回IdentityReference很可能是您尝试解析的相同字段。您可以尝试删除您的' ^。我还使用"myDomain\\Domain Admins"
进行了测试,并且按预期工作。
答案 1 :(得分:0)
所以我想通了。
三件事 - 1. Trimstart不接受' /'无论我如何逃避'它 2.必须使用get-adgroup来管道get-adgroupmember 3.然后IF被阻止错误,在每次迭代时通过$ ACLs写出每个结果
$Outfile2 = "C:\Users\local\Documents\GroupMembers.csvv"
$Header2 = "GroupName,Member"
Add-Content -Value $Header2 -Path $Outfile2
$RootPath = "p:\city\Department\building"
$Folders = get-childitem2 -directory -recurse -path $RootPath
foreach ($Folder in $Folders){
$ACLs = Get-NTFSAccess $Folder.fullname
Foreach ($ACL in $ACLs){
If ($Acl.accounttype -match 'group' -and $acl.Account.accountname -notmatch '^builtin|^NT AUTHORITY\\|^Creator|^AD\\Domain')
{$members = Get-adgroup $acl.Account.accountname.substring(3) | Get-ADGroupMember
Foreach ($member in $members) {
$OutInfo = $ACL.account.AccountName + "," + $member.samaccountname
Add-Content -Value $OutInfo -Path $OutFile2
}}}}