[TOC]
0x00 操作系统信息查看
Get-ComputerInfo 命令 - 获取系统和操作系统属性的合并对象。
描述: 该cmdlet获取系统和操作系统属性的合并对象(OS/Bios/计算机系统信息/处理等信息),此cmdlet在Windows PowerShell 5.1中引入。
语法&参数:
代码语言:javascript复制Get-ComputerInfo [[-Property] <System.String[]>] [<CommonParameters>]
基础示例:
代码语言:javascript复制# 示例1.获取所有计算机属性
Get-ComputerInfo
# 示例2.获取所有计算机操作系统属性
$OS = Get-ComputerInfo -Property "os*"
Write-Host $OS.OsName $OS.OsVersion - $OS.OsArchitecture
# Microsoft Windows 10 专业版 10.0.19041 - 64 位
Write-Output $OS.OsHotFixes # 安全更新
补充示例:
0) 基础操作系统信息利用Get-WmiObject -Class Win32_OperatingSystem
命令查看
SystemDirectory : C:WINDOWSsystem32
Organization :
BuildNumber : 19041
RegisteredUser : WeiyiGeek
SerialNumber : 00331-10010-00111-AA535
Version : 10.0.19041
1) PowerShell结合systeminfo.exe
提取当前计算机信息可以当做替代方案(值得学习)
function Get-SystemInfo
{
param($ComputerName = $env:COMPUTERNAME)
$header = 'Hostname','OSName','OSVersion','OSManufacturer','OSConfiguration','OS Build Type','RegisteredOwner','RegisteredOrganization','Product ID','Original Install Date','System Boot Time','System Manufacturer','System Model','System Type','Processor(s)','BIOS Version','Windows Directory','System Directory','Boot Device','System Locale','Input Locale','Time Zone','Total Physical Memory','Available Physical Memory','Virtual Memory: Max Size','Virtual Memory: Available','Virtual Memory: In Use','Page File Location(s)','Domain','Logon Server','Hotfix(s)','Network Card(s)'
systeminfo.exe /FO CSV /S $ComputerName |Select-Object -Skip 1 | ConvertFrom-CSV -Header $header
}
Hostname : WEIYIGEEK
OSName : Microsoft Windows 10 专业版
OSVersion : 10.0.19041 暂缺 Build 19041
OSManufacturer : Microsoft Corporation
OSConfiguration : 独立工作站
OS Build Type : Multiprocessor Free
RegisteredOwner : WeiyiGeek
RegisteredOrganization : 暂缺
Product ID : 00331-10000-00001-AA535
Original Install Date : 2020/11/5, 0:09:24
System Boot Time : 2021/5/19, 8:50:20
System Manufacturer : Dell Inc.
System Model : OptiPlex 9020
System Type : x64-based PC
Processor(s) : 安装了 1 个处理器。,[01]: Intel64 Family 6 Model 60 Stepping 3 GenuineIntel ~3301 Mhz
BIOS Version : Dell Inc. A11, 2015/4/1
Windows Directory : C:WINDOWS
System Directory : C:WINDOWSsystem32
Boot Device : DeviceHarddiskVolume1
System Locale : zh-cn;中文(中国)
Input Locale : zh-cn;中文(中国)
Time Zone : (UTC 08:00) 北京,重庆,香港特别行政区,乌鲁木齐
Total Physical Memory : 16,326 MB
Available Physical Memory : 9,326 MB
Virtual Memory: Max Size : 30,582 MB
Virtual Memory: Available : 20,801 MB
Virtual Memory: In Use : 9,781 MB
Page File Location(s) : C:pagefile.sys
Domain : WORKGROUP
Logon Server : \WEIYIGEEK
Hotfix(s) : 安装了 8 个修补程序。,[01]: KB4601554,[02]: KB4577266,[03]: KB4580325,[04]: KB4586864,[05]: KB4593175,[06]: KB4598481,[07]: KB5003173,[08]: KB5003242
Network Card(s) : 安装了 5 个 NIC。,[01]: TAP-Windows Adapter V9, 连接名: 以太网 2, 状态: 媒体连接已中断,[02]: TAP-Windows Adapter V9, 连接名: 以太网 3, 状态: 媒体连接已中断,[03]: VMware Virtual Ethernet Adapter for VMnet1, 连接名:
VMware Network Adapter VMnet1, 启用 DHCP: 否, IP 地址, [01]: 192.168.151.253, [02]: 192.168.1.253, [03]: fe80::6dfc:881b:1f89:55f3,[04]: VMware Virtual Ethernet Adapter for VMnet8, 连接名: VMware Network Adapter VMnet
8, 启用 DHCP: 是, DHCP 服务器: 192.168.150.254, IP 地址, [01]: 192.168.150.1, [02]: fe80::f469:f9fb:99bc:5c22,[05]: Intel(R) Ethernet Connection I217-LM, 连接名: 以太网, 启用 DHCP: 否, IP 地址, [01]: 10.20.172.1
03, [02]: fe80::d97d:fe6c:10bf:4244
2) 该Cmdlet获取的主要信息可以作为以后提取参考
代码语言:javascript复制# - Windos系统相关信息
WindowsProductName : Windows Server 2019 Standard
WindowsEditionId : ServerStandard
WindowsInstallationType : Server Core
WindowsCurrentVersion : 6.3
WindowsVersion : 1809
WindowsProductId : 00429-00000-00001-AA739
# - Bios 相关信息
BiosManufacturer : VMware, Inc.
BiosFirmwareType : Uefi
BiosName : VMW71.00V.17369862.B64.2012240522
BiosVersion : INTEL - 6040000
BiosBIOSVersion : {INTEL - 6040000, VMW71.00V.17369862.B64.2012240522, VMware, Inc. - 10000}
BiosSeralNumber : VMware-56 4d 17 fd ab 99 b0 87-c8 8f 44 08 4b 42 0b b6
CsBootupState : Normal boot
OsBootDevice : DeviceHarddiskVolume2
BiosReleaseDate : 2020/12/24 8:00:00
# - 操作系统相关信息
CsName : WEIYIGEEK
CsAdminPasswordStatus : Enabled
CsManufacturer : VMware, Inc.
CsModel : VMware7,1
OsName : Microsoft Windows 10 专业版
OsType : WINNT
OsProductType : Server
OsServerLevel : ServerCore
OsArchitecture : 64 位
OsOperatingSystemSKU : 48
OsVersion : 10.0.19041
OsBuildNumber : 17763
OsSerialNumber : 00429-00000-00001-AA739
OsInstallDate : 2021/5/19 11:42:45
OsSystemDevice : DeviceHarddiskVolume4
OsSystemDirectory : C:Windowssystem32
OsCountryCode : 86
OsCodeSet : 936
OsLocaleID : 0804
OsCurrentTimeZone : 480
TimeZone : (UTC 08:00) 北京,重庆,香港特别行政区,乌鲁木齐
OsLanguage : zh-CN
OsLocalDateTime : 2021/5/22 10:44:26
OsLastBootUpTime : 2021/5/19 17:47:49
# - 处理器相关信息
CsProcessors : {Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz, Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz, Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz, Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz}
OsBuildType : Multiprocessor Free
CsNumberOfProcessors : 4
CsNumberOfLogicalProcessors : 4
OsMaxNumberOfProcesses : 4294967295
# - 内存相关信息
OsTotalVisibleMemorySize : 4193312
OsFreePhysicalMemory : 2941040
OsTotalVirtualMemorySize : 5635104
OsFreeVirtualMemory : 4460064
OsInUseVirtualMemory : 1175040
OsMaxProcessMemorySize : 137438953344
# - 网卡相关信息
CsNetworkAdapters : {Ethernet0}
# - 系统补丁信息
OsHotFixes : {KB4601554, KB4577266, KB4580325, KB4586864...}
0x01 磁盘资源信息查看
Get-PSDrive 命令 - 获取当前会话中的驱动器
描述: Get-PSDrive cmdlet 不仅显示由提供程序公开的驱动器,而且还显示 Windows 逻辑驱动器,其中包括映射到网络共享的驱动器。
基础语法:
代码语言:javascript复制# 语法
Get-PSDrive [-LiteralName] <System.String[]> [-PSProvider <System.String[]>] [-Scope <System.String>] [-UseTransaction] [<CommonParameters>]
Get-PSDrive [[-Name] <System.String[]>] [-PSProvider <System.String[]>] [-Scope <System.String>] [-UseTransaction] [<CommonParameters>]
基础实例:
代码语言:javascript复制# 1.此命令获取当前会话中的驱动器 (Alias:, Cert:, Env:, Function:, HKCU:, HKLM:, and Variable:).。
PS C:> Get-PSDrive
Name Used (GB) Free (GB) Provider Root CurrentLocation
Alias Alias
C 127.50 21.94 FileSystem C: UsersWeiyiGeek
Cert Certificate
D 28.61 232.39 FileSystem D:
E 67.53 192.47 FileSystem E:
Env Environment
F 192.02 68.26 FileSystem F:
Function Function
G FileSystem G:
H 105.37 826.11 FileSystem H:
HKCU Registry HKEY_CURRENT_USER
HKLM Registry HKEY_LOCAL_MACHINE
I FileSystem I:
K 408.66 522.82 FileSystem K:
Variable Variable
WSMan WSMan
Z 167.71 763.80 FileSystem \10.20.10.101Work
# 2.获取在电脑上安装一个驱动器信息
PS C:foo> Get-PSDrive D
# Name Used (GB) Free (GB) Provider Root
# ---- --------- --------- -------- ----
# D 1211.06 123642.32 FileSystem D:
# 3.获取Windows PowerShell文件系统提供程序支持的所有驱动器
PS C:> Get-PSDrive -PSProvider FileSystem
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
A A:
C 202.06 23718.91 FileSystem C:
D 1211.06 123642.32 FileSystem D:
G 202.06 710.91 FileSystem \MusicGratefulDead
# 4.检查驱动器是否用作Windows PowerShell驱动器名(便于后续判断是否存在该驱动器)
if (Get-PSDrive X -ErrorAction SilentlyContinue) {
Write-Host 'The X: drive is already in use.'
} else {
New-PSDrive -Name X -PSProvider Registry -Root HKLM:SOFTWARE # 后续讲解
}
# 5.比较文件系统驱动器的类型以及多种方式获取磁盘信息
PS C:> Get-PSDrive -PSProvider FileSystem
PS C:> net use
# New connections will be remembered.
# Status Local Remote Network
# -------------------------------------------------------------------------------
# OK Z: \10.20.10.101Work Microsoft Windows Network
PS C:> [System.IO.DriveInfo]::GetDrives() | Format-Table
# Name DriveType DriveFormat IsReady AvailableFreeSpace TotalFreeSpace TotalSize RootDirectory VolumeLabel
# ---- --------- ----------- ------- ------------------ -------------- --------- ------------- -----------
# C: Fixed NTFS True 23552114688 23552114688 160457101312 C: OS
# D: Fixed NTFS True 249524043776 249524043776 280247660544 D: 软件
# Z: Network NTFS True 820123381760 820123381760 ...201224192 Z:
PS N:> Get-CimInstance -Class Win32_LogicalDisk
# DeviceID DriveType ProviderName VolumeName Size FreeSpace
# -------- --------- ------------ ---------- ---- ---------
# C: 3 OS 160457101312 23552049152
# D: 3 软件 280247660544 249524043776
# G: 5
# Z: 4 \10.20.10.101Work 1000201224192 820123381760
PS C:> Get-CimInstance -Class Win32_NetworkConnection
# LocalName RemoteName ConnectionState Status
# --------- ---------- --------------- ------
# Z: \10.20.10.101Work Connected OK
New-PSDrive 命令 - 创建临时和永久映射的网络驱动器。
描述:该New-PSDrivecmdlet会创建与数据存储中的某个位置映射或关联的临时和持久驱动器,例如网络驱动器,本地计算机上的目录或注册表项,以及与Windows关联的持久Windows映射的网络驱动器。远程计算机上的文件系统位置。
语法参数:
代码语言:javascript复制New-PSDrive [-Name] <System.String> [-PSProvider] <System.String> [-Root] <System.String> [-Confirm] [-Credential <System.Management.Automation.PSCredential>] [-Description <System.String>] [-Persist] [-Scope <System.String>] [-UseTransaction] [-WhatIf] [<CommonParameters>]
基础示例:
代码语言:javascript复制# 1.创建一个映射到网络共享的临时PowerShell驱动器。
New-PSDrive -Name "WeiyiGeek" -PSProvider "FileSystem" -Root "\10.20.17.103Temp"
# Name Used (GB) Free (GB) Provider Root
# ---- --------- --------- -------- ----
# WeiyiGeek FileSystem \10.20.17.103Temp
Get-ChildItem -Path WeiyiGeek: # 从PowerShell会话中查看内容(下面创建的驱动器都可以采用此种方式查看)
# 目录: \10.20.172.103Temp
# Mode LastWriteTime Length Name
# ---- ------------- ------ ----
# d----- 2020/9/22 9:18 5小更新包update2
# 2.创建映射到本地目录的临时驱动器(效果同上只不过是本地的映射)
$parameters = @{
Name = "myHome"
PSProvider = "FileSystem"
Root = "C:UsersweiyigeekDocuments"
Description = "Maps to my My Documents folder."
}
New-PSDrive @parameters
# 3.创建一个名为MyCompany的驱动器,该驱动器映射到HKLM:SoftwareMyCompany注册表项。
New-PSDrive -Name "MyCompany" -PSProvider "Registry" -Root "HKLM:SoftwareMyCompany"
# Name Provider Root
# ---- -------- ----
# MyCompany Registry HKLM:SoftwareMyCompany
# 4.使用凭据创建一个持久性映射的网络驱动器
# 请记住,如果在脚本中使用代码段请将Scope参数值设置为“ Global”,以确保驱动器在当前范围之外仍然存在。
$cred = Get-Credential -Credential WEIYIGEEKWeiyiGeek
New-PSDrive -Name "x" -Persist -Scope Global -Root "\10.20.172.103Temp" -PSProvider "FileSystem" -Credential $cred
# Name Used (GB) Free (GB) Provider Root CurrentLocation
# ---- --------- --------- -------- ---- ---------------
# x 28.77 232.23 FileSystem \10.20.17.103Temp
# 5.创建永久和临时驱动器
# 两者区别: 如果您关闭PowerShell会话,然后打开一个新会话则该临时文件夹PSDrive:将不可用,但永久X:驱动器将可用
New-PSDrive -Name "PSDrive" -PSProvider "FileSystem" -Root "\Server01Public"
New-PSDrive -Persist -Name "X" -PSProvider "FileSystem" -Root "\Server01Public" -Scope Global
Get-PSDrive -Name "PSDrive", "X"
Get-PSDrive "PSDrive", "x" | Get-Member
Net Use && Get-CimInstance Win32_LogicalDisk | Format-Table -Property DeviceID
Get-CimInstance Win32_NetworkConnection
# Status Local Remote Network
# --------------------------------------------------------
# OK X: \contoso-pcdata Microsoft Windows Network
# deviceid
# --------
# C:
# D:
# X:
# LocalName RemoteName ConnectionState Status
# --------- ---------- --------------- ------
# X: \productspublic Disconnected Unavailable
# 6.创建注册表驱动器提供程序(注意默认得注册表提供程序是HKCU和HKLM)而注册表包含的根节点远不止两个此时我们可以采用此cmdlet命令进行创建新的驱动器
# 计算机HKEY_CLASSES_ROOT = HKCR (事实上 HKEY_CLASSES_ROOT 根节点不是一个独立的根节点而是指向 HKEY_LOCAL_MACHINESOFTWAREClasses )
# 计算机HKEY_CURRENT_USER = HKCU
# 计算机HKEY_LOCAL_MACHINE = HKLM
# 计算机HKEY_USERS = HKUS
# 计算机HKEY_CURRENT_CONFIG = HKCC (事实上 HKEY_CURRENT_CONFIG 根节点不是一个独立的根节点而是指向 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetHardware ProfilesCurrent )
New-PSDrive -name HKCR -PSProvider registry -root HKLM:SOFTWAREClasses
New-PSDrive -name HKUS -PSProvider registry -root HKEY_USERS
New-PSDrive -name HKCC -PSProvider registry -root 'HKLM:SYSTEMCurrentControlSetHardware ProfilesCurrent'
PS C:> Set-Location 'HKUS:' # 采用注册表驱动器别名进入
PS HKUS:> Get-Item *
# Hive: HKEY_USERS
# Name Property
# ---- --------
# .DEFAULT
# S-1-5-19
# S-1-5-20
# S-1-5-21-923396991-3399624210- WordWrap : 1
# 3190802951-1001
# S-1-5-21-923396991-3399624210-
# 3190802951-1001_Classes
S-1-5-18
# Tips.你可以自由地创建任何额外的驱动器,尤其在你有频繁操作某个特定的注册表区域时。
New-PSDrive -name CV -PSProvider registry -root "HKLM:SoftwareMicrosoftWindows NTCurrentVersion"
# Name Used (GB) Free (GB) Provider Root CurrentLocation
# CV Registry HKEY_LOCAL_MACHINESoftwareMicr...
Get-ItemProperty -Path "CV:"
Remove-PSDrive 命令 - 删除临时PowerShell驱动器并断开映射的网络驱动器。
描述: 从Windows PowerShell 3.0开始,当外部驱动器连接到计算机时,PowerShell会自动将PSDrive添加到表示新驱动器的文件系统中。您不需要重新启动PowerShell。类似地当外部驱动器与计算机断开连接时,它会自动删除代表已删除驱动器的PSDrive。,包括但不限于使用New PSDrive
的Persist参数创建的驱动器。
Tips :该cmdlet无法删除Windows物理或逻辑驱动器。
语法参数:
代码语言:javascript复制Remove-PSDrive
[-Name] <String[]> | [-LiteralName] <String[]>
[-PSProvider <String[]>]
[-Scope <String>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
简单示例:
代码语言:javascript复制# 1.此命令将删除名为“weiyigeek”的临时文件系统驱动器(操作之前需要确认)。
Remove-PSDrive -Name weiyigeek -Confirm
# 是否确实要执行此操作?
# 正在目标“名称: X 提供程序: Microsoft.PowerShell.CoreFileSystem 根路径: X:”上执行操作“删除驱动器”。
# [Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暂停(S) [?] 帮助 (默认值为“Y”):
# 2.此命令用于Remove-PSDrive断开X:和S:映射的网络驱动器。
Get-PSDrive X, S | Remove-PSDrive