我想远程设置一些ACL。
文件test.csv
包含计算机和用户名。我认为问题是在$user
内传递字段Enter-Pssession
:
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.
答案 0 :(得分:0)
您必须使用foreach循环的管道变量访问当前用户和计算机。例如$_.User
和$_.Computer
。您还可以分配变量:$User = $_.User
和$Computer = $_.Computer
。 注意:变量的名称取决于csv的列名。
您也错过了分配路径的引号,这就是您收到错误消息的原因。:
$Path = "C:\Users\$User\Desktop"