【问题标题】:Automatically confirm Yes to powershell script对powershell脚本自动确认是
【发布时间】:2019-01-25 22:04:14
【问题描述】:

我知道这个问题在很多 stackoverflow 问题中似乎很熟悉。但这与其他问题不同。 基本上我有一个 PS 脚本,它使用模块“AzSK”来运行某些东西,我在循环中使用这个命令将多个属性添加到我的天蓝色存储中。在每一步,命令都会要求我确认是否要继续(是/否)。 因为我使用循环进行超过 40 次迭代,所以每次执行命令时都需要确认。 像许多 Stackoverflow 问题和互联网告诉我一样,我需要尝试在我的命令中添加 -Force 、 -Confirm 以自动确认读取输入的“是”。但是此答案仅适用于内置此参数的命令。使用 get-help 命令 -Detailed 我没有看到任何可用的参数。所以我想知道是否可以创建这个自动“Y”回复,即使该命令不允许任何参数。

我使用的命令是Get-AzSKAzureServicesSecurityStatus,这会添加证明状态以控制 azure blob 存储中的 id。该命令仅允许添加一个证明状态,因此我将其包装在 for 循环中。这让我不断确认的斗争更加糟糕。

【问题讨论】:

  • 当你说你用过-Confirm,你是用-Confirm:$false吗?一般是这样使用-Confirm参数为了防止提示,我只是想确认一下。
  • 另一件事:Get-* cmdlet 通常不会导致更改,所以您确定没有不同的命令提示吗?您说您正在“循环使用此命令以向我的天蓝色存储添加多个属性”。 Get-* cmdlet 不会导致更改,因此我认为您正在查看提示的错误原因。可能应该包含您的代码示例。
  • 嗨achahbar,你解决了这个问题吗?下面的答案对你有用吗?

标签: azure powershell


【解决方案1】:

请尝试使用以下格式:

cmd /c echo y | powershell "the command which will propmt"

我做了一个简单的测试来删除一个目录,并且工作正常。

【讨论】:

  • 这看起来很有希望,但遗憾的是这行不通。我收到此错误powershell : Get-AzSKAzureServicesSecurityStatus : A positional parameter cannot be found that accepts argument 'check'powershell : Get-AzSKAzureServicesSecurityStatus : A positional parameter cannot be found that accepts argument 'check'
  • 你能发布一些虚拟代码,以便我可以在我身边进行测试吗?
  • paste.ee/p/MAoRX 这是来自模块 Azsk (import-module AzSK) 的命令 Doc: github.com/azsk/DevOpsKit-docs
  • 嗨@achahbar,你在哪里运行脚本?本地还是某处?
  • 我在本地运行它们
【解决方案2】:

这可能不是您的问题的答案"if it was possible to create this auto "Y" reply even if the command does not allow any parameter for it." 但由于您是专门为 Secure DevOps Kit for Azure(AzSK) 的证明功能尝试它,这可能会有所帮助:

每个控件弹出确认消息并且不允许“强制”是的原因是:

在使用 Azure (AzSK) 的安全 DevOps 工具包。 In particular, when choosing to not 修复一个失败的控制,你正在承担责任,没有什么会 即使没有正确/完全配置安全性也会出错。

理想情况下,批量证明功能适用于需要跨多个资源实例/资源组证明相同控件的情况,反之亦然。可以使用此功能的场景请参考this(虽然不推荐)。

希望这会有所帮助!

【讨论】:

  • 感谢您的努力。我想我将关闭这个问题,因为确实出于安全原因,这在 Azsk 中甚至是不可能的。但是,您的链接已经是我用来添加批量证明状态的方式。
猜你喜欢
  • 2014-06-09
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
相关资源
最近更新 更多