1. ホーム
  2. windows

[解決済み] PowerShell フォルダ権限エラー - 一部またはすべての ID 参照を変換できませんでした。

2022-02-01 22:55:31

質問内容

この件に関する多くの投稿を読みましたが、まだ手に入りません。このスクリプトは管理者として実行しており、必要なフォルダは作成されますが、適切なパーミッションが設定されません。どのようなヘルプでもかまいません。ありがとうございました。

$Users = Get-Content "D:\New_Users.txt"
ForEach ($user in $users)
{
    $newPath = Join-Path "F:\Users" -childpath $user
    New-Item $newPath -type directory

    $UserObj = New-Object System.Security.Principal.NTAccount("DOMAIN",$user)

    $acl = Get-Acl $newpath
    $acl.SetAccessRuleProtection($True, $False)
    $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("O1OAK\$user","AppendData,CreateDirectories,CreateFiles,DeleteSubdirectoriesAndFiles,ExecuteFile,ListDirectory,Modify,Read,ReadAndExecute,ReadAttributes,ReadData,ReadExtendedAttributes,ReadPermissions,Synchronize,Traverse,Write,WriteAttributes,WriteData,WriteExtendedAttributes","ContainerInherit, ObjectInherit","None","Allow")
    $acl.SetAccessRule($accessRule)
    $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("NT AUTHORITY\SYSTEM","FullControl","ContainerInherit, ObjectInherit","None","Allow")
    $acl.SetAccessRule($accessRule)
    $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("BUILTIN\Administrators","FullControl","ContainerInherit, ObjectInherit","None","Allow")
    $acl.SetAccessRule($accessRule)
    $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("1OAK\$user","Delete","ContainerInherit, ObjectInherit","None","Allow")
    $acl.removeAccessRule($accessRule)
    $acl.SetOwner($UserObj)
    $acl | Set-Acl $newpath
}

3つあるエラーのうち、最初に出るのは以下のようなものです。これが一番重要だと思うので、他の2つは修正します。

Exception calling "SetAccessRule" with "1" argument(s): "Some or all identity references could not be translated."
At D:\DOMAIN\IT\IT Private\User Drives\user_folders.ps1:12 char:20
+     $acl.SetAccessRule <<<< ($accessRule)
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

重複していなければいいのですが、もし重複していたらすみません、何時間も読んでしまいました。ありがとうございました。

どのように解決するのですか?

このエラーは簡単に説明できます。 Some or all identity references could not be translated.

これは、アカウントが見つからなかったことを意味します。ですから、あなたがしなければならないことは、アカウントの検証です。4つのACEを追加しているので、どれが無効なのかを特定する必要があります。

最も簡単な方法は、ISE または PowerGUI を使用して、1 行ずつデバッグすることです。

NT AUTHORITYSYSTEMとBUILTINAdministratorsで試したところ、うまくいったので、この問題は "O1OAK\$user" または "1OAK\$user" . テキストファイルに無効なアカウントが含まれている可能性があります。