0
在我們曾經有過鬆動的權限,幾年前我們公司的文件服務器。 含義,有用戶傾向於擁有完全許可的文件夾。這是一件壞事(用戶有權利打,鎖定系統(以及它的備份),只讓自己進入列出所有文件夾,其中用戶(管理員除外)都允許完全訪問
我的目標:
掃描的文件夾中的文件服務器的文件夾(文件未免太多)和輸出
- 文件夾的完整路徑
- 安全標識引用
,如果有人有除了域管理員或SY fullaccess幹。
輸出將被罰款爲:
Path, ACL E:\share\projectfolder, Domain\10JohnDoe E:\share\commonfolder, Domain\Everyone ...
這是我有,但它是遠遠不夠的:
##define variable
$path = "E:\Share"
## begin script
foreach ($file in Get-Childitem $path -Recurse -Directory) {
if (Get-Acl $file.FullName |
select -ExpandProperty Access |
where {$_.IdentityReference -notlike "AT\Domain Admins" -and
$_.IdentityReference -notlike "NT AUTHORITY\SYSTEM" -and
$_.AccessControlType -like "Allow" -and
$_.FileSystemRights -like "FullControl"}
) {
Write-Host $file.FullName >> e:\check_acl.txt
Get-Acl $file.FullName |
select -ExpandProperty Access |
where {$_.IdentityReference -notlike "AT\Domain Admins" -and
$_.IdentityReference -notlike "NT AUTHORITY\SYSTEM" -and
$_.AccessControlType -like "Allow" -and
$_.FileSystemRights -like "FullControl"
} >> e:\check_acl.txt
}
}
但我想,我不能得到輸出(入文件!) 像那樣。
你好弗羅德, 這似乎真的做......我感謝你! 當然沒有物體的真正理解和編程語言本身就很難... –
沒問題。我建議閱讀一些教程來熟悉對象和管道,這在PowerShell中非常重要。我避免了大多數別名和快捷方式(除了創建正則表達式...'%'='Foreach-Object'),以便您可以在Technet上找到cmdlet並閱讀它們。瞭解您正在運行的代碼很重要。這就是我們學習的方式。 :-)祝你好運,歡迎來到StackOverflow。順便說一句。如果你認爲這是正確的答案,那麼mark使用答案左邊的複選標記,所以我們可以關閉這個問題。 –
大多數的訪問權限使用繼承('IsInherited'屬性),所以這將是值得測試'$ path'目錄本身,以及除其子文件夾。下面是一些有用的鏈接,@DavidBrunner:理解流,重定向,以及寫主機在PowerShell中(https://blogs.technet.microsoft.com/heyscriptingguy/2014/03/30/understanding-streams-redirection-and -write宿主中-的powershell /)和[寫主機是有害的(http://www.jsnover.com/blog/2013/12/07/write-host-considered-harmful/) – JosefZ