我执行以下命令以在远程服务器中创建文件夹。将权限设置为新文件夹(F驱动器中的团队)时,我收到访问控制列表的错误消息,您能帮我解决这个问题吗?
$acl=Get-Acl "\\9018\F$\Team Data"$path=md "F:\Team" | set-acl -aclobject $acl
Invoke-Command -ComputerName (Get-Content C:\Server.txt) -ScriptBlock {
param($acl,$path)
} -ArgumentList $acl,$path
错误信息:
set-acl : The security identifier is not allowed to be the owner of this object.
At F:\folder.ps1:2 char:26
+ $path=md "F:\Team" | set-acl -aclobject $acl
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (F:\CDS Team:String) [Set-Acl], InvalidOperationException
+ FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.SetAclCommand
Get-ACL
将获得该对象的所有安全权限,因此当您将其管道传输到该对象时,Set-ACL
可能会告诉它设置每个权限。
您可以尝试的改变
$acl=Get-Acl "\9018\F$\Team Data"$path=md "F:\Team"
到
$acl=(Get-Item "\9018\F$\Team Data").GetAccessControl('Access') | Set-ACL -Path F:\Team
我使用下面的代码在我的虚拟服务器上的文件夹中对其进行了测试(有效),因此也许您可以摆弄代码并使它正常工作:
$acl=(Get-Item \\core\testshare$).GetAccessControl('Access')
$acl | Set-Acl -Path \\core\changeacl
您的代码建议您可能需要对一台以上的服务器执行此操作,为此,您可以做的是在代码之前放置foreach
$servers = Get-Content C:\Servers.txt
ForEach ($server in $servers)
{
$acl=(Get-Item \\core\testshare$).GetAccessControl('Access')
$acl | Set-Acl -Path "$server\Team"
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句