PowerShellメモ

  技術情報

Windowsではずっとバッチ派だったのですが、DockerのWindowsコンテナのDockerfileを書く機会があって、バッチだとwin10とserverの互換性の問題が出てきたため(具体例は書きませんが)遅ればせながらPowerShellデビューすることにしました。

ちなみに様々なシステムでPowerShellを利用するためのコンテナは下記になります。

PowerShell by Microsoft | Docker Hub

PowerShell By Microsoft
PowerShell for every system!

メッセージの表示

# "Hello."と表示する
Write-Host "Hello."

# 区切り文字により文字を結合する(1:2:3:4と表示)
Write-Host (1,2,3,4) -Separator ":"

# 背景色を白, 文字色を赤で表示
Write-Host "白地に赤文字にします" -ForegroundColor red -BackgroundColor white

# 途中で改行
Write-Host "ここで`r`n改行する"

# 最後の改行を行わない
Write-Host "改行しない" -NoNewline

文字列の入力

# 文字列の入力
$str = Read-Host "文字列を入力してください."

日時・時刻

# 現在の日時を yyyyMMdd_hms 形式で取得
$dateTime = Get-Date -Format "yyyyMMdd_HHmmss"

ディレクトリ移動

chdirと違ってドライブの移動も同時におこなう。

# Dドライブのtempディレクトリへ移動
Set-Location -Path 'D:\temp'

ファイルの存在チェック

#
if (Test-Path $file1) {
    Write-Host "ファイル1は存在します."
}
if (-Not (Test-Path $file2) {
    Write-Host "ファイル2は存在しません."
}

テキストファイルへの上書き・追記

# 上書き
Set-Content -Path C:\test.txt -Value "Hello."

# 追記
Add-Content -Path C:\test.txt -Value "World"

フォルダの作成

# C:\TempとC:\Temp\Workを作成する
New-Item -ItemType Directory -Path C:\Temp\Work

# 古のmdも使える
md C:\Temp

ファイル・フォルダの削除

# C:\folder配下を強制的に削除する
Remove-item -Recurse -Force C:\folder

# C:\Work\test.txt を削除する
Remove-Item -Path C:\Work\test.txt

# カレントディレクトリのファイルのうち拡張子がdocx以外のファイルを削除する
Remove-Item * -Exclude *.docx

# 拡張子がtxtのファイルを削除する
Remove-Item *.txt
Remove-Item * -Include *.txt

Remove-Item (Microsoft.PowerShell.Management) – PowerShell | Microsoft Learn

ファイル・フォルダの移動

# test.txtをtempフォルダへ移動
Move-Item C:\test.txt  C:\Temp
#
Move-Item C:\test.txt  D:\test.txt

遅延処理

# 3秒ウェイト
Start-Sleep 3

ZIPファイルの圧縮

# C:\Temp\file1.txtを圧縮して C:\Temp\myfiles.zipにする
Compress-Archive -Path "C:\Temp\file1.txt" -DestinationPath "C:\Temp\myfiles"

# 複数ファイルを圧縮して C:\Temp\myfiles.zipへ追加する(-Update)
Compress-Archive -Path "C:\Temp\file2.txt","C:\Temp\file3.txt","C:\Temp\file4.txt" -DestinationPath "C:\Temp\myfiles" -Update

# C:\Tempフォルダを圧縮して C:\tempFiles.zipにする. 同名ファイルがあったら上書き(-Force)する.
Compress-Archive -Path "C:\Temp" -DestinationPath "C:\tempFiles" -Force

圧縮できるファイルは最大2GB。

Compress-Archive (Microsoft.PowerShell.Archive) – PowerShell | Microsoft Learn

ZIPファイルの解凍

# C:\Temp\myfiles.zipをC:\Temp2へ解凍する. 同名ファイルがあったら上書き(-Force)する.
Expand-Archive -Path "C:\Temp\myfiles.zip" -DestinationPath "C:\Temp2" -Force

Expand-Archive (Microsoft.PowerShell.Archive) – PowerShell | Microsoft Learn

インクルード

# パス設定
."C:\set_path.ps1"

バッチ実行

# バッチ実行
& "test.bat" arg1 arg2 arg3

# 結果コード
Write-Host "結果コード=$LASTEXITCODE"

LEAVE A COMMENT