Удаленное администрирование локальных разрешений и локальных пользователей / групп - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь изменить права доступа к файлам удаленных компьютеров с помощью локальных пользователей и групп этих компьютеров.

$IDR = New-Object System.Security.Principal.NTAccount( 'RemoteServer\testaccount' )

$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule(
    $IDR,
    'FullControl',
    'ContainerInherit, ObjectInherit',
    'None',
    'Allow'
)

$Item = (Get-Item \\RemoteServer\share\folder\folder\file)
$ACL = $Item.GetAccessControl()
$ACL.AddAccessRule($AccessRule)
$Item.SetAccessControl($ACL)

Вывод: исключение, вызывающее «AddAccessRule» с аргументом (ами) «1»: «Некоторые или все ссылки на идентификаторы не могут быть переведены.»

Я понимаю, что это означает, что он не может найти 'Computer \ testaccount', который я ищу. Я могу изменять права доступа к удаленным файлам с помощью пользователей и групп Builtin * (например: Builtin \ Administrators), но не с созданными учетными записями.

testaccount существует на RemoteServer.

\\ RemoteServer \ testaccount не работает

Встроенный \ testaccount не работает

Local \ testaccount не работает

testaccount не работает

Я могу удаленно удалить локальную учетную запись из прав доступа к локальному файлу примерно таким же образом.

Есть ли способ добавить не встроенные локальные пользователи и группы RemoteServer в разрешения локального файла RemoteServer с моей локальной рабочей станции?

OR

Как устранить ошибку, упомянутую выше?

Обходной путь Редактировать:

Мне не хотелось этого делать, но я смог запустить сеанс PowerShell с Win32_Process со всеми данными для применения разрешений. Оно работает. Но это не идеально, потому что оно не будет работать в системах, которые не могут принимать WMI. Я все еще хотел бы знать, возможно ли исправить мою первоначальную проблему без этого неуклюжего обходного пути.

1 Ответ

0 голосов
/ 30 октября 2018

В вашем коде, похоже, что-то не так.

Прежде всего, у вас есть опечатка

\\Computer\C$\user\username\desktop\testfile

но это должно быть

\\Computer\C$\users\username\desktop\testfile

('пользователи' = множественное число).

Далее вы получаете Security.Principal.NTAccount, используя Computer\testaccount, но позже вы получаете элемент файла, используя username.

Это должно работать, хотя:

# create the Full Control access rule for the user
$AccessRule = (New-Object System.Security.AccessControl.FileSystemAccessRule(
                [System.Security.Principal.NTAccount]"$computerName\$userSamAccountName",
                "FullControl", "ContainerInherit, ObjectInherit", "None", "Allow"))

# get the item you want to set the FullControl accessrule on.
# you need permissions for this of course..
$Item = (Get-Item "\\$computerName\C$\user\$userSamAccountName\desktop\testfile")
$ACL = (Get-Acl -Path $Item.FullName)
$ACL.AddAccessRule($AccessRule)
Set-Acl -Path $Item.FullName $ACL
...