PowerShellを学んでいると記事に書きました。
ajya.hatenablog.jp
以前ツイートした、ネットワークドライブの割り当てを行うという目的のために学んでいます。
簡単なコマンドから使い方を学んでいきたいです。まずは、ネットワークドライブの割り当てを永続的に行う方法があるのか検索してみます。/MS開発者がツイート「コマンドプロンプトじゃなくPowerShellを使ってね」 https://t.co/2rWsWBg1ac
— AJYA (@ajyaa) May 28, 2020
試行錯誤した結果、PowerShellスクリプトでは、New-PSDriveコマンドレットでネットワークドライブを接続すると、スクリプトの実行中のみ、エクスプローラにも、接続したネットワークドライブも表示されます。
スクリプトの実行が終わると、接続したネットワークドライブは切断されて、エクスプローラに表示されなくなります。
PowerShellスクリプトを、Windowsの起動時に実行して、ネットワークドライブを接続して、常駐するプログラムを起動させようと考えています。
常駐するプログラムは、ドライブを意識して処理はしますが、ドライブが接続されているのか判定して、接続されていなかったら、接続を行う処理は実装したくありません。
どうすれば、PowerShellスクリプトで、ネットワークドライブを接続して、スクリプトの実行が終了しても、エクスプローラに表示され続けるのか試しました。
結果は、net useコマンドを使えばできるのが、わかりました。
Photo by Aman Upadhyay on Unsplash
ネットワークドライブが接続されていなかったら、念のため切断後、ネットワークドライブを接続する
PowerShellでは、Test-Pathコマンドレットでドライブの存在を確認できます。
Test-Pathコマンドレットで、ドライブの存在を確認して、ドライブが存在しなければ、net useコマンドで、ネットワークドライブを接続します。
念のため、net useコマンドで、ネットワークドライブを切断してから、net useコマンドで、ネットワークドライブ接続するようにしたのが、以下のスクリプトです。
if (Test-Path Z:) { } else { net use Z: /delete /yes net use Z: \\192.168.1.1\data Password /user:Admin /persistent:yes }
このスクリプトで、PowerShellスクリプトの実行が終わっても、ドライブが接続できるようになりました。
常駐プログラムの起動は、Start-Processコマンドレットでできるので、ドライブの接続の後に、起動を行います。
if (Test-Path Z:) { } else { net use Z: /delete /yes net use Z: \\192.168.1.1\data Password /user:Admin /persistent:yes } Start-Process -FilePath "C:\testpg\test.exe"
これで目的の動作が実現できました。
New-PSDriveコマンドレットでは、PowerShellスクリプトの実行が終了すると、エクスプローラにネットワークドライブが表示されなくて、驚きました。
幸い、代替手段があったので、対処できました。
このような使い方は、想定されていない使い方なのかもしれませんが、できれば、すべてコマンドレットで解決したかったです。