使用PowerShell在不同的文化中设置文件夹权限

时间:2018-02-02 16:11:43

标签: windows powershell culture folder-permissions

我正在尝试创建一个PowerShell脚本,该脚本授予不同文化的NETWORK SERVICE文件夹权限。主要的问题是,NETWORK SERVICE虽然出现在Windows的所有安装中,但在不同的文化中有不同的名称,我不知道如何处理它。

这是我正在使用的脚本:

YAML.load_file

现在这个脚本在英文版Windows上运行得很好。但是,当尝试在德语版的Windows上运行它时,我收到以下错误消息(翻译自德语):

Exception calling "SetAccessRule" with "1" argument(s): "Some or all identity
references could not be translated."
At C:\Experimental Files\GrantFolderPermissions.ps1:7 char:1
+ $Acl.SetAccessRule($Ar)
+ ~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : IdentityNotMappedException

我如何才能最好地处理这个问题,以便这个脚本可以独立运作?

1 个答案:

答案 0 :(得分:0)

使用well-known SID确定帐户名称:

$sid = [Security.Principal.SecurityIdentifier]'S-1-5-20'
$acct = $sid.Translate([Security.Principal.NTAccount]).Value

$ace = New-Object Security.AccessControl.FileSystemAccessRule($acct, 'FullControl', 'ContainerInherit,ObjectInherit', 'None', 'Allow')