PowerShell获取Windows用户列表、用户信息的方法
WMI是Windows管理规范的缩写,其中包含很多系统的软硬件信息。而Windows用户信息也可以通过WMI对象来获取。PowerShell提供了对WMI的访问功能,十分方便且强大——这就是Get-WmiObject这个cmdlet。
获取所有的Windows用户列表:
Get-WmiObject-ClassWin32_UserAccount或者Get-WmiObject
Win32_UserAccount
如果是想知道查看当前登录的用户的信息,可以用如下语句:
Get-WmiObject-ClassWin32_UserAccount-Filter"Name='$env:username'andDomain='$env:userdomain'"
其中$env:username表示当前登录到系统的用户名,而$env:userdomain表示当前用户的域(或者机器名)。
上面的语句其实只显示用户的基本信息,如果想看用户更详细的信息,可以把查出来的用户当成一个对象,使用Select-Object方法,查看它的全部信息。
Get-WmiObject-ClassWin32_UserAccount-Filter"Name='$env:username'andDomain='$env:userdomain'"|Select-Object*
得到的信息将像这样:
Status :OK Caption :hong-book\hong PasswordExpires :False __GENUS :2 __CLASS :Win32_UserAccount __SUPERCLASS :Win32_Account __DYNASTY :CIM_ManagedSystemElement __RELPATH :Win32_UserAccount.Domain="hong-book",Name="hong" __PROPERTY_COUNT :16 __DERIVATION :{Win32_Account,CIM_LogicalElement,CIM_ManagedSystemElement} __SERVER :HONG-BOOK __NAMESPACE :root\cimv2 __PATH :\\HONG-BOOK\root\cimv2:Win32_UserAccount.Domain="hong-book",Name="hong" AccountType :512 Description : Disabled :False Domain :hong-book FullName : InstallDate : LocalAccount :True Lockout :False Name :hong PasswordChangeable:True PasswordRequired :False SID :S-1-5-21-181061805-855091228-1216038997-1000 SIDType :1 Scope :System.Management.ManagementScope Path :\\HONG-BOOK\root\cimv2:Win32_UserAccount.Domain="hong-book",Name="hong" Options :System.Management.ObjectGetOptions ClassPath :\\HONG-BOOK\root\cimv2:Win32_UserAccount Properties :{AccountType,Caption,Description,Disabled...} SystemProperties :{__GENUS,__CLASS,__SUPERCLASS,__DYNASTY...} Qualifiers :{dynamic,Locale,provider,UUID} Site : Container :
利用对象提供的这些属性信息,我们可以做很多事情,比如我们想看看当前小编登录的账号的密码是否已过期,则可以写这样一个函数:
functionTest-UserPasswordExpires { param( $UserName=$env:username, $Domain=$env:userdomain )
(Get-WmiObject-ClassWin32_UserAccount-Filter"Name='$UserName'andDomain='$Domain'").PasswordExpires }