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 }