開発チームがローカル環境をセットアップするのに役立つ簡単なDLLコピースクリプトを書いています。ビルド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:引数がnullであるため、パラメーター'DifferenceObject'に引数をバインドできません。
私は周りを検索しましたが、Compare-Objectのすべてのハウツーはこれを扱っていないようです。フォルダが空かどうかを確認してから、すべてのファイルをコピーすることはできましたが、もっと良い方法があるかどうか疑問に思いました。
乾杯。