以下の動作を繰り返し行うPowerShellのスクリプトです。
- フォルダが存在すればそのフォルダを削除して、再度作成する
- フォルダが存在しなければ作成する
本当にそれ以上でも以下でもないモノですが、単純にメモとして残しておきます。背景というか用途としては、リモートの共有フォルダの接続状態(実際にフォルダやファイル操作ができる状態を維持できているか)の確認のために使用したものです。
背景的なメモとして。
なかなかイメージが付きづらいかもしれないというかそれ必要?てな具合に思うかもしれないですが、最近はクラウドのファイル共有を使用するシチュエーションも増えてきているいると思います。
仕様によっては、ローカルにキャッシュして実はネットワークが切れている状態なのにファイル参照できている、というパターンや、サーバ側では接続元のIPを制限(仮にVPNが必要)としていて、クライアント側からVPN接続のうえでファイルアクセスできていたが VPNがきれて許可IPではなくなったにもかかわらずローカルのキャッシュによってファイル参照できていた、というようなパターンもあるかと思います。(この辺は本当に仕様によるところでそんな製品・サービスあんの?な方もいらっしゃると思いますが・・・)
そんな場合に、参照はできるが更新はできないというような状況を把握できないかというようなことにも使用できるかなーと。
まぁつまり上のような状況で必要になったがために書いたのでそれを残しておきます、、、という 冒頭に記載の通り 本当にそれ以上でもそれ以下でもないシロモノです。(まぁこの手のものってそんなもんですよね)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
### n秒ごとにフォルダを作成または削除する $base_dir = Split-Path $MyInvocation.MyCommand.Path $target_dir = "$base_dir\test_999" $log_file = "$base_dir\mkrmdir_loop.log" ### 関数定義 ### # フォルダが存在しなければ作成/存在したら削除して作成 function mkorrmmk_dir { if (!(test-path $target_dir)) { $task_rslt = "作成" New-Item $target_dir -ItemType Directory | Out-Null output_log } else { $task_rslt = "削除" Remove-Item $target_dir -Recurse -Force | Out-Null output_log sleep 3 $task_rslt = "作成" New-Item $target_dir -ItemType Directory | Out-Null output_log } } # ログ出力 function output_log { Write-Output "$((Get-Date).ToString("yyyy/MM/dd HH:mm:ss")) : $target_dir を $task_rslt しました" | Out-File $log_file -Encoding default -Append } ### メイン処理 #ループ while ($true) { mkorrmmk_dir #sleep 300 sleep 3 } |
以上です。