0

私はSQLデータベーステーブルでADグループを最新のものにしようとしています。しかし、私は自分のロジックを正しく動作させることができません。ここに私が意味するもののサンプルがあります:

    $group = "<ADGroupName>"
    $user = (Get-ADUser -Identity <sAMAccountName> -Properties MemberOf,sAMAccountName | Select-Object MemberOf,sAMAccountName)

    Function Add-ADUserToGroup{
        if ($user.MemberOf -notmatch $group){
            Add-ADGroupMember -Identity $group -Members $user.sAMAccountName
            }
        else{
            Wirte-Host "User is already a member of $group"
            }
        }

    Add-ADUserToGroup

sAMAccountName を$user変数セットに入れ、$group変数で指定されたグループが存在する場合でも、グループに追加しようとして、グループに既に存在するため失敗します。-notmatch私はなどの代わりに他のオペランドを試しまし-notin -neたが、何もifステートメントを正しく評価していないようで、その理由がわかりません。助けてくれてありがとう。

4

2 に答える 2

2

代わりにこれを試してください:

$group = "<ADGroupName>"
$user = (Get-ADUser -Identity <sAMAccountName> -Properties MemberOf,sAMAccountName | Select-Object MemberOf,sAMAccountName)

Function Add-ADUserToGroup{
    if (-not ($user.MemberOf -match $group)){
        Add-ADGroupMember -Identity $group -Members $user.sAMAccountName
        }
    else{
        Wirte-Host "User is already a member of $group"
        }
    }

Add-ADUserToGroup

配列に対して照合を行ってから、IF で結果を [bool] としてキャストしています。

$user.MemberOf -notmatch $groupユーザーがメンバーであるが一致しないすべてのグループを返します$group。それが何かを返す場合、結果はIFに対してTrueになり、おそらく常にいくつかを見つけるでしょう。

于 2013-04-09T13:10:45.597 に答える
0

それで、私は解決策を見つけました、そしてそれはオペランドにあります。だから私はこれを使用する場合:

if ($user.MemberOf -notmatch $group){
     <Foo>
     }

if ステートメントはまったく正しく評価されませんが、これを使用すると:

if (!($user.MemberOf -match $group)){
     <Foo>
     }

if ステートメントは正しく評価されます。説明はありませんが、うまくいきます。

于 2013-04-09T13:01:24.833 に答える