筆者の場合は、短縮したコマンドで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 になっているためスクリプトが実行できません。
制限ありってことですな。
↓
- 実行ポリシーを変更
スクリプトを実行できるように、実行ポリシーを RemoteSigned または Unrestricted に変更します。
一時的な変更
一時的に実行ポリシーを変更する場合は、以下を実行します。これは現在のセッションだけに適用され、PowerShell を閉じると元に戻ります。
Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
永続的な変更
永続的に実行ポリシーを変更する場合は、管理者権限で PowerShell を開き、以下を実行します。
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
または、システム全体に適用する場合は以下のコマンドを使用します(注意:これには管理者権限が必要です)。
Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy RemoteSigned
RemoteSigned の意味:
- ローカルで作成したスクリプトはすべて実行可能。
- ダウンロードされたスクリプトは信頼される署名が必要。
コメント