PowerShellで独自のエイリアスやショートカットを設定したい

# やりたいこと
* 当記事のタイトルのとおり
* bashでいうbash_profileみたいなことをやりたい


# 【随時更新】今のわたしのプロファイル

```
# ↓↓↓↓↓Posh-git関連
function prompt {
    $origLastExitCode = $LASTEXITCODE
    Write-Host "PS " -nonewline
    Write-VcsStatus
    Write-Host ($ExecutionContext.SessionState.Path.CurrentLocation) -ForegroundColor Green
    $LASTEXITCODE = $origLastExitCode
    "$('>' * ($nestedPromptLevel + 1)) "
}

Import-Module posh-git

# ↑↑↑↑↑Posh-git関連

# sakuraエディタのエイリアス
Set-Alias sakura "C:\Program Files (x86)\sakura\sakura.exe"

function pf(){sakura "C:xxxxxxx\Microsoft.PowerShell_profile.ps1"} 


# linuxコマンド風
Function touch($file) {
  If (Test-Path $file) {
    (Get-Item $file).LastWriteTime = Get-Date
  } Else {
    Out-File -encoding Default $file
  }
}


# chocolateyとはWindows 用のパッケージ管理ソフトウェアです
# Linuxでいう apt-get のwindows版
# Import the Chocolatey Profile that contains the necessary code to enable
# tab-completions to function for `choco`.
# Be aware that if you are missing these lines from your profile, tab completion
# for `choco` will not function.
# See https://ch0.co/tab-completion for details.
$ChocolateyProfile = "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1"
if (Test-Path($ChocolateyProfile)) {
  Import-Module "$ChocolateyProfile"
}


# ポート番号を指定して、使用しているプロセスIDを調べる
function getPidPort($port){  Get-Process -Id (Get-NetTCPConnection -LocalPort $port).OwningProcess;}

# ポート番号を指定して、使用しているプロセスをkillする
function killPort($id){ Stop-Process $id;}

# ファイル、ディレクトリ操作
function deldir($dir){ Remove-Item $dir -recurse -force}

```


# 独自エイリアスの設定場所
* プロファイルと呼ばれるファイルに設定する

# プロファイルの存在確認
* 下記コマンドを実行　→　ない場合はFalseと表示された

```
PS C:> Test-Path $profile
False
```

# プロファイルを作成

```
PS C:> New-Item -path $profile -type file -force


    ディレクトリ: C:\Users\xxxx\Documents\WindowsPowerShell


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2020/04/08     16:36              0 Microsoft.PowerShell_profile.ps1
```

# プロファイルの編集
* ひとまずsakuraエディタのエイリアスと、ショートカットを設定してみた

```:Microsoft.PowerShell_profile.ps1
# sakuraエディタのエイリアス
Set-Alias sakura "C:\Program Files (x86)\sakura\sakura.exe"
# sakuraエディタ格納ディレクトリへのショートカット
function sakuradir(){cd "C:\Program Files (x86)\sakura"} 
# プロファイルを起動するショートカット
function pf(){sakura C:\Users\USER\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1} 

```

# プロファイルの即時再読み込み
* コマンド実行すると、エラーになった

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

* Windowsの初期設定ではPowerShellスクリプトの実行ポリシーによって許可されていないらしい
* ってことで、実行ポリシーの確認

```
PS C:> Get-ExecutionPolicy
Restricted　　→　すべてのスクリプトの実行を制限 (初期設定)
```

* 実行ポリシーを恒久的にRemoteSignedに変更する
RemoteSigned：ローカル上のスクリプトと非ローカル上の署名のあるスクリプトのみ実行可能

```
PS C:> 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
Set-ExecutionPolicy : レジストリ キー 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' へのアクセスが拒否されました
。 既定 (LocalMachine) のスコープの実行ポリシーを変更するには、[管理者として実行] オプションを使用して Windows PowerShell を起動してください。現在のユ
ーザーの実行ポリシーを変更するには、"Set-ExecutionPolicy -Scope CurrentUser" を実行してください。
発生場所 行:1 文字:1
+ Set-ExecutionPolicy RemoteSigned
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (:) [Set-ExecutionPolicy], UnauthorizedAccessException
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand
```

と怒られたので、言われるがままに

```
PS C:> Set-ExecutionPolicy -Scope CurrentUser

コマンド パイプライン位置 1 のコマンドレット Set-ExecutionPolicy
次のパラメーターに値を指定してください:
ExecutionPolicy: RemoteSigned

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

* もう一度再読み込み実行　→　エラーが出ないので、うまくいったみたい

```
PS C:> . $profile
```

# プロファイルの反映確認

```
PS C:\> sakuradir
PS C:\Program Files (x86)\sakura>
```