9

現在、Vista32ビットを使用しています。Windowsセキュリティグループ「Everyone」を追加して、ディレクトリとそのすべてのサブディレクトリおよびすべてのファイルを完全に制御するにはどうすればよいですか?使用できるPowerShellスクリプトはありますか?

ありがとう!

4

3 に答える 3

13

martonaのスニペットを拡張し、すべてのフォルダーとサブフォルダーへのアクセスを許可することができました。これが私のコードです-

$FilesAndFolders = gci "c:\data" -recurse | % {$_.FullName}
foreach($FileAndFolder in $FilesAndFolders)
{
    #using get-item instead because some of the folders have '[' or ']' character and Powershell throws exception trying to do a get-acl or set-acl on them.
    $item = gi -literalpath $FileAndFolder 
    $acl = $item.GetAccessControl() 
    $permission = "Everyone","FullControl","Allow"
    $rule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission
    $acl.SetAccessRule($rule)
    $item.SetAccessControl($acl)
}
于 2010-12-16T22:32:08.610 に答える
7

「ネイティブ」のPowerShellの方法が必ずしも最良の方法であるとは限りません。このような場合でも、icacls.exeを使用します。古き良きexeはPowerShellでかなりうまく機能することを忘れないでください。設定して実行するディレクトリにcdするだけです。

icacls $pwd /grant "Everyone":(OI)(CI)F

これにより、Everyoneに現在のディレクトリへのフルアクセスが許可されます(権限の継承を介して)。これは、dir構造内のEveryoneに対する明示的な拒否がない限り機能するはずです。

于 2010-12-20T22:05:20.950 に答える
4
$acl = Get-Acl c:\mydir
$permission = "Everyone","FullControl","Allow"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission
$acl.SetAccessRule($rule)
$acl | Set-Acl c:\mydir
于 2010-12-16T19:12:38.847 に答える