我有以下部分代码:
$fileList | foreach {
Write-Host ". . . adding $_ to script"
$myCreateScript += Get-Content "$ScriptRoot\$_" | Out-String }
Run Code Online (Sandbox Code Playgroud)
这将在执行结束时产生以下结果:
ItemNotFound,Microsoft.PowerShell.Commands.GetContentCommand System.Exception:指定路径E:\ Scripts\users [[FILE_NAME_LOWER]] _ administrator.sql中的对象不存在,或者已被-Include或-Exclude参数过滤.
[[FILE_NAME_LOWER]] _ administrator.sql是文件的名称,它确实存在于指定的目录中.如果这是文件名包含括号([])的问题,我需要知道如何在foreach块中解析它,因为我无法轻易更改文件名(它们在源代码控制中的代码中的其他地方使用)并且由于脚本中的先前代码,需要保存在$ fileList中.我怀疑括号是问题,因为$ fileList有超过200行,并且$ myCreateScript到目前为止填充了正确的数据.
您需要使用以下-LiteralPath参数Get-Content:
$myCreateScript += Get-Content -LiteralPath "$ScriptRoot\$_" | Out-String }
Run Code Online (Sandbox Code Playgroud)
否则,[[FILE_NAME_LOWER]]将被解释为通配符字符集,它告诉PowerShell匹配每端两个方括号所包含的任何字符.
| 归档时间: |
|
| 查看次数: |
2096 次 |
| 最近记录: |