PS 之AD命令之Get-ADuser!



Get-user 是一条很强大的命令,通常这条命令产生的结果集合作为其他的命令的输入,他可以查询出单一一个对象,也可以查询出结果集,这综合了之前的dsgetDSquery命令,来完成我们需要设定和完成的任务。

首先我们来看看简单的任务:

我们如果希望了解到某个用户信息,

Get-aduser-identity xupeng |fl

计算机生成了可选文字:
D:\>Get一自DU公e护一1dentit夕xupeng:fl
S
P
井主卜匕习
图文音
DistinguishedHame:CH=xuPeng,CH=Users,DC=Pilot,DC=con
Enabled:True
GiuenHame:
Haoe:xupeng
objectClass:use护
objectGUID:,181f8fs一9f88一4ce6一8022一f920863369d4
Sa。自ccountHame:xuPeng
5ID:S一1一5一21一31日?965?5,一221?685125一35868日3159一5日日
Su护name竺
Use护P护incipa1Hame:
.苏七
算络
土J习」

这个时候我们想了解更多的用户信息,怎么办,貌似他只能输出这么多属性,我们需要更多属性怎么办?其实很简单,多添加一个属性,结果就出来了。执行如下命令:

Get-aduser-identity xupeng -properties *

计算机生成了可选文字:
.管理员:用于,iodo,,ro,erskell
的
人cti,e.irectory
模块
PSD:\>Get一自DUser一Identit夕xuPeng一ProPerties资
自ccountFxpirationDate
accountFxPires
自ccountLockoutTine
自ccountHotDelegated
adminCount
自110讨ReuersiblePass讨ordFncr夕pt
BadLogonCount
badPass'ordTine
badP讨dCount
CannotChangePass'ord
Canonica1Haoe
Certificates
Cit夕
CH
codePage
Compan夕
Countr夕
countr夕Code
Created
createTimestanp
Deleted
ion
弓日
弓False
:1
:False
:日
弓13日852489853245日82
:日
弓False
:pilot。co。/Users/xupeng
弓(》
弓XUPeng
:日
弓日
:2日15/8/2814:39:54
弓2日15/8/2814:39:54

这么多属性不是我们需要的,我们需要的只是账户名称,创建日期,修改日期,密码是否过期等等策略:

Get-aduser -identity xupeng -properties * |ft name,Created,Created,PasswordExpired

计算机生成了可选文字:
PSD:\>Get一aduse护一identit夕xuPeng一P护oPe护ties赞:ftnane,C护eated,C护eated,Pass衬
o犷dFxpired
nane
Created
Created
Pass'ordFxpired
XUpeng
2日15/8/2814:39:542日15/8/2814:39:54
Palse

OK 查询完单个用户,我们就需要批量执行一些任务了。接下来我们来查询OU下的用户了。比如我们希望查询lineOU下的用户,这个该怎么做呢?

由于查询的目标有当前OU和子集OU之分。所以我们下面举两个例子来看当前OU和带有子集OU的命令差别:

首先我们来看当前OU用户的查询:

Get-aduser -searchbase "ou=line,dc=pilot,dc=com"-searchscope "onelevel" -filter * -properties * |ft name,Created,Created,PasswordExpired

|ft name,Created,Created,PasswordExpired

计算机生成了可选文字:
PSD:\>
。et一。D。二e,一se。,。hsc。pe气ne,e。e,,一P,。pe,,、e二
补一filter补一gearchBa,e
ou=line,dc=Pilot,dc=co。”:ftnane,created,nodified,pass讨ordexpi护ed
name
created
nodifled
pass讨。护dexPi护ed
linel
lineZ
11ne3
2日15/9/1214:3?:482日15/,/1214:37:
2日15/9/1214:38:382日15/,/1214:38:
2日15/9/1214:39:日12日15/9/1214:39:
Fa1Se
Fa1Se
Fal,e
PSI):\>二

我们注意到Line OU 下面有子集OU,我们如果需要查询当前OU和子集OU怎么办?执行如下的命令:

Get-aduser -searchbase "ou=line,dc=pilot,dc=com"-searchscope "subtree" -filter * -properties *  |ft name,Created,Created,PasswordExpired|ft name,Created,Created,PasswordExpired

计算机生成了可选文字:
户SD:\>
一filter
Get一aduset.一sea护chbase"ou=line,dc=Pilot,dc=con”一searc卜scoPe
铃一p护oPe护ties朴
:ftname,C护eated,C护eated,Pass"o护dFxPi护ed:ft
,'sul,tree"
nane,Create
1,""e't"d,P“吸
s讨。护dFxpired
lane
Pass"ordFxplred
linel
liDeZ
LIDe3
Line4
lines
C护eated
2日15/9/12
2日15/9/12
2日15/9/12
2日15/9/12
2日15/9/12
14:37:48
14:38:38
14:3,:日1
1?:25:日8
1?:25:2,
Created
2日15/9/12
2日15/9/12
2日15/9/12
2日15/9/12
2日15/9/12
14:37:48
14:38:38
14:39:日1
1?:25:日8
17:25:27
False
Fa1Se
Fa1Se
Fa1Se
False
PgD:\>

 

两者主要的差别在于搜索的范围的差别,一个只在当前OU,另外一个是OU和子OU

接下来我们利用get-user filter 方法来进行属性的筛选,选择我们需要筛选的部分内容,如果我需要筛选用户名开始为line的部分用户,我的语句怎么写呢?

 Get-ADUser -Properties * -Filter "name-like 'line*'" -SearchScope "subtree" -SearchBase"dc=pilot,dc=com" |ft name

计算机生成了可选文字:
PSD:
ies
赞一Filte护”nane一like'line资,”一Sea护chscope"subt
ree,I
\>Get一nDUser一Propert
一SearchBase"dc=pilot,
dc=com":ft
name
nane
linel
lineZ
line3
line4
lines

我们也可以使用Where进行属性的筛选,来完成针对用户的筛选:

Get-ADUser -Properties *  -filter *  -SearchScope"subtree" -SearchBase "dc=pilot,dc=com" |where {$_.name -like"line*"}|ft name

计算机生成了可选文字:
PSD:\>Get一nDUser
c一c。。,一fiite帐,
一Properties并一Searchscope'subtree”一SearchBase'dc=pilot,d
:'he犷e(亏_。nane一like'line.,’》
:ftnane
nane
linel
lineZ
line3
line4
lines
SD:、》

当然我们也可以将这些输出的结果保存为文件,我们也只需要执行如下的命令:

Get-ADUser -Properties *  -filter *  -SearchScope"subtree" -SearchBase "dc=pilot,dc=com" |where {$_.name -like"line*"}|select name|export-csv d:\userlist

计算机生成了可选文字:
(
州D:\>Get一自DUser
,dc=pilot,dc=con"
几rlist。c公u
一Prope护ties赞一filter关一Searchscope"subtree”一SearchBas
:讨here{亏_。nane一like"line.,'}:select
nane
:FxPort一Csu一Path
诵
厄‘erlist
文件口)
卜TYPE
编辑汪〕
浏巨‘
格式(0)查看少)帮助以)
Selected.Microsoft.ActiveDirectory.M即agement.ADUser
na功e
,,,,,,,,,,
,上。乙QJd孟亡口
eeeee
nnnnn
.『上.『上.』上.『上.1
1111111111
,,,,,,,,,,

 

接下来我们在想象另外一个场景,也就是我们的用户如果7天内没有登陆,你需要找到这些用户,该怎么写这个语句呢?且看下面:

怎么写呢?

首先我们要求出来2天前的日期。这个命令很简单:

(get-date).adddays(-2)

那么我们写这串命令就很简单了:

Get-ADUser -Properties *  -filter *  -SearchScope"subtree" -SearchBase "dc=pilot,dc=com" |where {$_.LastLogonDate -le (get-date).adddays(-2)}|ft name,lastlogondate,logoncount

计算机生成了可选文字:
O
PSD:\>Get一ADUser一Properties并一filter
''dc=pilot,dc=con":讨here(与_。LastLogonDate
Lastlogondate,logoncount
并一SearchscoPe"subtree”一SearchBase
<get一date>。addda夕s<一2>}:ft
nane,
lane
lastlogondate
logoncount
日日日日日日日日日日日日日日日
<UpeDg
3uest
阮rbtgt
'upengl
'upengZ
心uefei
己hangsan
Lisi
JdDg讨U
Li护un
Linel
lineZ
Line3
Line4
lines
'u夕afei
2日15/9/812:日2:
31

 

这样写就把所有的没有登陆和2天没有登陆的用户列出来了,希望这些对大家有帮助!

你可能感兴趣的:(管理,powershell,ad)