2016-12-31 6 views
2

モジュールを自分のユーザープロファイルディレクトリに配置しました。組織では、自分のホームディレクトリをネットワーク共有上に置く必要があります。モジュール関数から終了コード値を取得する方法は?

16:06:09.74 \\COMPNAME\SHNAME\Users\lit H:\My Documents\WindowsPowerShell\Modules\MyUtils 
H:>type MyUtils.psm1 
function MyFunc() 
{ 
    [cmdletbinding()] 
    Param() 

    Write-Host "now from myfunc" 
    return 8 
} 

Export-ModuleMember -Function MyFunc 

MyFuncを実行すると、意図したとおりに動作するように見えます。ただし、$LASTEXITCODEは常にNullです。

PS C:\src\powershell> MyFunc 
now from myfunc 
8 
PS C:\src\powershell> if (!$LASTEXITCODE) { Write-Host "LASTEXITCODE is null"} 
LASTEXITCODE is null 

exit 8を使用すると、すぐに私のインタラクティブホストが終了します。同じものが$Host.SetShouldExitを使用しています。

[Int32] $myRc = myfunc; 
$myRc; 

「8」はコンソールに表示されているという事実は、PowerShellは、あなたのように、アウトデフォルトに頼るされていることを示しています

+2

'$ LASTEXITCODE'はネイティブアプリケーション用であり、関数用ではなく' .ps1'スクリプト用です。 – PetSerAl

+0

@PetSerAl - Ok。 PowerShellインタラクティブホストを開いて関数を呼び出すと、終了コード値を取得する方法はありますか?関数の戻り値を取得するには、コマンドレット(.ps1)スクリプトを呼び出す必要がありますか? – lit

+3

また、関数には取得する終了コードがありません。パイプライン出力について話したら、それを変数に割り当てるか、パイプラインで次のコマンドに渡す必要があります。 – PetSerAl

答えて

0

あなたは単に例えば、変数に値を代入してみてくださいその価値観と何をするべきか教えていない。もちろん

、あなたは物事を行うにはPowerShellの方法をしたい場合は、あなたべき使用書き込み出力機能で、関数は「ヘルパー」とは反対に、コマンドレットとして使用されようとしている場合関数。

幸運を祈る!

関連する問題