0

私は PostPro.ps1 という PowerShell スクリプトを持っています。必要に応じて、PostPro.ps1 スクリプトの実行前後に機能を追加できるように、このスクリプトにフックアップを提供したいと考えています。

よろしくお願いします。

ラマニ

4

2 に答える 2

1

パラメータを使用した別の方法:
postpro.ps1:

[CmdletBinding()]
Param(
   [ScriptBlock]$before,
   [ScriptBlock]$after
    )

if($before -ne $null){
Invoke-Command $before
}

write-host "hello"

if($after -ne $null){
Invoke-Command $after
}

次に、実行するスクリプトを提供できます。

$b={write-host "before"}
$a={write-host 'after' }
PS>.\postpro.ps1 -before $b -after $a
before
hello
after
于 2013-02-01T15:56:54.663 に答える
-2

これを行う 1 つの方法は、モジュールを使用することです。すべての拡張関数をモジュール内の特定の名前形式の特定のフォルダーに配置すると、各モジュールに runBefore および runAfter 関数が必要になります。

PostPro.ps1 スクリプトでは、次のようにモジュールをロードできます。

$modules = ls $(Join-Path $hookDir "postPro-extension-*.psm1") | 
    % { import-Module $_.FullName -AsCustomObject }

これにより、postPro-extension-doSomething.psm1 のような名前を持つ $hookDir 内のすべてのファイルが読み込まれます。各モジュールは、各モジュールの機能にアクセスできるオブジェクトに格納されます。関数を実行するには、以下に示すように、各オブジェクトで関数を呼び出すだけです。

スクリプトの主要部分の前に、このようにすることができます

$modules | % { $_.runBefore }

これはスクリプトの主要部分の後にあります

$module | % { $_.runAfter }
于 2013-02-01T15:43:07.977 に答える