我有一个部署PowerShell 2.0脚本的一部分,该脚本将潜在的 robots.dev.txt 复制到 robots.txt,如果它不存在,则不执行任何操作。
我的原始代码是:
$RobotFilesToOverWrite= Get-ChildItem -Path $tempExtractionDirectory -Recurse -Include "robots.$Environment.txt"
foreach($file in $RobotFilesToOverWrite)
{
$origin=$file
$destination=$file -replace ".$Environment.","."
#Copy-Item $origin $destination
}
但是,与 C# 不同的是,即使 $RobotFilesToOverWrite 为 null,代码也会进入 foreach。
所以我不得不用:
if($RobotFilesToOverWrite)
{
...
}
这是最终代码:
$RobotFilesToOverWrite= Get-ChildItem -Path $tempExtractionDirectory -Recurse -Include "robots.$Environment.txt"
if($RobotFilesToOverWrite)
{
foreach($file in $RobotFilesToOverWrite)
{
$origin=$file
$destination=$file -replace ".$Environment.","."
#Copy-Item $origin $destination
}
}
我想知道是否有更好的方法来实现这一目标?
编辑:这个问题似乎在 PowerShell 3.0 中得到修复