2016-09-28 3 views
0

所有権を引き継ぎ、set-aclをフォルダにすることはできますか?私はフォルダの場所を持っているfolders.txtファイルを持っています。例についてはPowershellがset-aclより前のフォルダの所有権を持っています

D:\Dept\CC\NorthRiver\16-17\StaffAdministration 

は、その後、私は前年のフォルダ構造の新しい年を作成し、フォルダに一致する新しいフォルダ年に前の年のフォルダの権限と許可をコピーしています。私は問題に遭遇しましたが、フォルダの所有権のためです。私が所有者でない場合、特定のフォルダのアクセス許可を複製することができず、私はSet-ACL : The security identifier is not allowed to be the owner of this object.を受け取ることができますか?

私は(私に所有者を変更するが、それはどちらか動作しませんでした)行を追加してみました:

get-item $currentFolder.Replace("16-17", "15-16") | set-owner -Account 'VDB-TST1\Administrators' 

誰もが、私はこれを実現できるかのいずれかのアイデアを持っていますか? これは私が持っている完全なスクリプトです:PowerShellのにネイティブのSet-ACLコマンドレットはかなりひどいです

Function Get-FileName{ 
[CmdletBinding()] 
Param(
    [String]$Filter = "|*.*", 
    [String]$InitialDirectory = "C:\") 

    [void][System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") 
    $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog 
    $OpenFileDialog.initialDirectory = $InitialDirectory 
    $OpenFileDialog.filter = $Filter 
    [void]$OpenFileDialog.ShowDialog() 
    $OpenFileDialog.filename 
} 


    #Get and Set the ACL to the new years folder structure 
    foreach ($currentFolder in (GC (Get-FileName -InitialDirectory $env:USERPROFILE\Desktop -Filter "Text files (*.txt)|*.txt|All files (*.*)|*.*"))) { 
    md $currentFolder # Create Folder 
    get-item $currentFolder.Replace("16-17", "15-16") | set-owner -Account 'VDB-TST1\Administrators' 
    Get-ACL $currentFolder.Replace("16-17", "15-16") | Set-ACL $currentFolder 
} 

答えて

1

は、私はあなたがコピーするrobocopyを使用することができます別の方法として

(Get-Item $currentFolder.Replace("16-17", "15-16")).GetAccessControl('Access') | Set-ACL $currentFolder 

Get-ACL $currentFolder.Replace("16-17", "15-16") | Set-ACL $currentFolder 

を変更してみてください、あなたがthis post.で説明したのSet-ACLおよびGet-ACLの同じ制限に実行していると思います1つのディレクトリからntfsアクセス権を取得し、別のディレクトリに適用します。

robocopy $currentFolder.Replace("16-17", "15-16") $currentfolder /copy:S /SECFIX 

これが役に立ちます。

+0

これは、作成しているため、新しいフォルダを同じ所有者に保つことはできません。私は同じ所有者を維持したい場合は好奇心のちょうどまたこれも可能でしょうか? –

+0

これは、NTFSファイルのアクセス許可のみを設定しています。 robocopyは権限を設定するだけで、実際にはファイルやフォルダをコピーしません。 Powershellでフォルダの所有者を設定したい場合は、takeown.exeか、[Boe Proxが作成したより洗練されたソリューション](https://learn-powershell.net/2014/06/24/changing)を参照する必要があります。 -ownership-of-file-or-folder-using-powershell /)を使用します。 – StephenP

0

。利用可能なNTFSモジュールを使用することをお勧めします。私はSet-ACLで何度も試してみましたが、実際には役に立たず、むしろ時間を無駄にしています。

関連する問題