2012-07-31 3 views
1

powershell 스크립트를 사용하여 로컬 그룹의 사용자를 바꾸려고합니다.로컬 사용자 그룹에서 삭제하기 전에 사용자가 있는지 확인하는 방법은 무엇입니까?

이 스크립트의 문제점은 OldUserName이 로컬 그룹에 없으면 실패합니다.

로컬 그룹에서 사용자를 제거하기 전에 사용자가 그룹에 있는지 확인하고 싶습니다.

다른 말로하면 belows와 같은 일부 조건에서 함수 줄을 제거하고 싶습니다.

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

사용자의 존재를 확인하는 방법은 무엇입니까?

답변

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" 
    } 
+0

부분적으로 일치하더라도 포함을 사용하면 $ OldUserName은 멤버가됩니다. 그렇지 않습니까? 나는 $ 회원들을 반복하는 것이 낫다고 생각한다. ($ 구성원 -eq $ OldUserName가) { 이 } 다른 { 은 "$ OldUserName은 멤버가 아닌" } – Samselvaprabu

+0

"$ OldUserName 멤버"만일의 Foreach ($ 회원에 $ 회원)는 {이 사용하는 것과 동일합니다 - 덜 효율적이다. 부분 일치를 확인하려면 -like를 포함하고 와일드 카드 표현식을 사용하십시오. –

0
$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 
    } 

확인이 사용자가 존재하고 존재하지 않는 경우를 추가하는 경우. 그것은 유용 할 수 있습니다.

관련 문제