web-dev-qa-db-ja.com

Powershellで所有者を再帰的に変更しますか?

Powershellを使用して、フォルダーの所有者を再帰的に変更しようとしています。

私は基本的にこのコードを使用しています:

$acct1 = New-Object System.Security.Principal.NTAccount('DOMAIN\Enterprise Admins')
$profilefolder = Get-Item MyFolder
$acl1 = $profilefolder.GetAccessControl()
$acl1.SetOwner($acct1)
set-acl -aclobject $acl1 -path MyFolder

これにより、最初のレベルで所有権が変更されますが、サブフォルダーやファイルの所有権は変更されません。スコープをMyFolderのすべてのコンテンツに拡張する方法はありますか?

9

Takeownコマンドは、実行しようとしていることを正確に実行します。これは通常のWindowsユーティリティです。

このスニペットは現在のユーザーに所有権を適用しますが、任意のユーザーに設定できます。

http://technet.Microsoft.com/en-us/library/cc753024(v = ws.10).aspx

takeown /f "c:\folder\subfolder" /r

問題が発生した場合は、管理者権限でcmd/powershellウィンドウを実行していることを確認してください。同じことが他のPowerShell固有の回答にも当てはまります。

16
scaryman

Set-ACLコマンドレットはパイプからパスパラメーターを取得するため、ディレクトリのコンテンツをパイプして各アイテムの所有者を設定することをお勧めします。

dir -r c:\Users\goyuix\temp | set-acl -aclobject $acl1

これにより、自分のプロファイルの一時ディレクトリにあるすべてのフォルダー/ファイルの所有者が再帰的に設定されます。

5
Goyuix