Rock'n'Hack ブログ

それなりハッカーを目指して、もろもろのメモ。bloggerから引っ越しました。

Windows10のPowerShellコンソールでaliasを設定する方法

  • Windowsでちょいちょいgitを使う際にpowershellを利用していたのだけど、いい加減 git diff とか素直に打つのが嫌になった。 g d で済ませたい。
  • dのようなgitコマンドのaliasは、linux同様.gitconfigに設定すればOK。
  • gの部分をどうすればいいか調べたところ、ちょっとハマったのでメモ。

powershellプロファイル作成

powershellにも.bashrc的な設定ファイルがあるとのことなので、まずはそれを作る。

New-item –type file –force $profile

上記コマンドを実行すると、下記にプロファイルが作成される。 これがpowershellコンソール起動時に毎回読み込まれる。

  • %USERPROFILE%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

 

プロファイルにaliasを登録

作成後は中身は空なので、Set-Aliasコマンドを記載し、起動時にaliasが設定されるようにする。

Set-Alias g git

とりあえずこれでOK、意気揚々とpowershellを起動してみると…

Windows PowerShell
Copyright (C) 2015 Microsoft Corporation. All rights reserved.

. : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\***\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 を読み込む
ことができません。詳細については、「about_Execution_Policies」(http://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:3
+ . 'C:\Users\***\Documents\WindowsPowerShell\Microsoft.PowerShel ...
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess
PS C:\Users\***>

ダメ。どうも Powershell には実行ポリシーというものがあるらしく、デフォルトではRestrictedというpowershellスクリプトの実行許可が無い状態になっているらしい。

> Get-ExecutionPolicy
Restricted

 

Powershell 実行ポリシー変更

仕方が無いので、実行ポリシーを変更する。管理者権限でpowershellを実行してコマンド実行。

> Set-ExecutionPolicy RemoteSigned

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

> Get-ExecutionPolicy
RemoteSigned

そして再度実行…

Windows PowerShell
Copyright (C) 2015 Microsoft Corporation. All rights reserved.

. : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\***\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 を読み込む
ことができません。詳細については、「about_Execution_Policies」(http://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:3
+ . 'C:\Users\***\Documents\WindowsPowerShell\Microsoft.PowerShel ...
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess
PS C:\Users\***>

まだダメ。powershell開き直すとダメになる。どうも Windows10 の場合はレジストリを変更する必要があるらしい(2016/06/27現在)。
参考: windows 10 - Cannot set Powershell ExecutionPolicy for CurrentUser - Server Fault

 

レジストリ作成

  • キー: HKEY_CURRENT_USER\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
  • 値: ExecutionPolicy(文字列)
  • 値のデータ: RemoteSigned

これを設定すると晴れて、

PS C:\WINDOWS\system32> g
usage: git [--version] [--help] [-C <path>] [-c name=value]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]

ようやく alias が設定された! 中々大変だった…

 

まとめ

New-item –type file –force $profile
⇒ %USERPROFILE%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
  • プロファイルにaliasを登録
Set-Alias g git
  • レジストリ作成
    • キー: HKEY_CURRENT_USER\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
    • 値: ExecutionPolicy(文字列)
    • 値のデータ: RemoteSigned

 

おしまい。