PowerShell常用命令记录
获取版本号
PS C:\> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.19041.1682
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.19041.1682
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
环境变量
获取当前环境变量:
PS C:\> ls env:
或者通过 Get-ChildItem
命令:
PS C:\> Get-ChildItem -path ENV:
设置修改环境变量(下面例子设置 SSH_AUTH_SOCK
环境变量为 null
字符串):
PS C:\> $env:SSH_AUTH_SOCK='null'
删除环境变量(设置为空字符串就是删除):
PS C:\> $env:SSH_AUTH_SOCK=''
或者通过 Remove-Item
命令:
PS C:\> Remove-Item Env:\SSH_AUTH_SOCK
运行 cmd 命令
需要使用 cmd /c "<COMMAND>"
方式运行,例如运行 start 命令打开文件并获取返回值:
PS C:\> cmd /c "start /wait <file> & exit errorlevel"
过滤命令输出
可以使用 findstr
命令过滤命令的输出,findstr
默认区分大小写,增加 /i
参数忽略大小写:
PS C:\> XXX --help | findstr /i "resize"
也可以使用 PowerShell 的 Select-String
(简写 sls
)来过滤,,Select-String
默认不区分大小写,增加 -CaseSensitive
参数区分大小写:
PS C:\> XXX --help | sls "Auto" -CaseSensitive
base64
编码:
PS C:\> [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("https://wiki.zohead.com/"))
aHR0cHM6Ly93aWtpLnpvaGVhZC5jb20v
解码:
PS C:\> [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("aHR0cHM6Ly93aWtpLnpvaGVhZC5jb20v"))
https://wiki.zohead.com/
如果是 UTF-16 编码,可以把 [System.Text.Encoding]::UTF8
换成 [System.Text.Encoding]::Unicode
。
hash
获取 SHA256 hash 值:
PS C:\> Get-FileHash path-to-file
Algorithm Hash Path
--------- ---- ----
SHA256 8C78C1FF580EF2468F4F62E98F7CD3D927808F42D3DBFD37E4A18172BE1AE132 path-to-file
获取 SHA512 hash 值并格式化成列表输出:
PS C:\> Get-FileHash path-to-file -Algorithm SHA512 | Format-List
将十六进制字符串 hash 值转换为 base64:
PS C:\> $hash = Get-FileHash path-to-file -Algorithm SHA512
PS C:\> [Convert]::ToBase64String([byte[]] -split ($hash.Hash -replace '..', '0x$& '))
如果是 PowerShell (Core) 7.1+ / .NET 5+ 以上版本,第二条命令可以直接用:
PS C:\> [System.Convert]::FromHexString($hash.Hash)
WMI 查询
可以直接使用 Get-WmiObject
命令进行 WMI 查询,例如获取 SMBIOS 信息:
PS C:\> Get-WmiObject -class Win32_Bios
PS C:\> Get-WmiObject -class Win32_BaseBoard
PS C:\> Get-WmiObject -class Win32_ComputerSystem
新版本 PowerShell 也可以使用 Get-CimInstance
命令,例如获取物理磁盘型号和序列号:
PS C:\> Get-CimInstance -Class Win32_DiskDrive | Select Model,SerialNumber
获取处理器名称和 CPUID:
PS C:\> Get-CimInstance -Class Win32_Processor | Select Name,Caption,ProcessorId
另外也可以使用 wmic
命令,例如获取 UUID 等信息:
PS C:\> wmic csproduct get uuid
PS C:\> wmic csproduct list full
获取驱动器列表
PS C:\> Get-PSDrive
获取物理磁盘列表
PS C:\> Get-Disk
获取 uptime
PowerShell 6.0 及以上版本可以直接使用 Get-Uptime
命令获取 uptime,老版本则需要计算一下:
PS C:\> (Get-Date) - (Get-CimInstance -Class Win32_OperatingSystem).LastBootUpTime