我有一個名爲PostPro.ps1.I的PowerShell腳本,想爲此腳本提供一個連接,所以如果需要在PostPro.ps1腳本執行之前和之後添加功能 。如何將連接添加到Powershell腳本
在此先感謝您的幫助!
Ramani
我有一個名爲PostPro.ps1.I的PowerShell腳本,想爲此腳本提供一個連接,所以如果需要在PostPro.ps1腳本執行之前和之後添加功能 。如何將連接添加到Powershell腳本
在此先感謝您的幫助!
Ramani
做到這一點的一種方法是使用模塊。如果將所有擴展函數都放入某個具有特定名稱格式的文件夾中,則每個模塊都需要一個runBefore和一個runAfter函數。
在你PostPro.ps1腳本,你可以加載模塊是這樣的:
$modules = ls $(Join-Path $hookDir "postPro-extension-*.psm1") |
% { import-Module $_.FullName -AsCustomObject }
這將加載所有在$ hookDir有看起來像postPro波及doSomething.psm1名的文件。每個模塊都將存儲在一個對象中,以便您訪問每個模塊功能。要運行這些函數,您可以在每個對象上調用它們,如下所示。
你可以去喜歡這個劇本
$modules | % { $_.runBefore }
的主要部分之前,該腳本
$module | % { $_.runAfter }
另一種方式與參數的主體部分後:
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
有人可以解釋我如何可以回答OP?以及如何工作? –
這是一個模糊的問題,所以我不確切地知道需求是什麼。但是這提供了一種在腳本之前和之後運行代碼而無需修改腳本本身的方法。 –
檢查這一行:'$ modules = ls Join-Path $ hookDir「postPro-extension - *。psm1」',請 –