$ ar =新規オブジェクトSystem.security.accesscontrol.filesystemaccessrule $ perm
FileSystemAccessRuleのコンストラクタには3つの引数があり、分割とforeachの後に $ perm
には引数が1つしかなく、構築自体が失敗します。
分割などを避けてください。Powershellはオブジェクトを提供します。それらを操作します。文字列を取得しないでください。
次のようなもので、あなたが望むことをすることができます:
gci c:\users -recurse | %{
$acl = get-acl $_.fullname
$acl.Access | ?{$_.IdentityReference.Value.StartsWith("OLDDOMAIN")} | %{
$identity = $_.IdentityReference.Value -replace "OLDDOMAIN", "NEWDOMAIN"
$permission = $identity,$_.FileSystemRights,$_.AccessControlType
$ar = New-Object system.security.accesscontrol.filesystemaccessrule $permission
$acl.SetAccessRule($ar)
}
$acl | set-acl $_.fullname
}