$to="\\SERVER\Share\Folder"
if(!(test-path $to))
{
...
}
サーバーがオフラインの場合 (名前は解決されていますが、ping はありません)、test-path からの呼び出しは返されません (スクリプト時間に関する私の偏狭な理解では)。失敗するには時間がかかりすぎます。最後に、バターでトーストを作った後、コーヒーが見つからず、コーヒーを買いに行き、水が再び沸騰するのを待って、トーストが冷えているのを見つけた後、待望の結果 False が得られました。画面に戻って、すぐそこに表示されるのを確認します...
従来の DOS ディレクトリを使用した同じパスは、現実的な時間の経過後に期待どおりに失敗します。
dir "\\SERVER\Share\Folder"
「ネットワーク パスが見つかりませんでした」と表示されます。3分以内に!
PS のこの動作は、私のスクリプトを本当に壊します。
正確には
$t0 = get-date; test-path "\\SERVER\Share\Folder"; $t1 = get-date; ($t1-$t0).TotalSeconds
私にくれた
False
595.2214875
ヒント: SERVER を解決するローカル ネット オフライン PC 名に置き換えます。
ああ、質問です: 1) これにどのように対処しますか? 2) 一体何が問題なのですか?
更新: オフライン IP アドレスを使用する場合、タイミングは同じです。DNSはゲームから外れています。
Update2: 同じように無駄な時間を過ごしている人はいますか? 64 ビットの W2k8R2 サーバーで試してみましたが、問題はありません。コールは最大 30 秒で返されます。私の問題は、32 ビットの Windows XP PC にあります。
ありがとう、ロブ