Powershell脚本错误与撇号

时间:2016-10-28 19:16:16

标签: powershell

这不是我的代码,我真的不太了解powershell,但我在这里有一个脚本来访问文件(或其他东西)。特殊字符(例如撇号)出现错误,我知道转义序列,但我通过文件夹和每个文件夹(以及后来的文件)解析我在每个文件夹上使用setaccesscontrol /文件。我不能为每个转义序列使用转义序列,因为它存储在$ fol变量中,并且每个循环都不同。我是一个全新的人,根本没有获得powershell,但我确实得到了java,所以我基于这个理解。任何帮助表示赞赏。

foreach($Fol in $Folder2){
$fol = $fol.fullname
$NewOwnerACL = New-Object System.Security.AccessControl.FileSecurity
$Admin = New-Object System.Security.Principal.NTAccount($WhoIsNewOwner)
write-host ...$Admin to $Fol -Fore Yellow
$NewOwnerACL.SetOwner($Admin)
[System.IO.File]::SetAccessControl($fol, $NewOwnerACL)}

错误是:

异常调用" SetAccessControl"用" 2"参数(一个或多个): " C:\ shares \ Operations ...撇号"

在C:\ cp \ PermissionFixer.ps1:28 char:5

+ [System.IO.File] :: SetAccessControl($ fol,$ NewOwnerACL)

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~

+ CategoryInfo:NotSpecified:(:) [],MethodInvocationException

+ CategoryInfo:FileNotFoundException

编辑:我发现那些长长的破折号搞砸了。我在这个脚本上使用robocopy来超过255或任何世界限制,我认为它可能是错误地读取长短划线?除了解析每个寻找它的字符串之外,还有什么方法吗?

1 个答案:

答案 0 :(得分:0)

您不需要转义序列,因为不涉及字符串解析。

Hackerman提供了我认为是该问题评论中的关键指针: $fol可能只是指向不存在的路径

您报告的错误消息中包含的CategoryInfo值也支持此功能:FileNotFoundException

至于对“撇号”的引用:我最好的猜测是$fol中包含的路径实际上可能实际上包含该词。

撇号(')是合法的NTFS文件名字符,所以它们应该不是问题。