我正在尝试使用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 function line。
If (UserName exists in Localgroup) {
$LocalGroup.Remove("WinNT://$OldUserName")
}
如何检查用户是否存在?
答案 0 :(得分: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"
}
答案 1 :(得分: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
}
检查用户是否存在,如果不存在则添加一个用户。它可能有用。