NAKED WETWARE

「わがままになるのが怖い奴に宇宙は拓けねェさ」

PowerShellの設定

PowerShellの設定

WSLが使えない現場で、bashに似たコンソールはないかと調べてたらPowerShellに行き当たった。

コマンドプロンプトよりもかなり使いやすく、いじればbashにかなり近い使い方ができた。

今回は、そのPowerShellの設定方法をメモしておく。

実行ポリシーの変更

スクリプトなどを実行できるように、実行ポリシーの変更を行う。

管理者権限で実行する必要がある。管理者権限での呼び出し方はいくつかあるけど、ここでは以下の2つを示しておく。

監視者権限での実行(1)

  1. [Windows] + r
  2. 出てきた入力欄に powershell と入力する
  3. Shift + Ctrl + Enterで実行

監視者権限での実行(2)

  1. [Windows] + x, a

実行スクリプト

# 初期ではRestrictedになっている。
> Get-ExecutionPolicy
Restricted

# 実行ポリシーを変更
> Set-ExecutionPolicy RemoteSigned

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): Y

> Get-ExecutionPolicy
RemoteSigned

> exit

余談だけど、ネットから落としてきたスクリプトなどなZoneIDが付与されて、ローカルのスクリプトと区別されるらしい。

https://www.atmarkit.co.jp/ait/articles/0805/16/news139.html

bashっぽくする

PowerShell拡張機能を提供していたPSReadLineモジュールというのがある。

最近のPowerShellでは、このモジュールがバンドルされている。

このPSReadLineの設定をすることで、bashっぽい動作が可能になる。

# PSReadLineOptionにはEmacsというものがあるので、これを設定する
> Set-PSReadLineOption -EditMode Emacs
# C+iにTabの動作(Complete)を割り当てる
> Set-PSReadLineKeyHandler Ctrl+i Complete

https://dev.classmethod.jp/articles/powershell-core-6-psreadline/

-EditModeは、他にもviモードがあるらしい。

詳細は公式ドキュメント

https://docs.microsoft.com/ja-jp/PowerShell/module/psreadline/Set-PSReadlineOption?view=powershell-6#parameters

Profileの設定

上でやったbashっぽくするフローでbashっぽく使えるようになったけど、毎回同じことをしないといけない。

なので、.bashrc/bash_profileみたいなやつを設定する。

そのために、 Microsoft.PowerShell_profile.ps1 というファイルを用意する

> New-Item -Path $profile -Type file -Force

用意した Microsoft.PowerShell_profile.ps1 というファイル編集する。

Set-PSReadLineOption -EditMode Emacs
Set-PSReadLineKeyHandler Ctrl+i Complete

# Prompt変更
# https://qiita.com/endo_hizumi/items/c5a44036227d1f408aa5 を参考


# llを作成
# http://suyamasoft.blue.coocan.jp/PowerShell/Tips/File/GetChildItem/index.html#GetChildItemwを参考

そもそもこのProfileの意味論的立ち位置がよくわかってないので、何を記載して何を記載すべきでないかもよくわかってない。



これでbashがなくてもそれっぽく使えるコンソール環境を手に入れた。

QOLがちょっぴり上がった。