1

モジュールsysinfo.psm1に関数「Get-Uptime」を作成し、モジュールをインポートしました。

C:/pstools> get-command -Module sysinfo

CommandType     Name                                                Definition
-----------     ----                                                ----------
Function        Get-Uptime                                          ...

関数は Powershell 内で正常に機能しました。ただし、Start-job -scriptblock {Get-Uptime $servernae} で Get-Uptime 関数を使用すると、ジョブは次のエラーで失敗しました。

Receive-Job : The term 'get-uptime' 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.

誰かが私が見逃したことを教えてもらえますか? ネットを検索したところ、関数を使用する代わりにスクリプトブロックにすべてのコードを記述するという提案が見つかりましたが、試してみたところ同様のエラーが発生しました。

ありがとうございました。

4

3 に答える 3

3

InitializationScriptを使用してモジュールをインポートできます。

PS II> Start-Job -InitializationScript {import-module "c:\module.psm1"} -script {Uptime}
于 2012-09-06T11:06:36.133 に答える
2

関数を呼び出す前に、モジュールを ScriptBlock に明示的にインポートする必要があります。

于 2012-09-06T05:59:51.370 に答える
2

PowerShell ジョブは別のプロセスで実行され、ジョブ オブジェクトごとに新しい powershell.exe が作成されます。そのプロセスは、別のセッションでインポートされたモジュールを認識しません。

Get-Uptime 関数を必要とするために、Start-Job コマンドでモジュールをロードします。

于 2012-09-06T07:01:37.840 に答える