我可以使用Add-LocalGroupMember将用户添加到本地组:
Add-LocalGroupMember -Group "Administrators" -Member "foobar"
但它不是幂等的。如果用户已经存在,那么您会收到此错误
Add-LocalGroupMember : foobar 已经是管理员组的成员
当您想重复运行此命令时,使此命令不出错的最佳方法是什么?
原因是这是 Octopus 部署的一部分,我不想为如此简单的事情使用预烘焙步骤。
我可以使用Add-LocalGroupMember将用户添加到本地组:
Add-LocalGroupMember -Group "Administrators" -Member "foobar"
但它不是幂等的。如果用户已经存在,那么您会收到此错误
Add-LocalGroupMember : foobar 已经是管理员组的成员
当您想重复运行此命令时,使此命令不出错的最佳方法是什么?
原因是这是 Octopus 部署的一部分,我不想为如此简单的事情使用预烘焙步骤。
您可以将包装器简化为 try/catch 块。此示例仅在成员已存在时捕获,因此您仍然可以评估和处理其他错误。
我想出了这个函数来包装它
但我觉得可能有一种更优雅的方式让我难以捉摸
我想你可能正在寻找“erroractionpreference”,这篇文章通过几个例子来解释它是如何工作的。
https://blogs.technet.microsoft.com/heyscriptingguy/2010/03/08/hey-scripting-guy-how-can-i-use-erroractionpreference-to-control-cmdlet-handling-of-errors/
鉴于另一个答案,如果您的脚本大于此函数并且您需要继续进行故障排除,那么您需要通过在开头设置它并在完成处理后将其设置回“继续”来包装这段代码. 这将抑制类似的非终止错误,因此它们不会打印到您的主机。