PowerShellによるフォルダのアクセス権編集方法について質問があります。
ファイルサーバー直下に、「個人ドライブ」という共有フォルダを作成し、
各ユーザーのフォルダを保存しています。
(※各ユーザーのフォルダ名は、各ユーザーのユーザーIDと同一です。
123456というユーザーのフォルダは、\ファイルサーバー名\個人ドライブ\123456になります。)
そのユーザーのフォルダのフルコントロール権限を持っているのは、
そのフォルダと同じID名のユーザーのみで、他のユーザーは基本的にアクセス出来ません。
(例:\ファイルサーバー\個人ドライブ\123456 にアクセスできるのは、ユーザー:123456だけ)
そのフォルダのアクセス権については、
各ユーザーに編集をしてもらいたいと考えています。
具体的には、以下の手順です。
(1)フォルダ内に「access.csv」というファイルを作成する。※ファイルの中身は下記参照
ユーザー名 111222 333444 555666
(2)上記ファイルに記載されているユーザーに対して、読み取り専用のアクセス権を付与する。
(3)フォルダに、記載されていないユーザーがあった場合は、ACLを削除する
(2)までの手順まではなんとか作成できたのですが、
(3)の手順が分かりません。なにかヒントなどいただけますでしょうか。
(2)までの手順は、以下のコードになります。
#CSVを読み込んで、アクセス権を付与する。 #自身のユーザー名取得 $user_name_self = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name $user_name_self = $user_name_self.Substring(10, 6) #ドメイン名は邪魔なので削除し、社員番号のみを抽出 #CSVの読み込んで、配列(user_array)に保存。 $user_array = @() $file_name = '\access.csv' $folder_path = '\ファイルサーバー名\個人ドライブ\' + $user_name_self #個人ドライブフォルダ直下に社員番号(ユーザー名)のフォルダを作成する。 $file_path = $folder_path + $file_name $csv = Import-Csv -encoding Default -Path $file_path #配列にユーザー名を入れる foreach($line in $csv) { $user_array += $line.ユーザー名 } #読み取り権限を付与 $csv_len = $user_array.Length #CSVに入っていたユーザーの数を取得 $cnt = 0 while ( $cnt -lt $csv_len ) { $fc_user_name = 'ドメイン名\' + $user_array[$cnt] $acl = Get-Acl $folder_path $permission = ($fc_user_name,"ReadAndExecute","ContainerInherit, ObjectInherit", "None","Allow") # 引数:ユーザー名,アクセス権,下位フォルダへ継承,下位オブジェクトへ継承,継承の制限,アクセス許可 $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission $acl.SetAccessRule($accessRule) $acl | Set-Acl $folder_path $cnt++ }

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/21 03:06