1. ホーム
  2. powershell

[解決済み】PowerShellで、ファイルに関数を定義して、PowerShellのコマンドラインから呼び出すにはどうしたらいいですか?

2022-04-03 03:22:50

質問内容

カスタム関数を定義したい .ps1 ファイルがあります。

ファイル名はMyFunctions.ps1で、内容は以下のようなものだと想像してください。

Write-Host "Installing functions"
function A1
{
    Write-Host "A1 is running!"
}
Write-Host "Done"

このスクリプトを実行し、理論的にA1関数を登録するには、.ps1ファイルが存在するフォルダに移動し、そのファイルを実行します。

.\MyFunctions.ps1

これが出力されます。

Installing functions
Done

しかし、A1を呼び出そうとすると、「その名前のコマンド/関数は存在しない」というエラーが表示されるだけです。

The term 'A1' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling
 of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:3
+ A1 <<<<
    + CategoryInfo          : ObjectNotFound: (A1:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

私はいくつかのPowerShellの概念を誤解しているようです。スクリプトファイルに関数を定義してはいけないのですか?

備考 実行ポリシーを 'RemoteSigned' に設定済みであること。また、.ps1ファイルの実行にはファイル名の前にドットを使用することも知っています。

どのように解決するのですか?

PowerShellのコマンドラインから試してみてください。

. .\MyFunctions.ps1
A1

ドット演算子はスクリプトのインクルード、別名quot;ドットソースに使われます(または ドットソース表記" )