Powershell 配置文件将参数附加到某个命令

标签 powershell terraform terraform-cli

我有一个特定的命令,我希望能够将参数附加到作为 powershell 配置文件函数。虽然我不太确定每次运行此命令时能够捕获的最佳方法,但任何见解都会有所帮助。

命令:地形规划

每次运行计划时,我都希望能够检查参数并查看是否传入了 -lock=true,如果没有传入,则附加 -lock=false 到它。是否有合适的方法来捕获此命令的运行时间,而不仅仅是创建一个构建该命令的全新函数?到目前为止,我所看到的捕获命令的唯一方法是使用 Start-Transcript 但这并不能完全让我到达我需要的地方。

最佳答案

最简单的方法是创建一个包装函数来分析其参数并添加 -lock=false在调用 terraform 之前根据需要效用。

function terraform {
  $passThruArgs = $args
  if (-not ($passThruArgs -match '^-lock=')) { $passThruArgs += '-lock=false'}
  & (Get-Command -Type Application terraform) $passThruArgs
}

以上使用与实用程序相同的名称,有效地隐藏了后者,正如您的意图。

但是,我会警告不要对包装函数使用相同的名称,因为它会让人难以理解正在发生的事情。

此外,如果通过 $PROFILE 全局定义或以交互方式,在同一 session 中运行的任何毫无戒心的代码都将调用包装函数,除非显式路径或显示的 Get-Command技术被使用。

关于Powershell 配置文件将参数附加到某个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73736336/

相关文章:

用于保存大量数字的 PowerShell 变量类型

windows - 如何在具有多个输出的Invoke-Command中使用多个命令

asp.net - 在 ASP.NET 中导入模块 MSOnline 失败

powershell - 如何使用2013 Power Tools中的TFS Powershell命令

terraform - 尝试使用 etag 时找不到文件

google-cloud-platform - 使用 Terraform 为 GCS 启用 "Interoperable"访问权限?

amazon-web-services - 使用Terraform创建API网关时,为什么方法响应不同?