かなり昔、DOSコマンドプロンプト全盛の時期にSubstコマンドという、任意のパスをドライブ化してくれる便利コマンドがありました。
今(2021年8月現在)、Substコマンドに相当する便利コマンドはあるのでしょうか?
ちなみに、DOSコマンドでSUBSTは今でも残っているのですが、DOSコマンドをPowerShellのスクリプトに入れるのはどうも嫌なので、PowerShellだけで完結したいと思います。
New-PSDrive コマンド
結論から先に言いますと、New-PSDriveコマンドを使うことで任意のパスをドライブ化できます。
以下の例ですと、My Documentの下にあるFolder1をZドライブとしてマップしてくれます。
New-PSDrive -Name Z -PSProvider FileSystem -Root '~\My Documents\Folder1'
使用しているドライブは次のように確認できます。
Get-PSDrive
TeamsのファイルをOneDrive同期していたりすると、同期したフォルダによくアクセスしますよね。フォルダをExplorerでピン留めするでもいいのですが、PowerShellだったらドライブに割り当てたほうが使い勝手がいいです。
自分の場合、こんな感じでOneDrive同期されたフォルダをドライブ化しています。General
はTeamsで言うところの「一般」チャネルです。なお、ドライブ名が1文字だったらZ:
と入力するとドライブ切り替えできるのですが、ドライブ名が2文字以上の場合は cd TF:
のようにcd コマンドが必要になるので注意です。
cd '~\OneDrive - {企業名}\{Teamsチーム名}ドキュメント\General\'
New-PSDrive -Name TF -PSProvider FileSystem -Root $pwd
cd TD:
New-PSDrive コマンドには
-Persist
オプションというドライブ化を永続化してくれるオプションがあるのですが、これは共有フォルダをドライブ化するときにしか使用できません。残念。
SQLServerドライバでSQL Serverインスタンスをドライブ化する
SQLServer モジュールをインストールしておくと、SQL Serverの任意の階層をドライブ化できます。
まずは、モジュールのインストールと読み込み。
Install-Module -Name SQLServer
Import-Module -Name SQLServer
SQL Serverにアクセスするための認証情報の作成とドライブマップ。
ここでは、ローカルホスト上のSQL Serverにユーザsaと、そのパスワードを使ってSドライブにマップします。
$user = 'sa'
$pass = ConvertTo-SecureString -AsPlainText 'パスワード'
$crd = New-Object System.Management.Automation.PSCredential -argumentlist $user,$pass
New-PSDrive -Name S -PSProvider SqlServer -Root SQLSERVER:SQL\localhost\Default -Credential $crd
Sドライブにアクセスして、データベースの一覧を出力してみます。
cd S:
ls Databases
Sドライブにアクセスして、最初のデータベースのテーブル一覧を、先に作ったドライブ上のテキストファイルに出力します。
cd S:
$db = ls Databases
$db[0].Tables > Z:\tables.txt
出力はこんな感じ。
Schema Name Row Count Storage Sp Index Spac Created
ace Used e Used
------ ---- --------- ---------- ---------- -------
dbo M_ユーザ 6 8.00 KB 8.00 KB 2021/04/12 8:15
dbo M_商品 110 16.00 KB 16.00 KB 2021/04/12 8:15
dbo M_店舗 6 8.00 KB 8.00 KB 2021/04/12 8:15
dbo M_顧客 196 24.00 KB 16.00 KB 2021/04/12 8:15
dbo T_注文履歴 21560 1.66 MB 16.00 KB 2021/04/12 8:15
dbo __RefactorLog 2 8.00 KB 8.00 KB 2021/04/26 3:06
DBにアクセスして、PowerShellで管理することもできて便利ですね。