获取已存在的用户


0
awang asked 8 年 ago

请教一下大神;我想写一个创建用户的脚本,我的思路是(1首先获取一下用户是否存在做判断2然后创建用户)问题:当我判断一个用户的存在时候可以根据用户的属性判断吗?比如根据他的启用状态
下面这样写是不对的,或者大神能否给一个思路\更好的方法。谢谢!
···
function getuser($displayname)
{if(Get-ADUser $displayname -Properties enable -eq true){write-host(“已存在的用户”)}}
···

2 Answers
1
Best Answer
sy790825 answered 8 年 ago

如果你要创建一个新用户,有些属性必须是唯一的,比如samaccountname, 因此建议你查询的时候以唯一的属性作为查询条件,而不是使用$displayname 这种可以重名的属性
判断语句可以这么写
 if ((get-aduser yang.sun)  -eq $null){“帐号可以创建创建”}else{“帐号已存在”}

awang replied 8 年 ago

首先谢谢您的回复;可是这样写的话当yang.sun存在则运行else语句“账户存在”。当yang.sun值等于空的时候回报错的。他不会运行{}里面代码的。还有别的方法吗?谢谢!

sy790825 replied 8 年 ago

你可以添加环境变量 屏蔽错误消息
$erroractionpreference = “SilentlyContinue”
查询语句改为
$x= get-aduser yang.sun111
if ($x -eq $null){“帐号可以创建”}else{“帐号已存在”}

awang replied 8 年 ago

谢谢您的回复;虽然错误屏蔽了,但是{}代码还是没有运行的。我这里yang.sun111值确实是等于空。但还是执行的else语句

sy790825 replied 8 年 ago

你可以看下$x变量的值 ,如果用户存在 $x 就不会等于$null 不存在 才会等于$null

awang replied 8 年 ago

$X变质量值确实是不存在的。但是这句代码,不管存在不存在,得到的结果都是else。

sy790825 replied 8 年 ago

你可以看下$x变量的值 ,如果用户存在 $x 就不会等于$null 不存在 才会等于$null

Mooser Lee 管理员 replied 8 年 ago

@awang,这种判断的语句你刚开始写的时候,最好把它保存在变量里,多观察,尝试各种可能会出现的情况,然后条件判断才好写。

sy790825 replied 8 年 ago

用这个把

try{get-aduser yang.sun -ErrorAction stop
“帐号存在”
}
catch{“帐号不存在”}

awang replied 8 年 ago

@mosser,谢谢指导。我试过根据它的属性做判断好像语法都不支持,所以来问的但是貌似并没有好的方法来解决。

awang replied 8 年 ago

@sy790825谢谢给帮忙试了这么多次,然后try函数不支持变量放到函数里面发现也不可以,我还是想知道能不能用判断语句来写。

awang replied 8 年 ago

@sy790825谢谢给帮忙试了这么多次,然后try函数不支持变量放到函数里面发现也不可以,我还是想知道能不能用判断语句来写。

awang replied 8 年 ago

之所以用到函数因为写了下面这个,现在想在加一个判断,这样每次我调用时候会方便。谢谢
function add ($displayname,$usrprincipalname)
{ new-mailbox -name $displayname -displayname $displayname -userprincipalname(“$userprincipalname”+”@awang.online”) -password (ConvertTo-SecureString -String 123456.cn -AsPlainText -Force) -OrganizationalUnit “ou=it,dc=awang,dc=online” -database “db01”
Get-Mailbox -Identity $displayname | Add-DistributionGroupMember -Identity “all”
Set-ADUser -Identity $UserPrincipalName -PasswordNeverExpires $true #密码永不过期
Add-ADGroupMember -Identity “administrators” -Members $userprincipalname #添加到nonetwork组
}

sy790825 replied 8 年 ago

$erroractionpreference = “SilentlyContinue”
$x=$null
$x= get-aduser yang.sun
if ($x -eq $null){“帐号可以创建”}else{“帐号已存在”}

0
awang answered 8 年 ago

以下是当用户不存在时候执行;获取所有用户的操作报错

awang replied 8 年 ago

不好意思,网络延迟。。。传多了