远程修改ACL几台PC
问题描述:
我想远程设置一些ACL。远程修改ACL几台PC
文件test.csv
包含计算机和用户名。我认为这个问题是通过内部Enter-Pssession
场$user
:
Import-Csv C:\test.csv | ForEach-Object {
Enter-PSSession -ComputerName $Computer
$Path = C:\Users\$User\Desktop
$Acl = Get-Acl
$Ar = New-Object system.security.accesscontrol.filesystemaccessrule("$User","ReadAndExecute","ObjectInherit,ContainerInherit","None","Allow")
$Acl.SetAccessRule($Ar)
Set-Acl -Path $Path -AclObject $Acl
Exit-PSSession}
错误:
The term 'C:\Users\$User\Desktop' is not recognizaed as the name of a cmdlet, function, script, file or operable program.
答
您可以选择使用foreach循环的管道变量来访问当前用户和计算机。例如$_.User
和$_.Computer
。您也可以分配变量:$User = $_.User
和$Computer = $_.Computer
。 注意:变量的名称取决于csv的列名称。
你也缺少在您指定的路径引号,这就是为什么你会得到错误信息:
$Path = "C:\Users\$User\Desktop"