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

一种方法是使用模块。如果你把你所有的扩展函数都放在某个文件夹中的某个模块中,以某种名称格式,那么每个模块都需要一个runBefore和一个runAfter函数。

在 PostPro.ps1 脚本中,您可以像这样加载模块:

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

这将加载 $hookDir 中所有名称类似于 postPro-extension-doSomething.psm1 的文件。每个模块都将存储在一个对象中,使您可以访问每个模块的功能。要运行这些函数,您可以在每个对象上调用它们,如下所示。

您可以在脚本的主要部分之前像这样

$modules | % { $_.runBefore }

这在脚本的主要部分之后

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