1

開発チームがローカル環境をセットアップするのに役立つ簡単な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のすべてのハウツーはこれを扱っていないようです。フォルダが空かどうかを確認してから、すべてのファイルをコピーすることはできましたが、もっと良い方法があるかどうか疑問に思いました。

乾杯。

4

1 に答える 1

5
$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
于 2012-11-22T02:51:39.043 に答える