バッチファイルからPowerShellスクリプトに切り替える理由は、プロセスのエラーチェックを改善するためです。コピー用のコマンドレットには、この点で利点がありますか?
Xcopyを使用してファイル名ごとにファイルを個別にコピーするバッチファイルが既に存在する場合、構文をcopy-itemに変換する利点はありますか?
Robocopy、xcopy、copy-itemを使用する利点は何ですか(互いに比較して)?たとえば、信頼性の高いネットワークを介して多数の小さなファイルを操作する場合、robocopyには利点がありますか。このスクリプトを数百のコンピュータで同時に実行して、数百のファイルを各コンピュータにコピーする場合、決定に影響しますか?決定は主にファイルの権限に焦点を当てるべきですか?
主な利点は、文字列やファイル指定の代わりにパイプを介してオブジェクトをCopy-Item
に送信できることです。だからあなたはできる:
Get-ChildItem '\\fileserver\photos\*.jpeg' -File | `
Where-Object { ($_.LastAccessTime -ge (Get-Date).AddDays(-1)) -and ($_.Length -le 500000) } | `
Copy-Item -Destination '\\webserver\photos\'
これは良い例ではありませんが(Copy-Item -Filter
でそれを行うことができます)、オンザフライで簡単に思いつくことはできます。ファイルを操作してGet-ChildItem
からのパイプラインを作成することはよくありますが、私は個人的には-Recurse -Include
のRemove-Item
のバグのため、多くの場合それを行う傾向があります。
また、PowerShellのエラートラップ、-Passthru
、-WhatIf
、-UseTransaction
などの特別なパラメーター、およびすべての一般的なパラメーターも取得します。 Copy-Item -Recurse
は、xcopyのツリーコピー機能の一部をレプリケートできますが、それはかなり基本的なものです。
ここで、ACL、所有権、監査などを維持する必要がある場合、xcopy
またはrobocopy
は、その機能が組み込まれているため、おそらくはるかに簡単になります。暗号化されたファイルを暗号化されていない場所にコピーするCopy-Item
の処理方法(xcopyにはこれを実行する機能があります)。Copy-Item
がアーカイブ属性の直接管理をサポートしているとは思いません。
それがあなたが探しているスピードなら、私はxcopyとrobocopyが勝つと思います。マネージコードは一般にオーバーヘッドが高くなります。 Xcopyとrobocopyは、ネットワークとの連携をより詳細に制御できます。