我在用于构建.NET项目的windowsservercore:10.0.14393.206映像中运行脚本时出现问题。我需要使用Powershell脚本手动将一些.dll文件的位置从包更改为Web / Bin但是我收到错误:
The string is missing the terminator: '.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordEx
ception
+ FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
脚本如下:
$srcdir = "packages";
$destdir = "Web\Bin";
md $destdir;
$files = (Get-ChildItem $srcdir -Recurse -Include *.dll*, *.lic*);
$files|foreach($_){
echo $_.Fullname;
Copy-Item -Path $_.Fullname -Destination ("$destdir" + "\" + "$_.Name") -Recurse;
}
任何有关此事的想法?
答案 0 :(得分:1)
这里有一些问题。首先,使用Join-Path构建路径比尝试自己构建路径要好得多。其次,在构建路径时,不需要在任何变量周围加上双引号。第三,如果你打算使用不需要的双引号,你需要$ _.Name周围的$()来强制访问该属性而不是对象的.TOString()函数。以下是另一种方法:
Copy-Item -Path $_.Fullname -Destination (Join-Path $destdir $_.Name) -Recurse;