2017-05-18 15 views
1

function.ps1ファイルに関数を定義してから、別のスクリプトから呼び出すことができます。このような何か:公開機能の作成方法

Functions.ps1:

Function Hi() 
{ 
"hi" 
} 

別のスクリプト(Call.ps1)からそれを呼び出します。

Call.ps1:

invoke-expression -Command .\functions.ps1 
Hi 

しかし機能は、スクリプトfunctions.ps1のローカルスコープに定義されていると私はERRを取得している:

The term 'hi' 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, v erify that the path is correct and try 
again. 

は、この問題を解決するための簡単な方法はありますか?

. .\functions.ps1 
Hi 

答えて

5

s)。

したがって、このような関数を使用するスクリプトでは、次のように入力します。

。 。\ functions.ps1 その後、そのファイルでfuncitonsを呼び出すことができます。

メモリごとに少し違いますが、動作すると思います。

編集:brainfartを削除.. :)

0

私はこれを行う方法は、関数を(使用する必要があるスクリプトでファイルsoruceドットになると思います:あなたはdotsourceあなたの現在の実行空間にそれをロードするためのスクリプトに持って

+0

あなたの答えが正しいですが、それは私がすでに提供の答えに追加の情報を提供していません.... –

+0

私はその点を理解しませんコメント。私の答えに何が問題なのです...それは正しいのですか? 2つの間に2分のようなものがありました。これは、あなたよりも多くの時間を入力することを意味しています。 –

+0

どちらも正しいです。あなたがあなたの答えを追加したとき、それは正当なものでしたが、他の答えに何も追加しません。 –

0

うん、dotsourceは、あなたが探しているものです。 他の人がdotsourcedスクリプトに含まれる

.C:\function1.ps1 

すべての機能とロジックがロードされます言うように、あなたのスクリプトにスペースが含まれている場合は、スペースがなければ、この

."C:\Dotsourced script.ps1" 

のようなソースに点在でしょう、ですそれを調達する際に。だから、スクリプトをあなたの関数の中で使うことをやめてください。さもなければ、それはソースになると実行されます。

例えばSS64でそれについて詳しく読む: https://ss64.com/ps/source.html

関連する問題