我正在编写一个简单的DLL复制脚本,以帮助我的开发团队设置他们的本地环境。我检查build devdrop文件夹并获取DLL文件列表。然后我查看本地文件夹并复制任何较新的DLL。
我的问题是当本地文件夹为空时(即第一次运行脚本时)它全部崩溃。
$newFiles = Get-ChildItem -recurse -path "$drop\$latest\ship" -name
$oldFiles = Get-ChildItem -recurse -path $bin -name
$files = Compare-Object $newFiles $oldFiles -IncludeEqual -PassThru
$files | Where-Object { $_.SideIndicator -eq '<=' -or $_.SideIndicator -eq '=='} | % {
Copy-Item -Path "$drop\$latest\ship\$_" -Destination $bin -Force
}
当$ bin为空时,gci调用将$ oldFiles保留为null,给我一个很好的错误:
Compare-Object:无法将参数绑定到参数'DifferenceObject',因为它为null。
我已经四处搜索了,而且Compare-Object的所有方法似乎都没有解决这个问题。我可以检查文件夹是否为空,然后复制所有文件,但我想知道是否有更好的方法。
干杯。
答案 0 :(得分:4)
$newFiles = @(Get-ChildItem -recurse -path "$drop\$latest\ship" -name)
$oldFiles = @(Get-ChildItem -recurse -path $bin -name)
$files = Compare-Object -ReferenceObject $newFiles -DifferenceObject $oldFiles -IncludeEqual -PassThru