在管理端口和进程方面,PowerShell 和 CMD 提供了不同的命令和工具。下面是 PowerShell 和 CMD 在管理端口和进程时的命令示例对比和区别,使用表格呈现。
1. 查看端口占用情况
| 功能 |
PowerShell |
CMD |
区别 |
| 查看端口占用情况 |
Get-NetTCPConnection 或 netstat -ano |
netstat -ano |
PowerShell 提供了专门的 Get-NetTCPConnection cmdlet,输出为对象,支持更复杂的筛选和处理。 |
| 示例 |
`Get-NetTCPConnection |
Where-Object { $_.LocalPort -eq 80 }` |
`netstat -ano |
| 输出格式 |
对象形式(支持进一步处理,如筛选、格式化等) |
文本行格式 |
PowerShell 的对象输出更方便进行处理和筛选。 |
2. 查看进程信息
| 功能 |
PowerShell |
CMD |
区别 |
| 查看所有进程信息 |
Get-Process |
tasklist |
PowerShell 使用 Get-Process 提供了更强的对象操作功能,支持更多属性。 |
| 示例 |
Get-Process |
tasklist |
Get-Process 返回的是对象,能更方便地进行属性筛选和操作。 |
| 输出格式 |
对象格式,支持进一步筛选和操作 |
文本格式,适合直接显示 |
PowerShell 提供更多的控制和灵活性,可以筛选、排序、格式化。 |
3. 终止进程
| 功能 |
PowerShell |
CMD |
区别 |
| 终止指定进程 |
Stop-Process -Name "processname" |
taskkill /IM "processname.exe" /F |
PowerShell 提供了对象化的 Stop-Process cmdlet,支持更细致的参数控制。 |
| 示例 |
Stop-Process -Name "notepad" |
taskkill /IM "notepad.exe" /F |
PowerShell 支持通过进程对象操作,CMD 通过简单的命令行进行操作。 |
| 支持更多条件 |
可以通过进程ID、进程名等方式灵活筛选 |
仅支持通过进程名或 PID 进行操作 |
PowerShell 提供更多过滤选项,如通过对象属性进行条件筛选。 |
4. 查看特定端口的进程信息
| 功能 |
PowerShell |
CMD |
区别 |
| 查看某端口被哪个进程占用 |
`Get-NetTCPConnection |
Where-Object { $_.LocalPort -eq 80 } |
Select-Object -Property OwningProcess` |
| 示例 |
`Get-NetTCPConnection |
Where-Object { $_.LocalPort -eq 80 } |
Select-Object -Property OwningProcess` |
5. 结束占用端口的进程
| 功能 |
PowerShell |
CMD |
区别 |
| 结束占用特定端口的进程 |
`Get-NetTCPConnection |
Where-Object { $_.LocalPort -eq 80 } |
Stop-Process` |
6. 查看进程占用的端口
| 功能 |
PowerShell |
CMD |
区别 |
| 查找进程占用的端口 |
`Get-Process -Id <PID> |
Select-Object -Property Path<br>netstat -ano |
Where-Object { $_.OwningProcess -eq <PID> }` |
7. 查看特定进程的详细信息
| 功能 |
PowerShell |
CMD |
区别 |
| 查看进程的详细信息 |
`Get-Process -Id <PID> |
Select-Object *` |
tasklist /FI "PID eq <PID>" |
总结
| 功能 |
PowerShell |
CMD |
区别 |
| 端口查看 |
Get-NetTCPConnection 更为强大,支持管道和对象操作 |
netstat -ano 适用于快速查看 |
PowerShell 提供更多灵活性和后续操作支持,CMD 更为简洁。 |
| 进程查看 |
Get-Process 支持对象输出,便于筛选和格式化 |
tasklist 输出为纯文本,不便于后续处理 |
PowerShell 更适合处理大规模数据,CMD 更适合快速检查。 |
| 终止进程 |
Stop-Process 支持进程名、进程 ID 等灵活条件 |
taskkill 基于进程名或 PID |
PowerShell 提供更细粒度控制,CMD 更为直接。 |
| 查看占用端口的进程 |
Get-NetTCPConnection 和 Stop-Process 可链式操作 |
netstat + tasklist 必须通过多条命令组合 |
PowerShell 提供一站式服务,CMD 需要手动组合多个命令。 |
PowerShell 相比 CMD 更加灵活和强大,尤其是在处理对象和管道、进行复杂筛选、格式化输出和后续操作方面更有优势。CMD 的命令更简洁、直接,适合快速执行简单任务。
深入对比 PowerShell 和 CMD 在系统管理、网络配置及故障排查方面的一些应用,下面我们将涵盖更多实际使用中的例子。
8. 查看网络连接和监听端口
| 功能 |
PowerShell |
CMD |
区别 |
| 查看当前网络连接 |
Get-NetTCPConnection 或 Get-NetUDPEndpoint |
netstat -ano |
PowerShell 提供了更多类型的网络连接(TCP、UDP),且输出为对象,便于筛选和操作。 |
| 示例 |
`Get-NetTCPConnection |
Where-Object { $_.State -eq "Listen" }` |
`netstat -ano |
| 输出格式 |
对象格式,可进一步筛选和操作 |
文本格式 |
PowerShell 提供更方便的输出和进一步处理功能。 |
9. 查看系统服务
| 功能 |
PowerShell |
CMD |
区别 |
| 查看系统服务 |
Get-Service |
sc query |
PowerShell 使用 Get-Service 提供更友好的输出和支持更多筛选条件。 |
| 示例 |
`Get-Service |
Where-Object { $_.Status -eq 'Running' }` |
sc query |
| 输出格式 |
对象格式,可以进一步筛选、操作和格式化 |
文本格式,适合快速查看 |
PowerShell 的对象输出更易于自动化处理,CMD 输出直接。 |
10. 启动和停止服务
| 功能 |
PowerShell |
CMD |
区别 |
| 启动服务 |
Start-Service -Name "servicename" |
net start "servicename" |
PowerShell 使用 Start-Service cmdlet,支持更多参数和选项。 |
| 停止服务 |
Stop-Service -Name "servicename" |
net stop "servicename" |
PowerShell 提供更多控制,如等待服务启动或停止等。 |
| 示例 |
Start-Service -Name "wuauserv" |
net start "wuauserv" |
PowerShell 支持对服务进行更复杂的操作和条件检查。 |
11. 查看磁盘使用情况
| 功能 |
PowerShell |
CMD |
区别 |
| 查看磁盘使用情况 |
Get-PSDrive 或 Get-Volume |
dir 或 fsutil volume diskfree C: |
PowerShell 提供了 Get-PSDrive、Get-Volume 等更详细的对象输出,可以列出驱动器和分区的详细信息。 |
| 示例 |
`Get-PSDrive |
Where-Object { $_.Used -gt 10GB }` |
dir C: |
| 输出格式 |
对象格式,便于进一步操作、筛选、排序 |
文本格式,简单直观 |
PowerShell 的对象格式便于进一步的自动化处理。 |
12. 执行远程命令
| 功能 |
PowerShell |
CMD |
区别 |
| 执行远程命令 |
Invoke-Command -ComputerName "RemotePC" -ScriptBlock { Get-Process } |
psexec \\RemotePC cmd |
PowerShell 通过 Invoke-Command 提供更高效的远程管理,支持更复杂的脚本块执行。 |
| 示例 |
Invoke-Command -ComputerName "Server01" -ScriptBlock { Get-Service } |
psexec \\Server01 cmd |
PowerShell 更适合脚本化和自动化远程管理,CMD 依赖外部工具如 PsExec。 |
| 输出格式 |
返回对象,便于进一步筛选和处理 |
返回标准输出,不易做后续处理 |
PowerShell 的返回是对象格式,便于后续筛选和处理。 |
13. 文件操作和权限管理
| 功能 |
PowerShell |
CMD |
区别 |
| 更改文件权限 |
Set-Acl -Path "C:\path\to\file" -AclObject $acl |
icacls "C:\path\to\file" /grant User:(R) |
PowerShell 提供了更细粒度的权限管理,并且通过对象方式支持更灵活的操作。 |
| 示例 |
Set-Acl -Path "C:\Documents\File.txt" -AclObject $acl |
icacls "C:\Documents\File.txt" /grant "Everyone:F" |
PowerShell 支持通过对象和脚本的方式更精细化地管理文件权限。 |
| 输出格式 |
支持对象输出,可以进一步筛选和操作 |
输出文本格式 |
PowerShell 支持更多的权限管理功能,CMD 适合简单的权限设置。 |
14. 用户账户管理
| 功能 |
PowerShell |
CMD |
区别 |
| 创建用户 |
New-LocalUser -Name "username" -Password (ConvertTo-SecureString "password" -AsPlainText -Force) |
net user username password /add |
PowerShell 提供更安全的方式来创建用户,支持加密和处理复杂密码。 |
| 删除用户 |
Remove-LocalUser -Name "username" |
net user username /delete |
PowerShell 提供更多的安全控制和详细选项。 |
| 示例 |
New-LocalUser -Name "JohnDoe" -Password (ConvertTo-SecureString "password123" -AsPlainText -Force) |
net user JohnDoe password123 /add |
PowerShell 使用 ConvertTo-SecureString 处理敏感信息,CMD 需要明文密码。 |
| 输出格式 |
输出对象格式,便于进一步筛选和操作 |
无输出,或者以文本格式显示结果 |
PowerShell 支持更精细的用户管理,包括属性设置等。 |
15. 系统信息查看
| 功能 |
PowerShell |
CMD |
区别 |
| 查看系统信息 |
Get-ComputerInfo |
systeminfo |
PowerShell 提供了更详细、结构化的信息,适合自动化脚本使用。 |
| 示例 |
Get-ComputerInfo |
systeminfo |
PowerShell 输出为对象,适合进一步操作和分析,CMD 为文本格式。 |
| 输出格式 |
对象格式,便于进一步筛选、分析和处理 |
文本格式,适合快速查看 |
PowerShell 更适合细节分析和自动化,CMD 更简洁直观。 |
总结
| 功能 |
PowerShell |
CMD |
区别 |
| 网络管理 |
Get-NetTCPConnection 提供更详细的网络信息,支持对象操作 |
netstat 提供基本的网络连接状态 |
PowerShell 提供更细粒度的控制和输出,CMD 更简洁适用于快速查看。 |
| 远程管理 |
Invoke-Command 支持远程执行 PowerShell 脚本和命令 |
psexec 是独立工具,用于执行远程命令 |
PowerShell 内建远程管理功能,CMD 依赖外部工具。 |
| 文件管理 |
Set-Acl、Get-Acl 提供精细的权限控制 |
icacls 提供基本的文件权限设置 |
PowerShell 提供更强大且灵活的权限管理功能,CMD 功能较为简单。 |
| 服务和进程管理 |
Get-Service、Stop-Service 提供详细的服务控制 |
net start、net stop 控制服务 |
PowerShell 支持对象操作,更适合自动化,CMD 更适合快速手动操作。 |
| 用户管理 |
New-LocalUser、Set-LocalUser 等命令支持更复杂的用户管理 |
net user 提供简单的 |