1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PowerShellで起動時に複数スクリプトを読ませる

Last updated at Posted at 2021-03-20

概要

タイトルそのまんま
Win10で、PowerShellが起動したときに自前の関数であったりエイリアスなどを自動的に読み込む
ただし、そのスクリプトは複数ファイルで分割管理したい
ということを解決する

前提

PowerShell起動時にスクリプトを読み込ませる方法自体は
~\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
にスクリプトを書くだけである。

なお、スクリプトを読み込ませるためにはPowerShellのスクリプト実行の設定を変える必要がある。
そのためには
PowerShell Set-ExecutionPolicy RemoteSigned
というコマンドを管理者権限で実行することでできる。
詳しい説明については
「PowerShell Script 有効化」
等でぐぐってもらいたい

実装

$PSScriptDirectory = "C:\Users\{USER_NAME}\Documents\WindowsPowerShell\Scripts\"
$files = (Get-ChildItem ($PSScriptDirectory + "*.ps1")).Basename

foreach ($file in $files) {
	Write-Host -NoNewline ("Loading") -ForegroundColor Yellow
	Write-Host -NoNewline (" {0,-20}" -f $file)
	try {
		. ( $PSScriptDirectory + $file)
		Write-Host "Done" -ForegroundColor Green
	} catch{
		Write-Host "Abort" -ForegroundColor Red
	}
}

Write-Host "Configure Loading Complete" -ForegroundColor Green

このコードさっきの起動時に読み込まれるスクリプトに書き、分割したスクリプトを適当なディレクトリに置く。
(ここでは、PSScriptDirectoryという名前の変数に代入しているのを見てもらえればわかるが、起動時に読み込まれるスクリプトのあるディレクトリに新しくScriptsというディレクトリを作成し、そこにスクリプトを配置している)

以上

実装の説明

特段難しいことはしておらず
スクリプトを配置したディレクトリを変数に代入
ディレクトリにある拡張子ps1のファイル一覧を取得し、ファイル名のみ抽出(ここではロードされたファイル名を表示する機能のためにファイル名のみを抽出している。ファイル名を表示する必要がなければ、Basenameを外すことでフルパスのファイル名を取得できるため、読み込み時の処理でディレクトリ名を合体させる必要がなくなる)
ファイル名を表示し
読み込み
完了時に"Done"と表示する
また、エラーが検出されると"Abort"を表示する
(このあたりは完全なこだわりである)

スクリプトの外部読み込みは
. ScriptFile.ps1
と書くことでできる

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?