PowerShellでLinuxのaliasみたいなことをする方法 | クズリーマンのカス備忘録

PowerShellでLinuxのaliasみたいなことをする方法

スポンサーリンク

筆者の場合は、短縮したコマンドでsshを繋ぎたいのだった。

WSL2+Windowsターミナル+VPN 環境だと、接続先で動作がおかしいことがあるからPowerShellからSSHするという方法を取ってるんだよね。

でWSL2のUbuntuからだとaliasを.bashrcに書いてあるので、1文字でSSH接続したいアクセス先につなげたりしてたわけです。

これをPowerShellでもやりたいです。


引数のないコマンドをAliasしたいんだったら、

Set-Alias -Name 別名 -Value 実行したいコマンド

でできる。
例)

Set-Alias -Name ls -Value Get-ChildItem

だがSSHは?

引数ありますよね。

そーゆー引数がある場合はfunctionを使いやす。

やり方

一時的にやりたい場合、

たとえば、「f」というaliasを叩くとssh先につながるようにしたい場合、

以下をPowerShell上で実行する。(内容編集してプロンプトにコピペしたら良い)

function f {
    ssh USER_NAME@ADDRESS
}

だがこれだといましか有効になっていない。たとえば、OS再起動とかすると設定が消える。

恒久的に設定したい場合、

$PROFILEに書いてしまう。

notepad $PROFILE

とかで開いてね。

わたくしはビマーだから以下で開く。

vim $PROFILE

$PROFILEが無くて編集できない場合、

vim で最初やったとき、保存しようとしたら保存用に開けません とか言われて怒られた。
なんなら、ファイルだけじゃなくて親フォルダもなかった。
詳細原因を確認してみたら、ファイルが存在しなかった。どうも、OneDriveフォルダに設定されていたからのもよう。

なのでフォルダとファイルを作成してしまう。

親ディレクトリを作成する

New-Item -ItemType Directory -Path (Split-Path -Parent $PROFILE) -Force

PROFILEファイル自体を作成する

New-Item -ItemType File -Path $PROFILE -Force

PROFILEの内容を即時反映させたい場合、

. $PROFILE
. : このシステムではスクリプトの実行が無効になっているため、~とか怒られた場合、

このエラーは、PowerShell の 実行ポリシー がスクリプトの実行を許可していないために発生しています。実行ポリシーを変更することで解決できます。

解決方法
1. 現在の実行ポリシーを確認
以下のコマンドを実行して、現在の実行ポリシーを確認します。

Get-ExecutionPolicy

多くの場合、Restricted になっているためスクリプトが実行できません。

制限ありってことですな。

  1. 実行ポリシーを変更

スクリプトを実行できるように、実行ポリシーを RemoteSigned または Unrestricted に変更します。

一時的な変更
一時的に実行ポリシーを変更する場合は、以下を実行します。これは現在のセッションだけに適用され、PowerShell を閉じると元に戻ります。

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned

永続的な変更

永続的に実行ポリシーを変更する場合は、管理者権限で PowerShell を開き、以下を実行します。

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

または、システム全体に適用する場合は以下のコマンドを使用します(注意:これには管理者権限が必要です)。

Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy RemoteSigned

RemoteSigned の意味:

  • ローカルで作成したスクリプトはすべて実行可能。
  • ダウンロードされたスクリプトは信頼される署名が必要。

コメント

タイトルとURLをコピーしました