01.管理电脑状态
设置电脑除了一些标准命令行工具,还需要WMI和CIM class
学习这些可以使我们了解到powershell与外部工具交互的方式。
001.给电脑上锁
唯一直接上锁的方法是调用 user32.dll里的LockWorkstation() 函数
执行以下命令即可
rundll32.exe user32.dll,LockWorkStation
rundll32.exe是一个可以执行windows dll的工具,user32.dll里面包含了一系列管理的函数。
002.注销当前会话
在本地系统中注销会话有几种方法,其中最简单的方法是使用命令行工具logoff.exe。
( logoff /?
查看具体使用帮助),直接执行logoff命令就会注销当前会话
也可以使用shutdown.exe,l选项就是用于注销的。
shutdown.exe -l
还有一个方法是使用WMI,Win32_OperatingSystem
的Shutdown方法
Get-CimInstance -Classname Win32_OperatingSystem | Invoke-CimMethod -MethodName Shutdown
003.关闭或者重启电脑
这两个操作是类似的工作。有两个直接的选项可以重启电脑tsshutdn.exe or shutdown.exe 这两个命令行工具加上合适的参数就可以。
不过 powershell自身也提供了关闭电脑和重启的方法
Stop-Computer
Restart-Computer
我一般是搭配sleep命令实现定时关机
Start-Sleep -Seconds (60*60*3) ; Stop-Computer -Force
当然shutdown这个命令工具的功能更加强大
02.收集电脑的信息
001.获取桌面设置
Get-CimInstance -ClassName Win32_Desktop
这会获取所有的桌面信息。
因为大多数属性是以Cim开头的,可以用Select-Object来过滤掉这些Cim开头的项目
Get-CimInstance -ClassName Win32_Desktop | Select-Object -ExcludeProperty "CIM*"
002.获取BIOS信息
Get-CimInstance -ClassName Win32_BIOS
003.获取处理器信息
Get-CimInstance -ClassName Win32_Processor | Select-Object -ExcludeProperty "CIM*"
获取处理器家族信息,可以加上SystemType属性
Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object -Property SystemType
SystemType
----------
X86-based PC
004.获取电脑制造商信息
Get-CimInstance -ClassName Win32_ComputerSystem
005.获取已安装的热更新
Get-CimInstance -ClassName Win32_QuickFixEngineering
Get-CimInstance -ClassName Win32_QuickFixEngineering
Source Description HotFixID InstalledBy InstalledOn
------ ----------- -------- ----------- -----------
Update KB4537572 NT AUTHORITY\SYSTEM 2020/3/12 0:00:00
Security Update KB4516115 NT AUTHORITY\SYSTEM 2020/1/19 0:00:00
Update KB4517245 NT AUTHORITY\SYSTEM 2020/2/7 0:00:00
Security Update KB4524244 NT AUTHORITY\SYSTEM 2020/2/13 0:00:00
Security Update KB4528759 NT AUTHORITY\SYSTEM 2020/1/19 0:00:00
Security Update KB4537759 NT AUTHORITY\SYSTEM 2020/2/13 0:00:00
Security Update KB4538674 NT AUTHORITY\SYSTEM 2020/2/12 0:00:00
Security Update KB4541338 NT AUTHORITY\SYSTEM 2020/3/12 0:00:00
Update KB4540673 NT AUTHORITY\SYSTEM 2020/3/12 0:00:00
为了更简洁的输出,你可能想要排除掉一些属性。
但是你如果只指定一个属性比如HotFixID,还是会返回给更多的信息
Copy
Get-CimInstance -ClassName Win32_QuickFixEngineering -Property HotFixID
InstalledOn :
Caption :
Description :
InstallDate :
Name :
Status :
CSName :
FixComments :
HotFixID : KB4533002
InstalledBy :
ServicePackInEffect :
PSComputerName :
CimClass : root/cimv2:Win32_QuickFixEngineering
CimInstanceProperties : {Caption, Description, InstallDate, Name…}
CimSystemProperties : Microsoft.Management.Infrastructure.CimSystemProperties
...
这里我们同样需要用Select-Object
Get-CimInstance -ClassName Win32_QuickFixEngineering -Property HotFixId | Select-Object -Property HotFixId
HotFixId
--------
KB4048951
006.获取操作系统版本信息
Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property BuildNumber,BuildType,OSType,ServicePackMajorVersion,ServicePackMinorVersion
也可以用Select进行过来吧,因为Build和ServicePack开头的信息比较重要
Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property Build*,OSType,ServicePack*
BuildNumber : 18362
BuildType : Multiprocessor Free
OSType : 18
ServicePackMajorVersion : 0
ServicePackMinorVersion : 0
007.获取本地用户
Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property NumberOfLicensedUsers,NumberOfUsers,RegisteredUser
更简洁的用法
Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property *user*
008.获取磁盘空间使用状况
Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3"
统计使用空间和未使用空间
Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" | Measure-Object -Property FreeSpace,Size -Sum | Select-Object -Property Property,Sum
Property Sum
-------- ---
FreeSpace 109839607808
Size 326846914560
009.获取登录会话信息
Get-CimInstance -ClassName Win32_LogonSession
010.获取登录的用户信息
Get-CimInstance -ClassName Win32_ComputerSystem -Property UserName
011.获取本地时间
Get-CimInstance -ClassName Win32_LocalTime
Day : 2
DayOfWeek : 4
Hour : 20
Milliseconds :
Minute : 54
Month : 4
Quarter : 2
Second : 37
WeekInMonth : 1
Year : 2020
PSComputerName :
012.显示服务状态
Get-CimInstance -ClassName Win32_Service | Select-Object -Property Status,Name,DisplayName
为了显示个别较长的名字,需要使用Format-Table
调整格式
Get-CimInstance -ClassName Win32_Service | Format-Table -Property Status,Name,DisplayName -AutoSize -Wrap
关于服务开启关闭的属性是State
03.获取并查询windows活动日志
可以使用以下两个命令获取,通过where命令来过滤
Get-EventLog -LogName Application | Where-Object Source -Match defrag
Get-WinEvent -LogName Application | Where-Object { $_.ProviderName -Match 'defrag' }
也可以构建过滤哈希表
Get-WinEvent -FilterHashtable @{ LogName='Application' ProviderName='*defrag' }
网友评论