0

特定のユーザーがリストされているかどうかを確認するために、一連のフォルダーの ACL を取得しようとしています。

例えば

 Users
 |
  ---Person1
  ---Person2
  ---Person3

Person1~3はホームフォルダです。最近、フォルダーのアクセス許可を変更するために icacls コマンドを実行しました。それらのいくつかは、所有者が Person1 ではなく「IT Employee」に設定されています。

フォルダが 3 つしかない場合は、これを手動で行います。ただし、少なくとも 1000 個のフォルダーがあり、手動でタイムリーにデータを取り戻すことは現実的ではありません。

基本的に 6 人の IT 従業員がおり、その名前がどの個人ホーム フォルダー (またはサブ フォルダー) にも含まれていないことを確認したいと考えています。そこにある場合は、それらを削除するか、少なくともコンソール ログを取得できるようにしたいと考えています。

Windows Server 2008 で PowerShell 2 を使用しています

VBScript や JavaScript も実行できます

4

1 に答える 1

1

このようなことを試してみてください。ファイル サーバー atm. を使用してネットワークに接続していないため、 SIDが含まれてOwnerいるかどうかわかりません (これは、存在しないユーザー、たとえば削除されたユーザーで発生します)。m ローカル マシンで実行すると取得されます。それを処理するには、それを変更する必要があるかもしれません。IdentityReferenceDOMAIN\Username<DOMAIN or ComputerName>\Username

$rootpath = "c:\users"

#Get all folders
Get-ChildItem -Path $rootpath -Recurse | Where-Object { $_.PSIsContainer }
#Get ACL for the folders
Get-Acl |
#Find ACLs with IT Employee-reference
Where-Object {

    #Check if owner matches 'IT Employee' or ACL Access rules contains 'IT Employee'
    if(($_.Owner -match 'IT Employee') -or ($_.Access | Where-Object { $_.IdentityReference.Value -match 'IT Employee' })) { $_ }

} |
#Process
ForEach-Object {

    #Show folderpath...
    $_.Path

    #Here you could access the ACL-object $_, modify it (change owner/remove access rules) and save it by using 'Set-Acl -Path $_.Path -AclObject $_'   etc.
}
于 2014-12-29T18:58:18.007 に答える