powershellの使い方
概要
- コマンドプロンプトの代わりに作成されたwindowsのシェル
- linuxやmacosxでも一応動くとされている
Foo-Bar
のようなキャメルケースでコマンドが定義されている- linuxのようなコマンドがいくつかエイリアスされている
インストール
> choco install powershell-core
基本的な使い方
GNU Linuxと似たコマンドをインストール
> scoop install 7zip curl sudo git openssh
> cargo install coreutils
- rustで記述されたジェネリックなcoreutils
aliasの確認
> Get-Alias
CommandType Name Version Source
----------- ---- ------- ------
Alias % -> ForEach-Object
Alias ? -> Where-Object
Alias ac -> Add-Content
Alias cat -> Get-Content
Alias cd -> Set-Location
Alias CFS -> ConvertFrom-String 3.1.0.0 Microsoft.PowerShell.Utility
Alias chdir -> Set-Location
Alias clc -> Clear-Content
Alias clear -> Clear-Host
...
ページャー
- インストールされたlessは日本語が正常に表示されない
- 以下のコマンドで代替できる
> cat *.csv | Out-Host –Paging
シンボリックリンクの作成
- シンボリックリンクはフルパスで記述されておく必要がある
-Target <実態があるパス>
-Path <作成するシンボリックリンクのパス>
具体例(OneDriveの中にあるデスクトップフォルダを, 英語の名前でシンボリックリンクを作成する)
> New-Item -ItemType Junction -Target "$PWD\OneDrive\デスクトップ" -Path "$PWD\Desktop"
NetIPConfiguration
- ipアドレスの操作関連
IPアドレスとインターフェースインデックスの確認
> Get-NetIPConfiguration
IPアドレスをセットする
192.168.40.16/24
をインターフェースインデックス23
に追加する例
> New-NetIPAddress -InterfaceIndex 23 -IPAddress 192.168.40.16 -PrefixLength 24
パッケージをpowershell経由でアンインストールする
アプリケーション一覧を得る
> Get-WmiObject -Class Win32_Product | Select-Object -Property Name
- powershell経由で操作可能なパッケージ一覧が得られる
アプリケーション名を指定してアンインストール
> Get-Package -Name "VNC Server 6.8.0" | Uninstall-Package
powershellのバージョンの確認
> echo $PSversionTable
Name Value
---- -----
PSVersion 7.2.5
PSEdition Core
GitCommitId 7.2.5
OS Microsoft Windows 10.0.22610
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
powershellのアップグレード
- chocolateyなどを利用
> choco install pwsh
- sshした際に起動するシェルはレジストリで定義されている
- 単純に最新のpowershellを入れただけでは反映されない
- 参考
ホストの再起動
> Restart-Computer
プロファイルをリロード
> . $PROFILE
発展
starshipをインストールしてprofileを設定
> scoop install starship neovim
> echo $PROFILE # .bashrc, .zshrcに相当するパスを確認
> nvim $PROFILE
以下の内容を書き込む
Invoke-Expression (&starship init powershell)
# Remove-Alias ls
Set-Alias ls lsd
Set-Alias b bat
Remove-Alias cp
function cp { coreutils cp $args }
function ll { coreutils ls $args }
function df { coreutils df $args }
function date { coreutils date $args }