gpt4 book ai didi

powershell - 以原子方式运行 powershell 命令

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

我有 3 个 powershell 命令需要同步运行,因为我需要将输出从第一个命令传递到第二个命令,依此类推。但是,如果出现任何失败,我需要退出所有 3 个操作。是否有 cmdlet 或技术可以在 powershell 中启用此行为?

最佳答案

您可以将每个命令包装在一个对象或哈希表中,并带有相应的“回滚”操作和测试:

$Commands = @(
@{
Action = { Set-Value $PathOne "newValue" }
RollBack = { Set-Value $PathOne "oldValue" }
Test = { Test-Something }
}
@{
Action = { Set-Value $PathTwo "newValue" }
RollBack = { Set-Value $PathTwo "oldValue" }
Test = { Test-Something }
}
)

然后使用 Stack<Scriptblock>跟踪发生“回滚”时需要执行的操作

$RollbackStack = [System.Collections.Generic.Stack[Scriptblock]]::new()

foreach($Command in $Commands){
# Execute command
& $Command.Action

# Add rollback action to stack
$RollbackStack.Push($Command.Rollback)

# Test result, roll back if failed
if(-not(& $Command.Test)){
foreach($rollbackAction in $RollbackStack){
& $rollbackAction
}
}
}

关于powershell - 以原子方式运行 powershell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54351519/

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