Powershell - 设置文件夹权限

问题描述:

嗨我想给域用户完全访问PowerShell的文件夹。我正在使用从Technet和博客的研究中收集的这组代码。我仍然有问题。Powershell - 设置文件夹权限

Exception calling "SetAccessRule" with "1" argument(s): "Some or all  identity references could not be translated." 
At line:13 char:1 
+ $acl.SetAccessRule($accessRule) 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : IdentityNotMappedException 

这里是我的代码:

$directory = "C:\inetpub\wwwroot\app.webservice" 
$domainName = (gwmi Win32_NTDomain).DomainName 
$group = 'Domain Users' 
$inherit = [system.security.accesscontrol.InheritanceFlags]"ContainerInherit, ObjectInherit" 
$propagation = [system.security.accesscontrol.PropagationFlags]"None" 
$acl = (Get-Item $directory).GetAccessControl("Access") 
$user = "{0}\{1}" -f "$domainName", $group 
$user.trim() 
$access = "FullControl" 
$accessType = "Allow" 
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule -ArgumentList @("$user","$access", "$inherit", "$propagation", "$accessType") 
$acl.SetAccessRule($accessRule) 
set-acl $directory $acl 

我试图与“域\域用户更换$用户变量

当我运行的代码仅低于我得到这个错误“并且代码按预期工作。我一直无法弄清楚如何正确传递$ user变量,以便可以传递用户参数,而不是硬编码。

谢谢

检查您的DomainName变量的值。如果我在这里运行相同的代码,我不仅可以获取正在运行的域,还可以将所有受信任的域作为数组运行。这意味着$ user变量包含类似MyDomain OtherDomain\Domain Users

如果可能,我建议声明域名为$domainName = "MyDomain"。如果您确实需要动态获取域,则需要测试数组;

$domainName = (gwmi Win32_NTDomain).DomainName 
if ($domainName -is [array]) { $domainName = $domainName[0] } 

注:我的域名是按字母顺序排列第一,所以如果是第一次,或者如果他们仅仅是按字母顺序显示当前显示的域名,我不知道。您需要测试并找到适合您的解决方案。

编辑:看起来像$domainName = $env:USERDOMAIN可能做的伎俩

+2

我肯定会去'$ ENV:USERDOMAIN'(用户)或'(gwmi的Win32_ComputerSystem).Domain',而不是'Win32_NTDomain' –

+0

(机)谢谢致命的,百吉饼。这段代码适用于我也需要的东西。 – JustJohn