【发布时间】:2020-10-26 20:12:37
【问题描述】:
所以我有
$Logfilename = "E:\Deployment Logs\20201026 - 1_ProductInfo"
Write-Host $Logfilename
E:\Deployment Logs\20201026 - 1_ProductInfo
$Newname = $Logfilename + ".log"
Write-Host $Newname
.logeployment Logs\20201026 - 1_ProductInfo
Get-Content -Path "E:\Deployment Logs\20201026 - 1_ProductInfo.log"
#returns file normally
但是,当我尝试从变量名运行 Get-Content 时,我收到此错误。这也很奇怪,因为错误消息显示了一个字符串,但上面的 Write-Host .logeployment Logs\20201026 - 1_ProductInfo 显示了一个不同的字符串。
Get-Content -Path $Newname
Get-Content : Illegal characters in path.
At line:1 char:1
+ Get-Content -Path $Newname
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (E:\Deployment L...roductInfo.log:String) [Get-Content], ArgumentException
+ FullyQualifiedErrorId : ItemExistsArgumentError,Microsoft.PowerShell.Commands.GetContentCommand
Get-Content : Cannot find path 'E:\Deployment Logs\20201026 - 1_ProductInfo.log' because it does not exist.
At line:1 char:1
+ Get-Content -Path $Newname
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (E:\Deployment L...roductInfo.log:String) [Get-Content], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand
我完全不知道这里发生了什么。该文件肯定存在于给定的路径中。我尝试为隐藏的 \r 和 \n 字符添加 .replace 无济于事。我尝试通过Out-String 编写变量内容,然后添加.log,同样的事情发生了。对此有任何解释或解决方法吗?
【问题讨论】:
-
您的代码看起来很奇怪...您的第一行中缺少引号,我想这是复制粘贴错误?请分别分享您的实际脚本和错误消息。您的路径中可能有多余的空格,或者“-”实际上是一个长破折号等。运行“dir 'E:\Deployment Logs'”时会得到什么输出?
-
running dir E:\Deployment Logs 列出了该文件夹中的所有文件。我已将引号添加到第一行并确认这是复制粘贴错误。
-
我的意思是:在你的问题中包含输出
-
如果您尝试连接路径,请使用
Join-Path。 -
如果下一行的输出
Write-Host $Newname是.logeployment Logs\20201026 - 1_ProductInfo,你的代码怎么会是$Newname = $Logfilename + ".log"?因为您的错误是由于.logeployment Logs\20201026 - 1_ProductInfo不是有效的文件名。
标签: string powershell filepath illegal-characters