如何標題?Powershell正則表達式匹配,並不匹配在一個Foreach如果 - 然後不工作
我有這個腳本我一直在處理,它有兩個基本的事情: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只得到獨特的組,但這部分讓我難住....
在此先感謝...!
'AD \ DOMAIN'是不是有效的域短名稱 –
這就是廣告的域名(「AD」),這樣應該匹配「AD \ Domain Admins」之類的內容。即使如此,它不應該與其他人相匹配,還是他們都必須是真實的?我試圖編輯他們,但只有一個出來,它仍然不會匹配... – RichardX