我打了一些PowerShell代碼動態生成AD安全組,然後將它們應用到文件夾的網絡共享,但與解決新創建的組的問題。問題有了新的廣告羣組,設置ACL和網絡文件夾
考慮一下:
import-module activedirectory
for ($i = 0; $i -lt 10; $i++) {
$group = New-ADGroup -Path "OU=Groups,OU=Department,DC=Domain,DC=Network" -Name "z-test-group-$i" -GroupScope DomainLocal -GroupCategory Security -PassThru
$acl = Get-Acl C:\Temp
$permission = $group.SID,"FullControl","Allow"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission
$acl.SetAccessRule($accessRule)
$acl | Set-Acl C:\Temp
}
工作正常。但是,如果我將文件夾更改爲網絡文件夾,例如G:\ Temp或\\ domain.network \ DFS \ GroupShare \ Temp,我會收到'方法失敗並出現意外的錯誤代碼1337'。
我累使用SetACL.exe和接收到的類似的錯誤:
C:\Temp\SetACL.exe -on "\\domani.network\dfs\GroupShare\Temp" -ot file -actn ace -ace "n:$GroupSID;p:full;s:y"
SetACL finished with error(s):
SetACL error message: The call to SetNamedSecurityInfo() failed
Operating system error message: The security ID structure is invalid.
INFORMATION: Processing ACL of: <\\?\UNC\domain.network\dfs\GroupShare\Temp>
如果我說等待10至20秒,然後再次運行Set-ACL(或SetACL.exe)的代碼的部分,它成功完成。
起初我以爲這與域控制器(其中4個是2003和2008 R2的混合體)直接相關,但它在本地文件夾上正常工作的事實令人感興趣(並令人討厭)。
我的代碼的本地文件夾執行,然後在網絡文件夾中做了Wireshark的痕跡。主要的區別是試圖將ACL應用到網絡文件夾我看到LDAP查詢及(其中包括)以下的SMB響應時:
NT Trans Response, FID: 0x0040, NT SET SECURITY DESC, Error: STATUS_INVALID_SID
我以爲是什麼原因導致我的Set-ACL命令失敗。
基礎網絡文件系統的EMC Celerra 6.0.xx.我對這種技術非常不熟悉,但是根據我的理解,它擁有某種SID緩存,它可以解釋上述錯誤(即使AD也不知道新組)。
所以我想有兩個問題:
- 有沒有辦法解決這個(PowerShell中/ C#ECT)不 涉及睡覺/等待? IE,設置ACL即使SID是 無效?
- 如果的EMC Celerra是問題(我假設它是),是否有任何 辦法可以迫使它來更新它的「SID高速緩存」或任何可能?
我readvariousarticles了這個問題,但沒有似乎有一個有效的分辨率(或爲我工作)。
感謝您的幫助。
里斯。
是的,這總是我們的後備選擇。 但是由於延遲,後臺作業將不得不等待,並且當您設置500,000個文件夾(和700萬個文件)的權限時,則可以運行很長的腳本執行時間;) – 2012-03-15 22:39:46