我有一個部署的PowerShell 2.0腳本,一個潛在的robots.dev.txt複製到的robots.txt,如果它不存在,沒有做任何事情的一部分。是否有更好的方法來檢查,如果一個集合在PowerShell中的foreach之前是空的?
我原來的代碼是:
$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
測試的foreach()與該@()數組強制和工作方式類似於OP請求。 – SpellingD
測試了...這兩個解決方案工作:) –