Open5
PowerShellメモ

パッケージマネージャー scoopを導入する
- 標準搭載されているwingetにないパッケージをインストールするため
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
cowsayをインストールしてみる
- scoop search cowsay
- 検索したら見つかった
- scoop install cowsay
使用してみる
cowsay hello
< hello >
-------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
かわいいね

バージョン確認
Windows PowerShell(PS) のバージョン確認方法
-
$PSVersionTable
を入力 - PSVersionってのがPowerShellのバージョン
Name Value
---- -----
PSVersion 7.5.1
PSEdition Core
GitCommitId 7.5.1
OS Microsoft Windows 10.0.26100
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0

なんか2つある
Windows PowerShell 5.1 と PowerShell 7.x の相違点
- pwsh
- WindowsPowerShell
- 基本的にpwshの方使ったほうがいいみたい
pwsh
- こっちが最新ぽい
- クロスプラットフォーム対応しているっぽい
WindowsPowerShell
- 5.1バージョンで古め
- 古いWindows環境依存のものに使ったりするっぽい?
比較
AI引用
比較項目 | Windows PowerShell (powershell ) |
PowerShell Core / PowerShell 7+ (pwsh ) |
---|---|---|
実行ファイル名 | powershell.exe |
pwsh |
バージョン | 1.0 ~ 5.1 | 6.0 ~ 現在 |
ベース技術 | .NET Framework | .NET Core / .NET |
対応OS | Windowsのみ | Windows, macOS, Linux |
開発形態 | クローズド | オープンソース |
推奨される用途 | レガシーシステムやWindows専用管理 | モダンでクロスプラットフォームな用途 |

コマンドプロンプトとの違い
構文
-
cmd:レガシーな構文
- linuxとかの構文と似ているので、こっちのほうが使いやすそう
dir
-
pwsh:.NET ベースでわかりやすい
- モダンな感じがするが、冗長さがある
- オブジェクトの操作ができる
Get-ChildItem

オブジェクト操作
- pwshはオブジェクト操作とかが使える
- ファイルの名前や更新日付の取得などがしやすいみたい
$files = Get-ChildItem
$files[0] | Get-Member
Name Property string Name { get; }
Length Property long Length { get; }
LastWriteTime Property datetime LastWriteTime { get; }
...
カスタムオブジェクト作成
- オブジェクトを作成できるっぽい
- オブジェクト指向を利用したコマンド操作ができる
# カスタムオブジェクトの作成
$person = [PSCustomObject]@{
Name = "Taro"
Age = 30
}
$person.Name # => "Taro"
for-each
- オブジェクトの繰り返し処理などもいい感じに使える
- C#っぽい構文
$fruits = @("apple", "banana", "orange")
foreach ($fruit in $fruits) {
Write-Host "果物:$fruit"
}