Microsoft official Powershell documentation: https://learn.microsoft.com/zh-cn/powershell/
The command details are at the end of the PDF:
- 1. Introduction to Powershell and commands
- Two, cmdlet alias
- 3. Introduction to cmdlet classification
- Four, special operators
- 5. Run Windows command line tools
- Six, run the user program
1. Introduction to Powershell and commands
PowerShell is a command-line shell and scripting language for automation .
Wikipedia contains the following description of the shell:
The shell manages user-system interaction by prompting for user input, interpreting its input, and then processing output from the underlying operating system (much like a read-evaluate-print loop [i.e. REPL]).
Similar to other shells such as bash or cmd.exe, PowerShell enables you to run any command available on your system, not just PowerShell commands.
PowerShell commands are called cmdlet
(pronounced command-lets). cmdlets are PowerShell commands, not stand-alone executables. PowerShell commands cannot be run in other shells without running PowerShell first.
PowerShell is a modern command shell that includes the best features of other popular shells. Unlike most shells, which only accept and return text, PowerShell accepts and returns .NET
objects . The shell has several features that can be used to optimize the interactive user experience.
1.1 Command format
PowerShell's commands follow a specific naming convention, the "verb-noun" format. This structure makes the commands easy to read and understand. The following are the components of a PowerShell cmdlet:
-
Verb (Verb) : Describes the action that the cmdlet performs. For example,
Get
,Set
,New
,Remove
etc. -
Noun (Noun) : Describes the object or resource that the cmdlet operates on. For example,
Item
,Service
,Process
etc. -
Parameters : Additional information provided to the cmdlet to affect its operation. Parameters usually
-
start with , for example-Name
, ,-Path
etc. -
Parameter Values (Parameter Values) : the specific value following the parameter. For example, in
Get-Service -Name "wuauserv"
,"wuauserv"
is-Name
the value of the parameter.
Here are some examples of PowerShell cmdlets:
Get-Service
: Get a list of all services running on the system.Get-Process
: Get a list of all currently running processes.New-Item
: Creates a new item, such as a file or folder.Remove-Item
: Deletes an item such as a file or folder.
Additionally, PowerShell supports piping ( |
) to pass the output of one cmdlet to another cmdlet as input. For example, Get-Process | Where-Object {$_.CPU -gt 100}
all processes with CPU usage above 100 are fetched.
1.2 Aliases of commands
Many commands (cmdlets) in PowerShell have aliases. Aliases are short names for one or more cmdlets that provide a quick way to type frequently used commands without having to type the entire cmdlet name in full.
For example:
Get-Command
The alias for isgcm
.Get-Help
An alias for ishelp
orman
.Get-Process
The alias for isps
.Get-Item
The alias for isgi
.
You can use Get-Alias
the cmdlet to view all available aliases. For example, to see Get-Command
all aliases for , you can run:
Get-Alias -Definition Get-Command
If you want to see all aliases and their corresponding cmdlets, you can simply run:
Get-Alias
Additionally, you can use Set-Alias
cmdlets to create your own aliases. For example, if you want to Get-Service
create an alias for gs
, you can run:
Set-Alias -Name gs -Value Get-Service
That way, every time you type gs
, it will run Get-Service
the cmdlet.
In addition, you can use Tab completion commands.
Two, cmdlet alias
These aliases are obtained 7.36
by using commands in the version .Get-Alias
A few aliases may be the same as Linux bash commands, but the parameters are generally different.
Alias | Cmdlet Name | Function (Description) |
---|---|---|
? | Where-Object | filter object |
% | ForEach-Object | perform operations on each object |
ac | Add-Content | add content to file |
cat | Get-Content | get file content |
cd, chdir | Set-Location | change current location |
clc | Clear-Content | clear content |
clear, cls | Clear-Host | clear console output |
clhy | Clear-History | clear command history |
cli | Clear-Item | clear item |
clp | Clear-ItemProperty | Clear project properties |
clv | Clear-Variable | clear variable |
cnsn | Connect-PSSession | Connect to PSSession |
compare | Compare-Object | Compare objects |
copy, cp, cpi | Copy-Item | copy item |
cpp | Copy-ItemProperty | Copy project properties |
cvpa | Convert-Path | conversion path |
dbp | Disable-PSBreakpoint | disable breakpoint |
of, once upon a time | Remove-Item | delete item |
diff | Compare-Object | Compare objects |
dir | Get-ChildItem | Get a list of subitems |
dns | Disconnect-PSSession | Disconnect PSSession |
ebp | Enable-PSBreakpoint | enable breakpoint |
echo | Write-Output | output content |
Apple | Export-Alias | export alias |
epcsv | Export-Csv | export to CSV |
erase | Remove-Item | Delete specified item |
don't | Enter-PSSession | Enter PSSession |
e.g | Exit-PSSession | quit-PSSession |
fc | Format-Custom | custom format |
fx | Format-Hex | formatted as hexadecimal |
fl | Format-List | list formatting |
foreach | ForEach-Object | perform operations on each object |
ft | Format-Table | table formatting |
fw | Format-Wide | wide format |
gal | Get-Alias | get alias |
gbp | Get-PSBreakpoint | get breakpoint |
gc | Get-Content | get content |
gcb | Get-Clipboard | Get clipboard content |
gci | Get-ChildItem | get subitem |
gcm | Get-Command | get command |
gcs | Get-PSCallStack | get call stack |
gdr | Get-PSDrive | get drive |
yeast | Get-Error | get error |
ghy | Get-History | 获取历史 |
gi | Get-Item | 获取项目 |
gin | Get-ComputerInfo | 获取计算机信息 |
gjb | Get-Job | 获取作业 |
gl | Get-Location | 获取当前位置 |
gm | Get-Member | 获取成员 |
gmo | Get-Module | 获取模块 |
gp | Get-ItemProperty | 获取项目属性 |
gps | Get-Process | 获取进程 |
gpv | Get-ItemPropertyValue | 获取项目属性值 |
group | Group-Object | 对象分组 |
gsn | Get-PSSession | 获取 PSSession |
gsv | Get-Service | 获取服务 |
gtz | Get-TimeZone | 获取时区 |
gu | Get-Unique | 获取唯一值 |
gv | Get-Variable | 获取变量 |
h, history | Get-History | 获取历史 |
icm | Invoke-Command | 调用命令 |
iex | Invoke-Expression | 调用表达式 |
ihy | Invoke-History | 调用历史命令 |
ii | Invoke-Item | 调用项目 |
ipal | Import-Alias | 导入别名 |
ipcsv | Import-Csv | 导入 CSV |
ipmo | Import-Module | 导入模块 |
irm | Invoke-RestMethod | 调用 REST 方法 |
iwr | Invoke-WebRequest | 调用 Web 请求 |
kill | Stop-Process | 停止进程 |
ls | Get-ChildItem | 获取子项目 |
man | help | 获取帮助 |
md | mkdir | 创建目录 |
measure | Measure-Object | 测量对象 |
mi | Move-Item | 移动项目 |
mount | New-PSDrive | 创建新驱动器 |
move | Move-Item | 移动项目 |
mp | Move-ItemProperty | 移动项目属性 |
mv | Move-Item | 移动项目 |
nal | New-Alias | 创建新别名 |
ndr | New-PSDrive | 创建新驱动器 |
ni | New-Item | 创建新项目 |
nmo | New-Module | 创建新模块 |
nsn | New-PSSession | 创建新 PSSession |
nv | New-Variable | 创建新变量 |
ogv | Out-GridView | 输出到网格视图 |
oh | Out-Host | 输出到主机 |
popd | Pop-Location | 弹出位置 |
ps | Get-Process | 获取进程 |
pushd | Push-Location | 推送位置 |
pwd | Get-Location | 获取当前位置 |
r | Invoke-History | 调用历史命令 |
rbp | Remove-PSBreakpoint | 删除断点 |
rcjb | Receive-Job | 接收作业 |
rcsn | Receive-PSSession | 接收 PSSession |
rd | Remove-Item | 删除项目 |
rdr | Remove-PSDrive | 删除驱动器 |
ren | Rename-Item | 重命名项目 |
ri | Remove-Item | 删除项目 |
rjb | Remove-Job | 删除作业 |
rm, rmdir | Remove-Item | 删除项目 |
rmo | Remove-Module | 删除模块 |
rni | Rename-Item | 重命名项目 |
rnp | Rename-ItemProperty | 重命名项目属性 |
rp | Remove-ItemProperty | 删除项目属性 |
rsn | Remove-PSSession | 删除 PSSession |
rv | Remove-Variable | 删除变量 |
rvpa | Resolve-Path | 解析路径 |
sajb | Start-Job | 开始作业 |
sal | Set-Alias | 设置别名 |
saps | Start-Process | 开始进程 |
sasv | Start-Service | 开始服务 |
sbp | Set-PSBreakpoint | 设置断点 |
scb | Set-Clipboard | 设置剪贴板内容 |
select | Select-Object | 选择对象 |
set | Set-Variable | 设置变量 |
shcm | Show-Command | 显示命令 |
si | Set-Item | 设置项目 |
sl | Set-Location | 设置位置 |
sleep | Start-Sleep | 开始休眠 |
sls | Select-String | 选择字符串 |
sort | Sort-Object | 排序对象 |
sp | Set-ItemProperty | 设置项目属性 |
spjb | Stop-Job | 停止作业 |
spps | Stop-Process | 停止进程 |
spsv | Stop-Service | 停止服务 |
start | Start-Process | 开始进程 |
stz | Set-TimeZone | 设置时区 |
sv | Set-Variable | 设置变量 |
tee | Tee-Object | 分叉对象 |
type | Get-Content | 获取内容 |
where | Where-Object | 过滤对象 |
wjb | Wait-Job | 等待作业 |
write | Write-Output | 输出内容 |
三、cmdlet分类介绍
如果你想了解一个命令的说明和参数,可以使用Get-Help 命令名称 的格式获取,Get-Help的别名是man,例如你要获取Get-Help这个命令的帮助文档,可以使用:
man man
帮助文档是英文的,如果你有困难,可以去文章开头的微软中国官网搜索该命令,有中文的详细解释。
3.1 基础命令
1. Get-Command
Get-Command
是一个非常有用的 cmdlet,它可以列出所有可用的 cmdlet、函数、脚本和别名。例如,要查找与进程相关的所有命令,可以使用:
Get-Command *process*
2. Get-Help
Get-Help
cmdlet 为用户提供了关于 cmdlet 和函数的详细信息。例如,要获取 Get-Process
cmdlet 的帮助信息,可以使用:
Get-Help Get-Process
此外,-Examples
、-Detailed
和 -Full
参数可以提供更多的信息。
3. Set-Variable
Set-Variable
cmdlet 允许用户创建或修改一个变量。例如,要创建一个名为 “myVar” 的变量并为其赋值 “Hello, PowerShell!”,可以使用:
Set-Variable -Name myVar -Value "Hello, PowerShell!"
4. Get-Variable
与 Set-Variable
相对应,Get-Variable
cmdlet 可以获取一个或多个变量的值。例如,要获取 “myVar” 的值,可以使用:
Get-Variable myVar
5. Remove-Variable
Remove-Variable
cmdlet 允许用户删除一个或多个变量。例如,要删除 “myVar” 变量,可以使用:
Remove-Variable myVar
6. Clear-Variable
Clear-Variable
cmdlet 用于清除变量的值,但不删除变量本身。例如,要清除 “myVar” 变量的值,可以使用:
Clear-Variable myVar
3.2 管理命令
1. Get-Process
Get-Process
cmdlet 允许用户获取当前运行的进程信息。
Get-Process
这将列出所有当前运行的进程。你还可以通过指定进程名称来获取特定的进程信息,例如:
Get-Process -Name notepad
2. Stop-Process
Stop-Process
cmdlet 用于终止一个或多个进程。例如,要终止名为 “notepad” 的进程,可以使用:
Stop-Process -Name notepad
3. Restart-Service
Restart-Service
cmdlet 允许用户重新启动一个或多个服务。例如,要重新启动 “wuauserv” 服务(Windows Update 服务),可以使用:
Restart-Service -Name wuauserv
4. Get-Service
Get-Service
cmdlet 提供了关于系统服务的信息。它可以列出所有服务或特定服务的状态。
Get-Service
要获取特定服务的信息,例如 “wuauserv”,可以使用:
Get-Service -Name wuauserv
5. Start-Service 和 Stop-Service
这两个 cmdlet 分别用于启动和停止服务。例如,要停止 “wuauserv” 服务,可以使用:
Stop-Service -Name wuauserv
要启动该服务,可以使用:
Start-Service -Name wuauserv
6. Get-EventLog
Get-EventLog
cmdlet 允许用户读取和查询事件日志。例如,要获取系统日志中的最近 10 条事件,可以使用:
Get-EventLog -LogName System -Newest 10
3.3 实用工具命令
PowerShell 的实用工具命令提供了一系列功能,使用户能够进行文本和数据处理、文件操作、数据转换等任务。这些命令非常适合日常的数据处理和分析任务。以下是一些常用的实用工具命令及其功能介绍:
1. Sort-Object
Sort-Object
cmdlet 用于对对象进行排序。例如,要按名称对进程进行排序,可以使用:
Get-Process | Sort-Object -Property ProcessName
2. Measure-Object
Measure-Object
cmdlet 用于计算对象的数量、平均值、总和等。例如,要计算文本文件中的行数,可以使用:
Get-Content -Path "C:\path\to\file.txt" | Measure-Object -Line
3. ConvertTo-Json 和 ConvertFrom-Json
这两个 cmdlet 用于将对象转换为 JSON 格式,或从 JSON 格式转换为对象。例如,要将进程列表转换为 JSON 格式,可以使用:
Get-Process | ConvertTo-Json
反之,要从 JSON 格式转换为 PowerShell 对象,可以使用:
$jsonData | ConvertFrom-Json
4. Select-Object
Select-Object
cmdlet 允许用户选择对象的特定属性。例如,要仅选择进程的名称和 ID,可以使用:
Get-Process | Select-Object -Property ProcessName, Id
5. Where-Object
Where-Object
cmdlet 用于过滤对象。例如,要选择使用内存超过 100 MB 的进程,可以使用:
Get-Process | Where-Object {
$_.WorkingSet64 -gt 100MB}
6. Out-File
Out-File
cmdlet 用于将输出重定向到文件。例如,要将进程列表保存到文件中,可以使用:
Get-Process | Out-File -Path "C:\path\to\file.txt"
7. Compare-Object
Compare-Object
cmdlet 用于比较两个对象集合的差异。例如,要比较两个文本文件的内容,可以使用:
Compare-Object $(Get-Content -Path "C:\path\to\file1.txt") $(Get-Content -Path "C:\path\to\file2.txt")
3.4 提供程序命令
PowerShell 提供程序是一种特殊的适配器,使得各种数据存储(如文件系统、注册表和证书存储)可以像文件系统一样被访问。这意味着你可以使用相同的命令(如 Get-Item
、Set-Location
等)来操作这些不同的数据源。以下是与提供程序相关的一些常用命令及其功能介绍:
1. Get-PSProvider
Get-PSProvider
cmdlet 显示所有已加载的 PowerShell 提供程序。执行此命令将列出如 FileSystem
、Registry
、Certificate
等提供程序。
Get-PSProvider
2. Get-PSDrive
Get-PSDrive
cmdlet 列出所有当前会话中的驱动器,包括由提供程序支持的驱动器。例如,除了常规的文件系统驱动器(如 C:、D:)之外,你还可能看到注册表驱动器(如 HKLM、HKCU)。
Get-PSDrive
3. New-PSDrive
New-PSDrive
cmdlet 允许你创建一个新的 PowerShell 驱动器。例如,你可以创建一个指向特定注册表路径的新驱动器:
New-PSDrive -Name HKMyCustom -PSProvider Registry -Root HKEY_CURRENT_USER\Software\MyCustomPath
4. Remove-PSDrive
Remove-PSDrive
cmdlet 用于删除之前使用 New-PSDrive
创建的驱动器。
Remove-PSDrive -Name HKMyCustom
5. Set-Location 和 Get-Location
这两个 cmdlet 用于导航到不同的 PowerShell 驱动器和路径。Set-Location
(或其别名 cd
)用于更改当前位置,而 Get-Location
(或其别名 pwd
)用于获取当前位置。
例如,要导航到之前创建的注册表驱动器,可以使用:
Set-Location -Path HKMyCustom:
然后,使用 Get-Location
可以确认你当前的位置。
6. Get-Item 和 Set-Item
这两个 cmdlet 用于获取和设置提供程序位置的项。例如,要获取注册表键的值,可以使用:
Get-Item -Path HKMyCustom:\SomeKeyName
要设置该键的值,可以使用:
Set-Item -Path HKMyCustom:\SomeKeyName -Value "NewValue"
3.5 模块和包命令
在 PowerShell 中,模块是一个包含多个函数、cmdlet、提供程序和变量的包。这些模块可以被导入到 PowerShell 会话中,以增强其功能。包则是通过包管理器(如 PowerShellGet)分发的模块或脚本。以下是与模块和包相关的一些常用命令及其功能介绍:
1. Import-Module
Import-Module
cmdlet 允许你导入一个模块,使其在当前会话中可用。例如,要导入名为 “MyModule” 的模块,可以使用:
Import-Module -Name MyModule
2. Remove-Module
Remove-Module
cmdlet 用于从当前会话中卸载模块。例如,要卸载 “MyModule”,可以使用:
Remove-Module -Name MyModule
3. Get-Module
Get-Module
cmdlet 显示已导入或可用的模块。使用 -ListAvailable
参数可以列出所有可用的模块:
Get-Module -ListAvailable
4. Install-Module
Install-Module
cmdlet 允许你从 PowerShell 库或其他存储库安装模块。例如,要安装 “PSReadline” 模块,可以使用:
Install-Module -Name PSReadline
5. Uninstall-Module
Uninstall-Module
cmdlet 用于从系统中卸载模块。例如,要卸载 “PSReadline” 模块,可以使用:
Uninstall-Module -Name PSReadline
6. Find-Module
Find-Module
cmdlet 允许你在 PowerShell 库中搜索模块。例如,要查找与 “Azure” 相关的所有模块,可以使用:
Find-Module -Name *Azure*
7. Save-Module
Save-Module
cmdlet 允许你下载模块但不安装它。这对于在没有互联网连接的环境中手动安装模块很有用。例如,要下载 “PSReadline” 模块,可以使用:
Save-Module -Name PSReadline -Path C:\path\to\directory
3.6 调试命令
在开发和运行 PowerShell 脚本时,可能会遇到错误或异常。为了帮助用户识别和解决这些问题,PowerShell 提供了一组调试命令。这些命令允许用户设置断点、检查变量的值、跟踪执行流程等,从而更容易地找到和修复问题。以下是与调试相关的一些常用命令及其功能介绍:
1. Set-PSBreakpoint (sbp)
Set-PSBreakpoint
cmdlet 允许用户在脚本、行或命令上设置断点。当执行到断点时,脚本的执行将暂停,允许用户检查当前的状态。
例如,要在 “myscript.ps1” 脚本的第 10 行设置断点,可以使用:
Set-PSBreakpoint -Script myscript.ps1 -Line 10
2. Get-PSBreakpoint
Get-PSBreakpoint
cmdlet 显示当前设置的所有断点。
Get-PSBreakpoint
3. Remove-PSBreakpoint (rbp)
Remove-PSBreakpoint
cmdlet 允许用户删除一个或多个断点。例如,要删除 ID 为 1 的断点,可以使用:
Remove-PSBreakpoint -ID 1
4. Get-PSCallStack
Get-PSCallStack
cmdlet 显示当前的调用堆栈。这对于理解脚本的执行流程和确定当前执行的位置非常有用。
Get-PSCallStack
5. Trace-Command
Trace-Command
cmdlet 允许用户跟踪特定命令的执行,以获取详细的调试信息。例如,要跟踪 “Get-ChildItem” 命令的执行,可以使用:
Trace-Command -Name Metadata -Expression {
Get-ChildItem } -PSHost
6. Enter-PSHostProcess 和 Exit-PSHostProcess
这两个 cmdlet 允许用户进入和退出另一个 PowerShell 进程的会话,这对于调试运行中的脚本非常有用。
例如,要进入进程 ID 为 1234 的 PowerShell 进程,可以使用:
Enter-PSHostProcess -Id 1234
退出该进程的会话后,可以使用:
Exit-PSHostProcess
3.7 远程命令
PowerShell 的远程功能允许用户从一个计算机连接到另一个计算机,并在远程计算机上执行命令和脚本。这对于管理大型网络、自动化跨多台机器的任务或简单地从一个位置访问另一个位置的资源非常有用。以下是与远程相关的一些常用命令及其功能介绍:
1. Enter-PSSession
Enter-PSSession
cmdlet 允许用户启动一个交互式会话到远程计算机。例如,要连接到名为 “RemoteServer” 的远程计算机,可以使用:
Enter-PSSession -ComputerName RemoteServer
在此会话中,你可以执行命令就像在远程计算机的本地会话中一样。
2. Exit-PSSession
当你完成远程会话并想返回到本地计算机时,可以使用 Exit-PSSession
cmdlet。
Exit-PSSession
3. Invoke-Command
Invoke-Command
cmdlet 允许用户在一个或多个远程计算机上执行命令或脚本。例如,要在 “RemoteServer” 上执行 “Get-Process” 命令,可以使用:
Invoke-Command -ComputerName RemoteServer -ScriptBlock {
Get-Process }
4. New-PSSession
New-PSSession
cmdlet 允许用户创建一个或多个持久的远程会话。这些会话可以用于多次远程命令调用,而不必每次都重新建立连接。
$session = New-PSSession -ComputerName RemoteServer
5. Remove-PSSession
Remove-PSSession
cmdlet 用于关闭并删除之前使用 New-PSSession
创建的远程会话。
Remove-PSSession -Session $session
6. Export-PSSession
Export-PSSession
cmdlet 允许用户从远程会话导出命令、函数、别名和其他信息,并将它们保存为一个模块。这对于在本地计算机上使用远程计算机的功能非常有用。
Export-PSSession -Session $session -OutputModule RemoteFunctions
7. Enable-PSRemoting 和 Disable-PSRemoting
这两个 cmdlet 用于启用或禁用计算机上的 PowerShell 远程功能。
要启用远程功能,可以使用:
Enable-PSRemoting
要禁用远程功能,可以使用:
Disable-PSRemoting
四、特殊操作符
PowerShell 提供了一系列特殊操作符,用于执行各种任务,如比较、模式匹配、数组操作等。以下是 PowerShell 中可用的特殊操作符及其详细介绍:
1. 算术操作符
-
:减法+
:加法*
:乘法/
:除法%
:取余
2. 赋值操作符
=
:赋值+=
:增加并赋值-=
:减少并赋值*=
:乘以并赋值/=
:除以并赋值
3. 比较操作符
-eq
:等于-ne
:不等于-gt
:大于-lt
:小于-ge
:大于或等于-le
:小于或等于-like
:使用通配符进行字符串比较-notlike
:不使用通配符进行字符串比较-match
:使用正则表达式进行匹配-notmatch
:不使用正则表达式进行匹配
4. 逻辑操作符
-and
:逻辑与-or
:逻辑或-not
:逻辑非!
:逻辑非的简写形式
5. 位操作符
-band
:位与-bor
:位或-bxor
:位异或-bnot
:位非-shl
:左移-shr
:右移
6. 重定向操作符
>
:将输出重定向到文件,覆盖文件内容>>
:将输出追加到文件2>
:将错误输出重定向到文件2>&1
:将错误输出和正常输出合并
7. 特殊操作符
-contains
:检查数组是否包含特定值-notcontains
:检查数组是否不包含特定值-in
:检查值是否在数组中-notin
:检查值是否不在数组中-replace
:使用正则表达式替换字符串-split
:使用正则表达式分割字符串-join
:连接数组中的元素为一个字符串
8. 类型操作符
-is
:检查对象是否为特定类型-isnot
:检查对象是否不为特定类型-as
:尝试将对象转换为特定类型
五、运行Windows命令行工具
5.1 常用命令行工具
PowerShell 不仅支持其自己的 cmdlets,还支持传统的 Windows 命令行工具。这意味着你可以在 PowerShell 会话中直接运行这些工具,而无需切换到命令提示符(CMD
)。以下是一些常用的 Windows 命令行工具及其简要描述:
1. ipconfig
ipconfig
是一个用于查看和管理 Windows IP 配置的工具。
- 基本用法:
ipconfig
显示计算机的所有网络接口的 IP 地址、子网掩码和默认网关。 - 参数:
/all
:显示所有网络接口的详细信息。/release
:释放指定适配器的 IP 地址。/renew
:更新指定适配器的 IP 地址。/flushdns
:清除 DNS 解析器缓存。/displaydns
:显示 DNS 解析器缓存的内容。/registerdns
:刷新所有 DHCP 租约并重新注册 DNS 名称。
2. netstat
netstat
用于显示活动的网络连接、端口和网络统计信息。
- 基本用法:
netstat
显示活动的网络连接。 - 参数:
-a
:显示所有活动的网络连接和监听的端口。-b
:显示在创建每个连接或监听端口时涉及的可执行文件。-n
:以数字形式显示地址和端口号。-o
:显示与每个连接关联的所有者的进程 ID。
3. ping
ping
工具用于测试网络连接的可达性。
- 基本用法:
ping [目标主机名或 IP]
向指定的主机或 IP 发送 ICMP 请求。 - 参数:
-t
:持续发送 ping 请求,直到用户中断。-a
:解析主机名。-n [次数]
:发送指定次数的 echo 请求。-l [大小]
:发送指定大小的数据。
4. tracert
tracert
是一个用于诊断路由路径的工具。
- 基本用法:
tracert [目标主机名或 IP]
显示数据包从源计算机到指定目标的路由路径。 - 参数:
-d
:不解析地址。-h [最大跃点数]
:指定最大跃点数。-j [主机列表]
:沿途经过的主机列表。
5. nslookup
nslookup
是一个用于查询 DNS 名称和 IP 地址的工具。
- 基本用法:
nslookup [主机名]
查询指定主机名的 IP 地址。 - 参数:
-type
:查询的资源记录类型,如 A、MX、PTR 等。-debug
:在响应中显示详细的开发信息。
6. sfc
sfc
是系统文件检查器,用于扫描和修复 Windows 系统文件。
- 基本用法:
sfc /scannow
扫描并尝试修复任何损坏的系统文件。 - 参数:
/verifyonly
:仅扫描并验证系统文件的完整性。/offbootdir
:指定启动目录。/offwindir
:指定 Windows 目录。
7. chkdsk
chkdsk
是一个用于检查和修复磁盘错误的工具。
- 基本用法:
chkdsk [驱动器:]
检查指定的驱动器。 - 参数:
/f
:修复磁盘上的错误。/r
:查找坏扇区并恢复可读信息。/x
:强制卷在检查前先卸载。
8. systeminfo
systeminfo
工具用于显示详细的系统信息。
- 基本用法:
systeminfo
显示操作系统、硬件和网络配置的详细信息。 - 参数:
/s [计算机名]
:指定要查看的远程系统。/u [用户名]
:指定用户名进行身份验证。
9. gpupdate
gpupdate
是一个用于手动更新组策略的工具。
- 基本用法:
gpupdate
更新组策略。 - 参数:
/force
:强制重新应用所有设置。/logoff
:如果需要,完成后注销用户。
10. tasklist
tasklist
工具用于显示当前运行的进程列表。
- 基本用法:
tasklist
显示所有当前运行的进程及其详细信息。 - 参数:
/s [计算机名]
:指定要查看的远程系统。/u [用户名]
:指定用户名进行身份验证。/fi [过滤条件]
:按照指定的条件显示任务列表。
这些命令行工具在日常的系统管理和故障排查中都非常有用。了解它们的参数和用法可以帮助你更有效地使用这些工具。
5.2 对应的cmdlet
Windows Tool | PowerShell Cmdlet |
---|---|
ipconfig | Get-NetIPAddress |
netstat | Get-NetTCPConnection |
ping | Test-Connection |
tracert | Test-NetConnection -TraceRoute |
nslookup | Resolve-DnsName |
sfc | Repair-WindowsImage |
chkdsk | Repair-Volume |
systeminfo | Get-ComputerInfo |
gpupdate | Invoke-GPUpdate |
tasklist | Get-Process |
六、运行用户程序
除此,之外,我们自己安装的一些命令行应用也可以在Powershell中运行。
在Powershell中使用下列工具时,请先安装,并且添加到环境变量。
在Windows下,很多功能并不需要在终端中完成,使用图形化界面可能更省事,本文只是做个介绍。
6.1 vim(nvim)
nvim是vim的一个分支,更加友好,我之前的文章专门介绍过。
这里去github下载Windows版本的nvim使用。
和在Linux终端中的使用方式一样。
示例:
6.2 gcc / gdb
我是使用MinGW(Minimalist GNU for Windows)安装的gcc和gdb。
使用示例: 一个tcp服务端程序。
编译和运行
调试
Write love you forever into the end of the poem ~