私は困惑しています!ACLを変更 - 再帰すべてのディレクトリPowershell
ここに私がする必要があります。私たちは新しいドメインに移行しました。基本的には、それぞれのACLを見ているすべてのディレクトリとファイルを再抑制するサーバー上で実行できるスクリプトが必要です。これは、見つかった場合NEWDOMAIN \ユーザーへの変更ACLをなどOLDDOMAIN \ユーザー用のACLを検索するが、ここで
は、私がこれまで
$access = ""
$accessarray = @()
$filesarray = @()
$permarray = @()
$filesarray = Get-ChildItem C:\Users -Recurse
ForEach($path in $filesarray) {
$pathcheck = $path.fullname
$access = get-acl $pathcheck
$accessarray = $access.AccessToString.Split(",")
foreach ($item in $accessarray) {
if ($item -match "OLDDOMAIN") {
Write-Host $pathcheck
Write-Host $item
$item = $item -replace ("OLDDOMAIN","NEWDOMAIN")
$permarray = $item.split(” “) | where-object {$_ -ne ”“}
foreach($perm in $permarray) {
$ar = New-Object system.security.accesscontrol.filesystemaccessrule $perm
$acl.SetAccessRule($ar)
$acl | Set-Acl $pathcheck
}
}
}
}
それは一種の作品持っているもので、すべての権限を維持しますが、問題は、アクセス許可を再適用するときに配列が正しい順序でなく、set-aclコマンドで失敗するということです。
アイデアはありますか?ここに私の髪を引っ張っ:P
おかげ
感謝の男、本当にPowerShellの –
は今 セットの次のエラーを取得するに多くを見てする必要があります-Acl:セキュリティ識別子がこのオブジェクトの所有者であることは許可されていません。 すべてのアイデア、私はとても近いです:P –
完璧な仕事を得ました もう一つ、新しいアクセスルールを追加しましたが、古いドメインのものを残してください どうすれば削除できますか? –