必要に迫られたPowerShell系の逆引きメモになります
概要
各コマンドはできるだけ短いエイリアスを使用しています
ファイル・ディレクトリ関連
チェンジディレクトリ
で戻る
、進む
戻る
cd -
進む
cd +
ファイルの更新順でソート表示
ls | sort LastWriteTime
最新ファイルを任意件数表示
ls | sort LastWriteTime | select -Last 10
カレントディレクトリ内のファイルサイズをMB単位で一覧表示
ls -File | select Name, @{Name='SizeMB'; Expression={"{0:N2} MB" -f ($_.Length / 1MB)}}
指定ファイルのフルパスをクリップボードにコピー
rvpa -Path ".\example.txt" | foreach { "`"$_`"" } | scb
- カレントディレクトリ内
- ダブルコーテーションで囲む
カレントディレクトリ内のファイルのファイル名を改行区切りでクリップボードへコピー
ls -Name | % {$_} | Set-Clipboard
カレントディレクトリのフルパスをクリップボードへコピー
(pwd).Path | scb
ファイル(0byteファイル)を作成
touch
コマンドの代替
ni filename.txt -ItemType File
ディレクトリ内でテキストファイルの行数出力
数十万~数百万行のテキストファイルが複数有る場合に行数を数える
ls *.txt | foreach {(Get-Content $_).Length}
テキストファイルを指定行数で分割
$i=0; cat .\test.txt -ReadCount 3 | % { $_ > test$i.txt;$i++ }
-ReadCount
で行数を指定するとテキストファイルを分割できる
ファイルの削除(rm -rf)
rm .\test -r -fo
指定したフォルダ名を再帰的に強制削除
ls -Recurse -Filter 'test' | rm -r -fo
ゴミ箱を空にする
確認有り
Clear-RecycleBin -Confirm:$true
確認無し
Clear-RecycleBin -Confirm:$false
ZIPファイルの展開
Expand-Archive -Path .\src.zip -DestinationPath .\dest\
カレントディレクトリ内のファイルをZIPファイルに圧縮
Compress-Archive -Path .\* -DestinationPath .\output.zip
制御関連
任意の間隔で同じコマンドを繰り返す
while ($true) { Write-Host "Hello World"; sleep -Seconds 30 }
システム関連
起動、シャットダウン履歴の検索
サンプルは過去1ヶ月分のシャットダウン履歴を検索
Get-WinEvent -FilterHashtable @{LogName='System'; Id=6006,6008; StartTime=(Get-Date).AddDays(-31); EndTime=(Get-Date)} | ForEach-Object { "{0,-25} {1,-5} {2,-15} {3}" -f $_.TimeCreated.ToString("yyyy/MM/dd HH:mm:ss"), $_.Id, $_.LevelDisplayName, $_.Message }
2024/01/01 04:00:00 6006 情報 イベント ログ サービスが停止されました。
2024/01/01 03:00:00 6006 情報 イベント ログ サービスが停止されました。
2024/01/01 02:00:00 6006 情報 イベント ログ サービスが停止されました。
2024/01/01 01:00:00 6008 エラー 以前のシステム シャットダウン ( 2024/01/01 00:00:00) は予期されて いませんでした。
起動履歴を取得したい場合は、Id=6006,6008;
をId=6005;
に変更する。
環境変数の確認
ls env:
PCの再起動
Restart-Computer
PCのシャットダウン
Stop-Computer
Windows Updateの実行
Install-Module PSWindowsUpdate -Force
Set-ExecutionPolicy RemoteSigned
Install-WindowsUpdate –AcceptAll –AutoReboot
コマンド履歴をすべて表示
Get-Content ((Get-PSReadlineOption).HistorySavePath) -ErrorAction SilentlyContinue
常に実行しない(V)
を解除
PowerShellのコマンド実行時に下記のメッセージが表示される場合に誤って[V] 常に実行しない(V)
を誤って選択した場合に次回以降...このモジュールを読み込む ことができませんでした。...
と表示されてしまう問題への対処方法
表示内容
この信頼されていない発行元からのソフトウェアを実行しますか?
ファイル C:\Users\user\Documents\WindowsPowerShell\Modules\xxx\xxxx\xxxx.xxxx の発行元は
CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
であり、このシステムで信頼されていません。信頼された発行元からのスクリプトのみを実行してください。
[V] 常に実行しない(V) [D] 実行しない(D) [R] 一度だけ実行する(R) [A] 常に実行する(A) [?] ヘルプ (既定値は "D"):
操作手順
-
スタートメニュー
で証明書
を検索 -
ユーザ証明書の管理
をクリック -
信頼されてない証明書
から該当の証明書を削除 - 該当コマンドを再実行すると
この信頼さ...
のメッセージが再度表示される
ps1ファイルを実行
powershell -ExecutionPolicy RemoteSigned -File .\test.ps1
-ExecutionPolicy RemoteSigned
はローカルに保存されているスクリプトは実行可能。インターネットからダウンロードしたスクリプト(非ローカルのスクリプト)は、署名されているもののみが実行可能。Windows Server 2012 R2
では、この設定がデフォルト
PowerShellのバージョンを確認
$PSVersionTable
サービスの一覧表示
Get-Service
Firewallの無効化
Get-NetFirewallProfile | Set-NetFirewallProfile -Enabled false
SFTP
start ssh-agent
Set-Service -Name ssh-agent -StartupType Manual
Start-Service ssh-agent
Poweshell関連
Poweshellコマンドエイリアス表示
gal | ? {$_.Definition -eq 'Get-ChildItem'}
コマンドエリアスはman
コマンドでも確認可能
Windowsコマンド
下記はPowerShellからでも実行出来できますが正確にはWindowsコマンド
tar.gz
の展開
tar -xzf yourfile.tar.gz -C outputfolder
outputfolder
は存在ている必要があります
電源プランの一覧表示
powercfg /list
電源プランを変更
powercfg /setactive 42e1c36a-c58e-4980-9dc6-c38fd7f17a4c
GUIDはpowercfg /list
を実行した際に表示される値を使用する必要があります
カレントディレクトリをエクスプローラーで開く
start .
指定ディレクトリをエクスプローラーで開く
start \