语言无关的FileSystemAccessRule

时间:2019-01-16 17:56:38

标签: windows powershell security acl regional-settings

我一直在像这样调整脚本中的ACL:

     $Acl = get-acl -Path $File
     $rule = New-Object -TypeName system.security.accesscontrol.filesystemaccessrule -ArgumentList ('Authenticated Users','Read','Allow')
     $Acl.setaccessrule($rule)
     set-acl -Path $File -AclObject $Acl

在我的英语系统上一直运行良好,但是我收到了有关荷兰系统的报告:“ setaccessrule($rule)上的“ Kan een aantal of alle id-verwijzingen niet omzetten”。

该错误的翻译(“可能是数字或所有id引用都不能转换。”)使我认为该机器上可能不存在英语Authenticated Users,我需要一种语言识别该群体的中立方式。

  1. 内置组语言是否特定?
  2. 我该如何以与语言无关的方式做同样的事情?

谢谢。

1 个答案:

答案 0 :(得分:1)

我没有一台可以使用其他语言进行测试的计算机,但是我相信下面的代码应该适合您。

本质上,问题在于,在创建IdentityReference对象时,您想使用AuthenticatedUserSid类型选择String而不是FileSystemAccessRule表示形式。 See here for the documentation.

$acl = Get-Acl -Path $File
$si = New-Object -TypeName 'System.Security.Principal.SecurityIdentifier' -ArgumentList @([System.Security.Principal.WellKnownSidType]::AuthenticatedUserSid, $null)
$rule = New-Object -TypeName 'System.Security.AccessControl.FileSystemAccessRule' -ArgumentList @($si, 'Read', 'Allow')
$acl.setaccessrule($rule)
Set-Acl -Path $File -AclObject $acl