1

powershell スクリプトを使用して、ローカル グループのユーザーを置き換えようとしています。

Function ReplaceUserInGroup {

    Param (
        [string]$Group,
        [string]$OldUserName,
        [string]$NewUserName        
    )

    [string]$computer=$env:ComputerName


    If($Group -And $OldUserName -And $NewUserName ) {
        $LocalGroup = [ADSI]"WinNT://$computer/$Group,group"

        $LocalGroup.Add("WinNT://$computer/$NewUserName")

        $LocalGroup.Remove("WinNT://$OldUserName")
    }
    Else {
            Write-Warning " ReplaceUserInGroup : Some or all the parameters are empty"
    }


}

このスクリプトの問題は、OldUserName がローカル グループに存在しない場合に失敗することです。

ローカルグループからユーザーを削除する前に、ユーザーがグループに存在するかどうかを確認したいと思います。

言い換えれば、以下のようなif条件でRemove関数行をラップしたいと思います。

If (UserName exists in Localgroup) {
    $LocalGroup.Remove("WinNT://$OldUserName")
}

ユーザーの存在を確認するには?

4

2 に答える 2

2
    $members = $LocalGroup.psbase.Invoke("Members") | Foreach-Object  {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null) }

    if($members -contains $OldUserName)
    {
        "$OldUserName is member"
    }
    else
    {
        "$OldUserName is NOT a member"
    }
于 2012-07-31T12:08:47.580 に答える
1
    $objOu = [ADSI]"WinNT://${env:Computername}"
    $localUsers = $objOu.Children | where {$_.SchemaClassName -eq 'user'}  | % {$_.name[0].ToString()}

    # Ensure we have local user BOB
    if($localusers -contains "BOB" ){
       Write-Host "local user ${env:Computername}/BOB already exists"
    }
    else{
       Write-Host "Creating local user: /BOB"
       NET USER BOB "qwefgnbm" /ADD
    }

これは、ユーザーが存在するかどうかを確認し、存在しない場合は追加します。役に立つかもしれません。

于 2017-02-13T11:40:33.057 に答える