您好我想让域用户使用PowerShell对文件夹进行完全访问。我正在使用Technet和博客从研究中收集到的这组代码。我还有问题。
当我运行下面的代码时,我收到此错误:
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变量并且代码按预期工作。我一直无法弄清楚如何正确传递$ user变量,以便可以传递用户参数而不是硬编码。
由于
答案 0 :(得分:1)
检查DomainName变量的值。如果我在这里运行相同的代码,我不仅会获得我正在运行的域,还会将所有可信域作为数组。这意味着$ user变量包含$domainName = "MyDomain"
。
如果可能,我建议将域名声明为$domainName = (gwmi Win32_NTDomain).DomainName
if ($domainName -is [array]) { $domainName = $domainName[0] }
。如果您确实需要动态获取域,则需要测试数组;
$domainName = $env:USERDOMAIN
注意:我的域名按字母顺序排在第一位,因此我不知道当前域是先显示还是按字母顺序显示。您需要测试并找到适合您的解决方案。
编辑:看起来$stid = oci_parse($conn,
'begin process_order(CUST_ADDRESS_TYP(:street, :city, :state, :post_code, :country)); end;');
oci_bind_by_name($stid, ':street', "45 High Street");
oci_bind_by_name($stid, ':city', "Toronto");
oci_bind_by_name($stid, ':state', "CO");
oci_bind_by_name($stid, ':post_code', "94567");
oci_bind_by_name($stid, ':country', "CN");
可能会发挥作用