Add-LocalGroupMember を使用して、ローカルグループにユーザーを追加できます。
Add-LocalGroupMember -Group "Administrators" -Member "foobar"
しかし、それはべき等ではありません。ユーザーがすでに存在する場合は、このエラーが発生します
Add-LocalGroupMember:foobarはすでにグループAdministratorsのメンバーです
このコマンドを繰り返し実行する場合に、このコマンドをエラーにしないための最良の方法は何ですか?
その理由は、これがOctopusのデプロイの一部であり、シンプルなものにプリベークされたステップを使用したくないからです。
ラッパーを単純化して、try/catchブロックにすることができます。この例は、メンバーがすでに存在する場合にのみキャッチするため、他のエラーを評価して処理することができます。
try {
Add-LocalGroupMember -Group $group -Member $member -ErrorAction Stop
} catch [Microsoft.PowerShell.Commands.MemberExistsException] {
Write-Warning "$member already in $group"
}
私はそれをラップするためにこの関数を思いついた
function Add-LocalGroupMemberSilent($groupName, $username)
{
$existingMember = Get-LocalGroupMember -Name $groupName | Where {$_.Name -eq "$username"}
if ($existingMember)
{
Write-Host "'$username' is already a member of '$groupName'"
}
else
{
Write-Host "Adding '$username' to '$groupName'"
Add-LocalGroupMember -Group "$groupName" -Member "$username"
}
}
しかし、私を逃れるよりエレガントな方法があるかもしれないと感じています
私thinkあなたは 'erroractionpreference'を探しているかもしれませんが、この記事ではそれがどのように機能するかのいくつかの例を通して説明します。
他の答えを考えると、スクリプトがこの関数よりも大きく、トラブルシューティングを続行する必要がある場合は、コードの最初に設定し、処理が完了したら「続行」に戻すことで、このコードをラップする必要があります。 。これにより、そのような非終了エラーが抑制され、ホストに出力されなくなります。