Powershell tips : ファイル関連操作

Published by

on

Powershellを用いたファイル関連の操作でよく使いそうなもの(コマンドレット、記法)をピックアップしました。

■指定フォルダ内のファイル名とサイズの一覧

サブフォルダを除く指定フォルダ内で条件にマッチするファイルの名前とサイズを一覧にします。サイズはByte単位とMB単位の2つを表示します。

gci -Path "C:\to\target\path" -Filter "*.zip" | Select-Object Name, Length, @{Name="Size(MB)"; Expression={[math]::Round($_.Length / 1MB, 1)}}

結果をファイルに保存したい場合は「Out-File」コマンドレットを用いてリダイレクトします。(「>」を用いて簡単にも書けます。)

gci -Path "C:\to\target\path" -Filter "*.zip" | Select-Object Name, Length, @{Name="Size(MB)"; Expression={[math]::Round($_.Length / 1MB, 1)}} | Out-File -FilePath zip_files_list.txt

■指定拡張子のファイルのみを列挙する

以下はカレントフォルダ配下にある拡張子が「.mdf」、「.ldf」のファイルのみを抽出します。複数指定は「-in」の後にカンマ区切りで「’.拡張子’」の方法で記述します。

gci . -recurse | where {$_.extension -in '.mdf', '.ldf'}

■ドライブの割当と解除

ここでは資格情報をあらかじめXML形式のファイルに保存しておいて、それを割り当て時の認証に用いる形でドライブの割当をするスクリプトを作成します。流れとしては以下のようになります。

  1. 資格情報をXML形式で保存
  2. ドライブ割り当てスクリプト内でXMLファイルを指定して接続

▼1.資格情報のXML保存

「Get-Credential」コマンドレットで入力する資格情報を「Export-Clixml」を用いて「mycred.xml」という名前でユーザプロファイルフォルダ配下へ保存します。

Get-Credential | Export-Clixml -Path "$env:USERPROFILE\mycred.xml"

下記のように資格情報入力ダイアログが表示されるので保存したい資格情報を入力します。

指定先に保存されます。今回は「%USERPROFILE%」フォルダ配下に保存しています。

ファイルの中に「UserName」と「Password」の値があります。UserNameは入力した通り保存されますが、Passwordについては入力値がそのままではなく暗号化された状態で出力されます(下記キャプチャでは黒く塗りつぶしています)

▼2.ドライブ割り当てスクリプト実行

先ほど保存した資格情報を基に接続しドライブ割り当てを行うスクリプトを実行します。スクリプト内容は以下のようなものです。

#powershellでドライブマッピング
$DRIVE_LETTER = "X"
$CRED = Import-Clixml -Path "$env:USERPROFILE\mycred.xml"
New-PSDrive -Name $DRIVE_LETTER -PSProvider FileSystem -Root "\\192.168.11.150\share" -Credential $CRED -Persist -Scope Global

実行し、割り当てが成功すると以下のように表示されます。

「Get-PSDrive」コマンドで識別できる論理ドライブを確認すると「X」が表示されているのがわかります。

用が済み、割り当てを解除したい場合は「Remove-PSDrive ドライブ名」を実行します。

コメントを残す