gpt4 book ai didi

powershell - 在 PowerShell 脚本中注入(inject)自定义步骤

转载 作者:行者123 更新时间:2023-12-03 00:49:07 25 4
gpt4 key购买 nike

假设我有以下 PS 脚本 我的脚本.ps1 :

param(
[string]$ID
)

Write-Host "Step 1 $ID"
Write-Host "Step 2 $ID"
# Inject some custom step here
Write-Host "Step 3 $ID"

我从另一个 PS 脚本调用
$ [path]\myscript.ps1 -ID 001
$ [path]\myscript.ps1 -ID 002
$ [path]\myscript.ps1 -ID 003

现在当我运行最后一个电话时:
$ [path]\myscript.ps1 -ID 003

我想在之后触发一些自定义行为/步骤:
Write-Host "Step 2 $ID"

我的脚本.ps1 .我考虑过这个:
$ [path]\myscript.ps1 -ID 001
$ [path]\myscript.ps1 -ID 002
$ [path]\myscript.ps1 -ID 003 -customScript "[path]\custom.ps1"

然后更新 我的脚本.ps1 到:
param(
[string]$ID,
[string]$custom=""
)

Write-Host "Step 1 $ID"
Write-Host "Step 2 $ID"
if($custom) {
& $custom
}
# Inject some custom step here
Write-Host "Step 3 $ID"

也许有一些更优雅的方式来做到这一点?

我看过:
http://blogs.msdn.com/b/powershell/archive/2008/06/11/powershell-eventing-quickstart.aspx

但它似乎并不真正符合目的。

最佳答案

您可以通过自定义ScriptBlock并执行它:

param(
[string]$ID,
[scriptblock]$custom
)

Write-Host "Step 1 $ID"
Write-Host "Step 2 $ID"

# Inject some custom step here
if($custom){. $custom}

Write-Host "Step 3 $ID"

例子:
$ [path]\myscript.ps1 -ID 001
$ [path]\myscript.ps1 -ID 002
$ [path]\myscript.ps1 -ID 003 -custom {Write-Host "I'm a custom scriptblock!"}

有关执行脚本 block 的更多信息:
  • Some observations about Powershell script blocks .
  • 关于powershell - 在 PowerShell 脚本中注入(inject)自定义步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34157020/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com