Windows 10 と Powershell を使用しています。ファイルの大きなディレクトリを新しいサーバーに移動しています。ファイルは簡単にコピーされますが、権限はコピーされません。ディレクトリの各レベルのすべての権限を保存し、新しい場所のファイルにすべてのレベルで同じ権限を与えることができる一連のスクリプトの作成に取り組んでいます。これは、ファイルへのアクセス許可を保存するために私が思いついたものです。(T:\ は、ファイルの移動元のディレクトリです)
注: get-acl と set-acl を使用するつもりでしたが、各ファイルの所有者を書き換えずに set-acl を使用できないようです。
$output = @()
ForEach ($item in (Get-ChildItem -Path T:\ -Recurse -Directory)) {
ForEach ($acl in ($item.GetAccessControl().Access)){
$output += $acl |
Add-Member `
-MemberType NoteProperty `
-Name 'Folder' `
-Value $item.FullName `
-PassThru
}
}
$output | Export-Csv -Path .\outfile.csv -NoTypeInformation
これは、必要な情報をファイルに保存するために機能します。私の問題は、ファイルが新しい場所にあるときにすべての権限を再読み込みすることです。私が見つけたものから、File.SetAccessControl(String, FileSecurity) メソッドを使用する必要があります。しかし、私がしようとしているすべてが思い通りに機能していません。
ここで何か助けはありますか?たぶん、私は自分の目標に向かってすべて間違っています。