美文网首页
使用powershell管理电脑(翻译自官方文档7.1 Mana

使用powershell管理电脑(翻译自官方文档7.1 Mana

作者: mudssky | 来源:发表于2020-04-02 21:21 被阅读0次

    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' }

    相关文章

      网友评论

          本文标题:使用powershell管理电脑(翻译自官方文档7.1 Mana

          本文链接:https://www.haomeiwen.com/subject/vlgfphtx.html