Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带撇号的Powershell脚本错误_Powershell - Fatal编程技术网

带撇号的Powershell脚本错误

带撇号的Powershell脚本错误,powershell,Powershell,这不是我的代码,我真的不太了解powershell,但我这里有一个脚本,用于访问文件(或其他内容)。特殊字符(如撇号)有一个错误,我知道转义序列,但我通过一个文件夹进行解析,对于每个文件夹(以及以后的文件),我在每个文件夹/文件上使用setaccesscontrol。我不能对每个循环使用转义序列,因为它存储在$fol变量中,并且每个循环都不同。我是一个完全的新手,根本不懂powershell,但我懂java,所以我的理解基于此。感谢您的帮助 foreach($Fol in $Folder2){

这不是我的代码,我真的不太了解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)}
错误是:

使用“2”参数调用“SetAccessControl”时发生异常: “C:\shares\Operations…带撇号的东西”

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

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

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

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

+CategoryInfo:FileNotFoundException


编辑:我发现那些长破折号把事情搞砸了。我在这个脚本上使用robocopy来超越255或任何世界限制,我认为它可能没有正确地读取长破折号?除了通过分析每个字符串来寻找它之外,还有其他方法吗?

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

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

您报告的错误消息中包含的
CategoryInfo
值也支持这一点:
FileNotFoundException

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


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

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

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

您报告的错误消息中包含的
CategoryInfo
值也支持这一点:
FileNotFoundException

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


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

您不需要转义序列-不涉及字符串解析。您收到的完整错误消息是什么?
static void SetAccessControl(字符串路径,System.Security.AccessControl.FileSecurity FileSecurity)
。您检查过$fol路径是否存在吗?@Hackerman我检查过,我很确定它在那里。我认为它通过解析这个文件夹得到$fol,所以我不确定这会怎么搞砸。除此之外,其他文件夹和文件都可以正常工作。我唯一注意到的是(')。您不需要转义序列-不需要字符串解析。您收到的完整错误消息是什么?
static void SetAccessControl(字符串路径,System.Security.AccessControl.FileSecurity FileSecurity)
。您检查过$fol路径是否存在吗?@Hackerman我检查过,我很确定它在那里。我认为它通过解析这个文件夹得到$fol,所以我不确定这会怎么搞砸。除此之外,其他文件夹和文件都可以正常工作。我唯一注意到的是(')。“所以它们不应该是问题。”奇怪的是,情况并非如此,至少在使用Shift+右键单击方法打开目录中的Powershell窗口时是如此。在名称中带有撇号的文件夹中执行该操作时,它会产生错误“字符串缺少终止符:”。@JAB:很高兴知道,但这只是shell集成功能中的一个错误,不是NTFS或PowerShell问题:此功能的基本命令错误地假定
永远不会嵌入到文件夹名称中-请参阅superuser.com上的我的解决方案。“因此它们不应该是问题。”奇怪的是,事实并非如此,至少在使用Shift+右键单击方法打开目录中的Powershell窗口时。在名称中带有撇号的文件夹中执行该操作时,它会产生错误“字符串缺少终止符:”。@JAB:很高兴知道,但这只是shell集成功能中的一个错误,不是NTFS或PowerShell问题:此功能的基本命令错误地假设文件夹名中永远不会嵌入
”-有关修复方法,请参阅superuser.com上的我的。