CMD 与 PowerShell 命令对应的表格:PowerShell 命令支持对象管道、复杂的数据处理和脚本化的能力,而 CMD 更多是命令行工具,适合执行简单的命令和操作。PowerShell 支持丰富的脚本语言,可以用来进行系统管理、批处理和自动化任务,而 CMD 更多是用于手动交互式的命令执行。

CMDPowerShell 命令对应的表格:

功能 CMD 命令 PowerShell 命令
Ping 测试连接 ping <IP地址> Test-NetConnection -ComputerName <IP地址>
查看 IP 配置 ipconfig Get-NetIPAddress
查看网卡配置 ipconfig /all Get-NetIPConfiguration
显示路由信息 route print

Get-NetRoute

ARP (地址解析协议) 缓存 arp -a

 

Get-NetNeighbor
查看网络适配器状态 netstat Get-NetTCPConnection
查看 DNS 配置 ipconfig /displaydns Get-DnsClientServerAddress

解释:

  1. Ping 测试连接

    • ping 命令用于测试与远程主机的网络连接。
    • PowerShell 中使用 Test-NetConnection,可以提供更详细的信息,如端口开放状态、网络延迟等。
  2. 查看 IP 配置

    • 在 CMD 中,ipconfig 显示本地计算机的网络配置。
    • 在 PowerShell 中,Get-NetIPAddress 则返回更详细的 IP 地址信息。
  3. 查看网卡配置

    • ipconfig /all 显示所有网络适配器的详细配置。
    • 在 PowerShell 中,Get-NetIPConfiguration 返回所有适配器的配置,包括 IPv4、IPv6 地址等。

常见的 CMD 命令PowerShell 命令 对应的表格化:

功能 CMD 命令 PowerShell 命令
查看 IP 配置 ipconfig Get-NetIPAddress
查看详细 IP 配置 ipconfig /all Get-NetIPConfiguration
查看路由表 route print Get-NetRoute
查看网络连接状态 netstat Get-NetTCPConnection
查看 DNS 配置 ipconfig /displaydns Get-DnsClientServerAddress
Ping 测试 ping <IP地址> Test-NetConnection -ComputerName <IP地址>
查看计算机名称 hostname Get-ComputerInfo
查看环境变量 set Get-ChildItem Env:
列出文件夹内容 dir Get-ChildItem
创建文件夹 mkdir <文件夹名> New-Item -ItemType Directory -Name <文件夹名>
删除文件夹 rmdir <文件夹名> Remove-Item -Recurse -Force <文件夹名>
删除文件 del <文件名> Remove-Item <文件名>
复制文件 copy <源文件> <目标文件> Copy-Item <源文件> -Destination <目标文件>
移动文件 move <源文件> <目标文件> Move-Item <源文件> -Destination <目标文件>
重命名文件 rename <文件名> <新名称> Rename-Item <文件名> -NewName <新名称>
清空命令行屏幕 cls Clear-Host
查看进程 tasklist Get-Process
结束进程 taskkill /PID <进程ID> Stop-Process -Id <进程ID>
系统信息 systeminfo Get-ComputerInfo
创建用户账户 net user <用户名> <密码> /add New-LocalUser -Name <用户名> -Password (ConvertTo-SecureString <密码> -AsPlainText -Force)
删除用户账户 net user <用户名> /delete Remove-LocalUser -Name <用户名>
修改用户密码 net user <用户名> <新密码> Set-LocalUser -Name <用户名> -Password (ConvertTo-SecureString <新密码> -AsPlainText -Force)
查看磁盘空间 dir <驱动器>: /a Get-PSDrive -PSProvider FileSystem
查看系统时间 time Get-Date
修改系统时间 time <HH:MM> Set-Date -Date "<YYYY-MM-DD HH:MM>"
查看日期 date Get-Date
修改日期 date <MM-DD-YYYY> Set-Date -Date "<MM/DD/YYYY>"

说明:

  1. CMD 与 PowerShell 命令功能对比

    • CMD 和 PowerShell 都可以执行类似的操作,但 PowerShell 提供了更强大的功能和灵活的脚本能力。
    • PowerShell 命令支持对象管道、复杂的数据处理和脚本化的能力,而 CMD 更多是命令行工具,适合执行简单的命令和操作。
  2. 常见命令差异

    • 在 PowerShell 中,很多命令是基于对象的,比如获取进程列表时,Get-Process 返回的是进程对象,可以直接对这些对象进行操作(如筛选、排序、计算等)。
    • CMD 命令则更简单,通常返回文本输出,需要额外的工具或解析步骤来处理这些输出。
  3. 增强功能

    • PowerShell 支持丰富的脚本语言,可以用来进行系统管理、批处理和自动化任务,而 CMD 更多是用于手动交互式的命令执行。

更多常见的 CMDPowerShell 命令对应表:

功能 CMD 命令 PowerShell 命令
查看当前用户 whoami whoami
查看本地用户列表 net user Get-LocalUser
查看本地组列表 net localgroup Get-LocalGroup
加入域 net user <用户名> /domain Add-Computer -DomainName <域名> -Credential <用户名>
退出域 net leave Remove-Computer -UnjoinDomainCredential <用户名>
显示当前网络连接 netstat Get-NetTCPConnection
查看当前网络配置 netsh interface ip show config Get-NetIPConfiguration
配置 IP 地址 netsh interface ip set address New-NetIPAddress
配置 DNS 服务器 netsh interface ip set dns Set-DnsClientServerAddress
查看当前防火墙状态 netsh advfirewall show allprofiles Get-NetFirewallProfile
开启/关闭防火墙 netsh advfirewall set allprofiles state off Set-NetFirewallProfile -Enabled False
启动服务 net start <服务名> Start-Service <服务名>
停止服务 net stop <服务名> Stop-Service <服务名>
查看服务状态 sc query <服务名> Get-Service <服务名>
查看所有服务 net start Get-Service
启动应用程序 start <应用程序路径> Start-Process <应用程序路径>
显示计算机名称 hostname Get-ComputerInfo
计算机关机 shutdown /s /f /t <秒数> Stop-Computer -Force
计算机重启 shutdown /r /f /t <秒数> Restart-Computer -Force
查看磁盘分区信息 diskpart Get-Disk
格式化磁盘 format <驱动器>: Clear-Disk -Number <磁盘编号> -RemoveData
查看驱动器信息 wmic logicaldisk get name Get-PSDrive -PSProvider FileSystem
查看系统信息 systeminfo Get-ComputerInfo
安装程序 start <安装包> Start-Process <安装包>
删除文件 del <文件路径> Remove-Item <文件路径>
重命名文件 ren <旧文件名> <新文件名> Rename-Item <旧文件名> -NewName <新文件名>
查找文件 dir /s /b <文件名> Get-ChildItem -Recurse -Filter <文件名>
压缩文件 tar -cvf <压缩包名> <文件/文件夹> Compress-Archive -Path <文件/文件夹> -DestinationPath <压缩包名>
解压文件 tar -xvf <压缩包名> Expand-Archive -Path <压缩包名> -DestinationPath <目标路径>
显示时间 time /t Get-Date -Format "HH:mm:ss"
显示日期 date /t Get-Date -Format "MM/dd/yyyy"
设置日期和时间 date <MM-DD-YYYY>  time <HH:MM> Set-Date -Date "<MM/dd/yyyy HH:mm>"
查看 Windows 版本 ver `Get-ComputerInfo
修改文件权限 cacls <文件名> /E /P <用户名>:<权限> Set-Acl -Path <文件路径> -AclObject <访问控制列表>
查看进程 tasklist Get-Process
结束进程 taskkill /PID <进程ID> Stop-Process -Id <进程ID>
查看任务计划 schtasks Get-ScheduledTask
创建任务计划 schtasks /create /tn <任务名> /tr <程序路径> /sc daily /st <时间> New-ScheduledTaskTrigger -Daily -At <时间>  Register-ScheduledTask -Action (New-ScheduledTaskAction -Execute <程序路径>) -Trigger $trigger -TaskName <任务名>
创建本地管理员 net localgroup administrators <用户名> /add Add-LocalGroupMember -Group "Administrators" -Member <用户名>
删除本地管理员 net localgroup administrators <用户名> /delete Remove-LocalGroupMember -Group "Administrators" -Member <用户名>

说明:

  1. PowerShell 相较于 CMD 的优势:PowerShell 提供了更多对对象的处理能力,可以轻松操作和筛选对象(如进程、文件系统、网络配置等),支持复杂的脚本和管道操作,适合进行自动化任务。

  2. 命令的扩展功能:CMD 命令大多数都处理文本输出,而 PowerShell 可以处理对象,允许用户更精确地筛选和处理信息。

  3. Windows 管理和自动化:PowerShell 是微软推荐的管理工具,支持系统管理、文件操作、网络配置、服务管理等功能,比传统的 CMD 更加高效和强大。


更多 CMDPowerShell 命令对应表,帮助你了解如何在这两种环境下执行相似的任务。

功能 CMD 命令 PowerShell 命令
查看文件夹内容 dir Get-ChildItem
创建文件夹 mkdir <文件夹名> New-Item -ItemType Directory -Name <文件夹名>
删除文件夹 rmdir <文件夹名> Remove-Item -Path <文件夹名> -Recurse
复制文件 copy <源文件> <目标路径> Copy-Item -Path <源文件> -Destination <目标路径>
移动文件 move <源文件> <目标路径> Move-Item -Path <源文件> -Destination <目标路径>
查看文件内容 type <文件名> Get-Content <文件名>
创建文件 echo <内容> > <文件名> Out-File -FilePath <文件名> -InputObject <内容>
追加文件内容 echo <内容> >> <文件名> Add-Content -Path <文件名> -Value <内容>
清空文件内容 echo. > <文件名> Clear-Content -Path <文件名>
查看系统环境变量 set Get-ChildItem Env:
设置系统环境变量 set <变量名>=<值> [System.Environment]::SetEnvironmentVariable("<变量名>", "<值>", "User")
显示当前工作目录 cd Get-Location
切换工作目录 cd <目录> Set-Location <目录>
显示 IP 配置 ipconfig Get-NetIPAddress
显示路由表 route print Get-NetRoute
清除 DNS 缓存 ipconfig /flushdns Clear-DnsClientCache
查看网卡信息 wmic nic get name, status Get-NetAdapter
启用/禁用网卡 netsh interface set interface <接口名称> enable/disable Enable-NetAdapter -Name <接口名称>  Disable-NetAdapter -Name <接口名称>
查看系统事件日志 eventvwr Get-WinEvent
创建用户账户 net user <用户名> <密码> /add New-LocalUser -Name <用户名> -Password (ConvertTo-SecureString <密码> -AsPlainText -Force)
删除用户账户 net user <用户名> /delete Remove-LocalUser -Name <用户名>
修改用户密码 net user <用户名> <新密码> Set-LocalUser -Name <用户名> -Password (ConvertTo-SecureString <新密码> -AsPlainText -Force)
查看当前进程 tasklist Get-Process
杀死进程 taskkill /PID <进程ID> Stop-Process -Id <进程ID>
查看 Windows 版本 systeminfo Get-ComputerInfo
查看进程占用的内存 tasklist /FI "memusage gt <大小>" Get-Process
显示文件权限 icacls <文件名> Get-Acl -Path <文件路径>
修改文件权限 icacls <文件名> /grant <用户名>:(R,W) Set-Acl -Path <文件路径> -AclObject <访问控制列表>
启动系统服务 net start <服务名> Start-Service <服务名>
停止系统服务 net stop <服务名> Stop-Service <服务名>
查看服务状态 sc query <服务名> Get-Service <服务名>
安装 Windows 功能 dism /online /enable-feature /featurename:<功能名> Enable-WindowsOptionalFeature -Online -FeatureName <功能名>
卸载 Windows 功能 dism /online /disable-feature /featurename:<功能名> Disable-WindowsOptionalFeature -Online -FeatureName <功能名>
查看磁盘空间 dir Get-PSDrive
查看磁盘使用情况 wmic logicaldisk get size,freespace,caption Get-PSDrive -PSProvider FileSystem
删除文件夹及其内容 rmdir /s /q <文件夹名> Remove-Item <文件夹路径> -Recurse -Force
显示网络适配器配置 netsh interface show interface Get-NetAdapter
查看和修改代理设置 netsh winhttp show proxy netsh winhttp set proxy proxy-server="<代理地址>" bypass-list="<不使用代理的地址>"
查看用户登录历史 net user <用户名> Get-EventLog -LogName Security -InstanceId 528
创建任务计划 schtasks /create /tn <任务名> /tr <任务路径> /sc daily /st <时间> New-ScheduledTaskTrigger -Daily -At <时间>  Register-ScheduledTask -Action (New-ScheduledTaskAction -Execute <任务路径>) -Trigger $trigger -TaskName <任务名>
显示计算机名称 hostname Get-ComputerInfo
关闭计算机 shutdown /s /f Stop-Computer -Force
重启计算机 shutdown /r /f Restart-Computer -Force
查看打印机信息 wmic printer list brief Get-Printer
删除打印机 printui /s /t2 Remove-Printer -Name <打印机名>
安装打印机 rundll32 printui.dll,PrintUIEntry /if /b <打印机名> /f <驱动文件路径> /r <打印机路径> Add-Printer -Name <打印机名> -DriverName <驱动名> -PortName <端口名>

说明:

  1. PowerShell 的优势:PowerShell 提供了比 CMD 更强大的功能和更精细的控制,特别是在处理对象、数据流、网络配置等方面。它支持脚本化,能够轻松自动化系统管理任务。
  2. 管道机制:PowerShell 支持强大的管道操作,可以将多个命令串联起来,使得任务可以分步骤执行并传递输出结果,这对于高级用户和自动化脚本尤为重要。

CMDPowerShell 的更多命令对应表,涵盖了常用的文件管理、系统管理、网络配置等操作:

功能 CMD 命令 PowerShell 命令
查看磁盘分区 diskpart Get-Disk
列出磁盘驱动器 wmic logicaldisk get caption Get-PSDrive -PSProvider FileSystem
检查磁盘错误 chkdsk Repair-Volume -DriveLetter <驱动器字母>
查看磁盘健康状态 wmic diskdrive get status Get-PhysicalDisk
显示内存信息 wmic memorychip get capacity Get-WmiObject -Class Win32_PhysicalMemory
显示处理器信息 wmic cpu get caption Get-WmiObject -Class Win32_Processor
列出所有用户账户 net user Get-LocalUser
列出所有计算机上的共享 net share Get-SmbShare
列出正在运行的服务 net start Get-Service
启动特定服务 net start <服务名> Start-Service <服务名>
停止特定服务 net stop <服务名> Stop-Service <服务名>
显示当前用户 echo %username% [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
列出所有已安装程序 wmic product get name Get-WmiObject -Class Win32_Product
获取系统信息 systeminfo Get-ComputerInfo
获取 Windows 版本 ver (Get-ComputerInfo).WindowsVersion
检查是否安装某个程序 wmic product where "name='<程序名>'" get name Get-WmiObject -Class Win32_Product
获取系统时间 time Get-Date
设置系统时间 time <时间> Set-Date -Date "<时间>"
显示当前时间和日期 echo %date% %time% Get-Date
设置计算机名 wmic computersystem where name="<计算机名>" call rename name="<新计算机名>" (Get-WmiObject -Class Win32_ComputerSystem).Rename("<新计算机名>")
显示所有环境变量 set Get-ChildItem Env:
设置环境变量 set <变量名>=<值> [System.Environment]::SetEnvironmentVariable("<变量名>", "<值>", "User")
列出网络接口 ipconfig /all Get-NetAdapter
获取网络适配器配置 netsh interface show interface Get-NetAdapter -Name <适配器名称>
禁用网络适配器 netsh interface set interface "<适配器名称>" disable Disable-NetAdapter -Name <适配器名称>
启用网络适配器 netsh interface set interface "<适配器名称>" enable Enable-NetAdapter -Name <适配器名称>
获取网络适配器 IP 地址 ipconfig Get-NetIPAddress
获取路由表 route print Get-NetRoute
设置 IP 地址 netsh interface ip set address name="<适配器名称>" static <IP地址> <子网掩码> <默认网关> New-NetIPAddress -InterfaceAlias "<适配器名称>" -IPAddress <IP地址> -PrefixLength <子网掩码长度> -DefaultGateway <默认网关>
设置 DNS 服务器 netsh interface ip set dns name="<适配器名称>" static <DNS服务器> Set-DnsClientServerAddress -InterfaceAlias "<适配器名称>" -ServerAddresses <DNS服务器>
显示活动进程 tasklist Get-Process
查看进程的详细信息 tasklist /v Get-Process
结束进程 taskkill /PID <进程ID> Stop-Process -Id <进程ID>
显示任务管理器信息 taskmgr Get-Process
查看正在使用的端口 netstat -an Get-NetTCPConnection
查看正在监听的端口 `netstat -an find "LISTEN"`
查找特定进程使用的端口 `netstat -ano findstr <进程ID>`
查看文件权限 icacls <文件名> Get-Acl -Path <文件路径>
修改文件权限 icacls <文件名> /grant <用户名>:(R,W) Set-Acl -Path <文件路径> -AclObject <访问控制列表>
显示计算机共享资源 net share Get-SmbShare
查看登录历史 net user <用户名> Get-EventLog -LogName Security -InstanceId 528
配置自动化任务计划 schtasks /create /tn <任务名> /tr <命令路径> /sc <频率> New-ScheduledTaskTrigger -Daily -At <时间>  Register-ScheduledTask -Action (New-ScheduledTaskAction -Execute <命令路径>) -Trigger $trigger -TaskName <任务名>
列出所有计划任务 schtasks /query Get-ScheduledTask
删除计划任务 schtasks /delete /tn <任务名> Unregister-ScheduledTask -TaskName <任务名>
安装 Windows 更新 wuauclt /detectnow Get-WindowsUpdate  Install-WindowsUpdate
启用或禁用 Windows 功能 dism /online /enable-feature /featurename:<功能名> Enable-WindowsOptionalFeature -Online -FeatureName <功能名>
卸载 Windows 功能 dism /online /disable-feature /featurename:<功能名> Disable-WindowsOptionalFeature -Online -FeatureName <功能名>
修改系统时间 date <日期> Set-Date -Date "<日期>"

说明:

  • PowerShell 的优势:PowerShell 提供了更强大的脚本支持,可以处理更多的对象和复杂的逻辑。它比 CMD 更加面向对象和模块化,适用于自动化任务和系统管理。
  • 对象与管道:PowerShell 处理的输出对象可以直接传递给其他命令,这对于系统管理来说非常方便。而 CMD 更侧重于命令行界面的交互。
  • 管理更高效:PowerShell 的强大之处在于它能通过管道将命令结果传递给其他命令进行处理,让系统管理员能够通过简短的脚本执行复杂的任务。

CMDPowerShell 命令的更多对应表,涵盖了更多常用的系统管理和操作任务:

功能 CMD 命令 PowerShell 命令
查看系统环境变量 set Get-ChildItem Env:
修改环境变量 set <变量名>=<值> [System.Environment]::SetEnvironmentVariable("<变量名>", "<值>", "User")
列出当前所有磁盘 wmic logicaldisk get caption Get-Disk
获取当前进程列表 tasklist Get-Process
查找进程 `tasklist findstr <进程名>
查看进程的详细信息 tasklist /v Get-Process
终止进程 taskkill /PID <进程ID> Stop-Process -Id <进程ID>
查看端口占用情况 netstat -an Get-NetTCPConnection
查看本地计算机的活动端口 netstat -ano Get-NetTCPConnection -State Established
关闭防火墙 netsh advfirewall set allprofiles state off Set-NetFirewallProfile -Enabled False
启用防火墙 netsh advfirewall set allprofiles state on Set-NetFirewallProfile -Enabled True
列出所有的用户账户 net user Get-LocalUser
创建新用户 net user <用户名> <密码> /add New-LocalUser -Name <用户名> -Password (ConvertTo-SecureString "<密码>" -AsPlainText -Force)
删除用户账户 net user <用户名> /delete Remove-LocalUser -Name <用户名>
重命名计算机 wmic computersystem where name="<计算机名>" call rename name="<新计算机名>" (Get-WmiObject -Class Win32_ComputerSystem).Rename("<新计算机名>")
重启计算机 shutdown /r /f /t 0 Restart-Computer
关闭计算机 shutdown /s /f /t 0 Stop-Computer
查看网络适配器信息 ipconfig /all Get-NetAdapter
设置静态 IP 地址 netsh interface ip set address name="<适配器名称>" static <IP地址> <子网掩码> <默认网关> New-NetIPAddress -InterfaceAlias "<适配器名称>" -IPAddress <IP地址> -PrefixLength <子网掩码长度> -DefaultGateway <默认网关>
查看 IP 地址 ipconfig Get-NetIPAddress
获取计算机信息 systeminfo Get-ComputerInfo
查看服务状态 net start Get-Service
停止某个服务 net stop <服务名> Stop-Service -Name <服务名>
启动某个服务 net start <服务名> Start-Service -Name <服务名>
查看共享资源 net share Get-SmbShare
设置共享资源 net share <共享名>=<路径> New-SmbShare -Name <共享名> -Path <路径>
删除共享资源 net share <共享名> /delete Remove-SmbShare -Name <共享名>
列出所有计划任务 schtasks /query Get-ScheduledTask
创建计划任务 schtasks /create /tn <任务名> /tr <任务路径> /sc <频率> New-ScheduledTaskTrigger -Daily -At <时间>  Register-ScheduledTask -Action (New-ScheduledTaskAction -Execute <任务路径>) -Trigger $trigger -TaskName <任务名>
删除计划任务 schtasks /delete /tn <任务名> Unregister-ScheduledTask -TaskName <任务名>
查看防火墙规则 netsh advfirewall firewall show rule name=all Get-NetFirewallRule
禁用防火墙规则 netsh advfirewall firewall set rule name="<规则名>" new enable=no Set-NetFirewallRule -Name "<规则名>" -Enabled False
启用防火墙规则 netsh advfirewall firewall set rule name="<规则名>" new enable=yes Set-NetFirewallRule -Name "<规则名>" -Enabled True
查看当前磁盘空间 dir Get-PSDrive -PSProvider FileSystem
查看某个文件的权限 icacls <文件路径> Get-Acl -Path <文件路径>
修改文件权限 icacls <文件路径> /grant <用户名>:(R,W) Set-Acl -Path <文件路径> -AclObject <ACL对象>
查看当前时间 time Get-Date
修改系统时间 time <时间> Set-Date -Date "<时间>"
查看硬盘分区信息 wmic logicaldisk get caption Get-Disk
清理磁盘 cleanmgr Clear-Disk -DriveLetter <盘符>
列出所有进程 tasklist Get-Process
查找进程 tasklist findstr <进程名>
获取计算机驱动信息 driverquery Get-WmiObject Win32_PnPSignedDriver
检查磁盘健康状态 wmic diskdrive get status Get-PhysicalDisk
列出所有打印机 wmic printer list brief Get-Printer
设置打印机默认 wmic printer where name="<打印机名>" call setdefaultprinter Set-Printer -Name "<打印机名>" -IsDefault $true
列出当前计算机所有进程 tasklist Get-Process
列出当前进程及端口 netstat -ano Get-NetTCPConnection
获取计算机详细信息 systeminfo Get-ComputerInfo

说明:

  • PowerShell 提供了比 CMD 更强大的功能,支持面向对象编程、脚本编写和更灵活的管道操作。通过 PowerShell,管理员可以更方便地批量处理任务、进行系统管理以及自动化工作流。
  • CMD 适用于快速执行简单命令或处理一些经典的系统操作,但功能不如 PowerShell 强大。

CMDPowerShell 命令的更多对应表,涵盖了更多常用的系统管理、文件操作和网络配置等任务:

功能 CMD 命令 PowerShell 命令
列出当前目录下的文件 dir Get-ChildItem
列出指定路径下的文件 dir <路径> Get-ChildItem -Path <路径>
创建目录 mkdir <目录名> New-Item -Path <目录名> -ItemType Directory
删除目录 rmdir <目录名> Remove-Item -Path <目录名> -Recurse
删除文件 del <文件名> Remove-Item -Path <文件名>
复制文件 copy <源文件> <目标文件> Copy-Item -Path <源文件> -Destination <目标文件>
移动文件 move <源文件> <目标文件> Move-Item -Path <源文件> -Destination <目标文件>
重命名文件 rename <旧文件名> <新文件名> Rename-Item -Path <旧文件名> -NewName <新文件名>
查看文件内容 type <文件名> Get-Content -Path <文件名>
修改文件内容 无直接命令,需使用其他工具或编辑器 Set-Content -Path <文件名> -Value "<新内容>"
搜索文件内容 findstr <字符串> <文件名> Select-String -Path <文件名> -Pattern <字符串>
查看磁盘使用情况 dir <路径> /s Get-ChildItem -Path <路径> -Recurse
查看文件或目录大小 dir <路径> Get-Item <文件或目录路径>
显示计算机名 hostname hostname (在 PowerShell 中通常直接用此命令)
显示当前用户信息 echo %username% [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
显示当前日期和时间 date /t Get-Date
显示当前日期 date /t Get-Date -Format "yyyy-MM-dd"
显示当前时间 time /t Get-Date -Format "HH:mm:ss"
更改当前目录 cd <目录> Set-Location <目录>
查看当前目录 cd Get-Location
查看计算机网络设置 ipconfig Get-NetIPAddress
查看计算机 DNS 配置 ipconfig /all Get-DnsClientServerAddress
查看默认网关 ipconfig Get-NetIPAddress
设置计算机 DNS netsh interface ip set dns name="<适配器名>" static <DNS地址> Set-DnsClientServerAddress -InterfaceAlias "<适配器名>" -ServerAddresses <DNS地址>
查看网络连接状态 netstat Get-NetTCPConnection
查看 TCP 连接 netstat -t Get-NetTCPConnection
查看 UDP 连接 netstat -u Get-NetUDPEndpoint
查看端口占用情况 netstat -ano Get-NetTCPConnection -State Established
查找某个进程占用的端口 netstat -ano findstr <进程ID>
清理 DNS 缓存 ipconfig /flushdns Clear-DnsClientCache
查看网络适配器配置 ipconfig /all Get-NetAdapter
禁用网络适配器 netsh interface set interface "<适配器名>" disable Disable-NetAdapter -Name "<适配器名>"
启用网络适配器 netsh interface set interface "<适配器名>" enable Enable-NetAdapter -Name "<适配器名>"
查看磁盘信息 wmic diskdrive list brief Get-PhysicalDisk
查看分区信息 wmic partition list brief Get-Partition
创建磁盘分区 diskpart New-Partition -DiskNumber <磁盘编号> -Size <大小> -AssignDriveLetter
删除磁盘分区 diskpart Remove-Partition -DriveLetter <盘符>
查看 Windows 更新 wmic qfe list Get-HotFix
查看服务 net start Get-Service
启动服务 net start <服务名> Start-Service -Name <服务名>
停止服务 net stop <服务名> Stop-Service -Name <服务名>
禁用服务 sc config <服务名> start= disabled Set-Service -Name <服务名> -StartupType Disabled
启用服务 sc config <服务名> start= auto Set-Service -Name <服务名> -StartupType Automatic
查看日志 eventvwr Get-WinEvent
查看某个日志 eventvwr /c:<日志类型> Get-WinEvent -LogName <日志类型>
查看系统版本 ver Get-ComputerInfo
查看 Windows 许可证信息 slmgr /dli

Get-CimInstance SoftwareLicensingService

Get-WmiObject -query 'select * from SoftwareLicensingProduct'

查看已安装的程序 wmic product get name Get-WmiObject -Class Win32_Product
卸载程序 wmic product where name="<程序名>" call uninstall Get-WmiObject -Class Win32_Product -Filter "Name = '<程序名>'
查找文件 dir <路径> /s /b findstr <文件名>
显示磁盘分区信息 wmic logicaldisk list brief Get-Volume
创建新用户 net user <用户名> <密码> /add New-LocalUser -Name <用户名> -Password (ConvertTo-SecureString "<密码>" -AsPlainText -Force)
删除用户 net user <用户名> /delete Remove-LocalUser -Name <用户名>
更改用户密码 net user <用户名> <新密码> Set-LocalUser -Name <用户名> -Password (ConvertTo-SecureString "<新密码>" -AsPlainText -Force)
查看进程 tasklist Get-Process
终止进程 taskkill /PID <进程ID> Stop-Process -Id <进程ID>
查找某个进程 `tasklist findstr <进程名>`

说明:

  • CMD 命令通常适用于快速、简便的任务,而 PowerShell 提供了更多的灵活性和功能,特别是在自动化、脚本编写和面向对象编程方面。PowerShell 支持更强大的管道操作和对象处理,适合更复杂的任务。
  • PowerShell 与 CMD 的结合使用,可以在日常系统管理中达到更高效的工作

扩展的 CMD 与 PowerShell 命令对应表:

功能 CMD 命令 PowerShell 命令
查看系统环境变量 set Get-ChildItem Env:
设置系统环境变量 set <变量名>=<值> $env:<变量名> = <值>
查看系统信息 systeminfo Get-ComputerInfo
获取 IP 地址 ipconfig Get-NetIPAddress
查看服务状态 net start Get-Service
启动某个服务 net start <服务名> Start-Service -Name <服务名>
停止某个服务 net stop <服务名> Stop-Service -Name <服务名>
查看本地用户 net user Get-LocalUser
创建本地用户 net user <用户名> <密码> /add New-LocalUser -Name <用户名> -Password (ConvertTo-SecureString "<密码>" -AsPlainText -Force)
删除本地用户 net user <用户名> /delete Remove-LocalUser -Name <用户名>
修改本地用户密码 net user <用户名> <新密码> Set-LocalUser -Name <用户名> -Password (ConvertTo-SecureString "<新密码>" -AsPlainText -Force)
添加用户到组 net localgroup <组名> <用户名> /add Add-LocalGroupMember -Group <组名> -Member <用户名>
删除用户从组中 net localgroup <组名> <用户名> /delete Remove-LocalGroupMember -Group <组名> -Member <用户名>
查看计算机上运行的进程 tasklist Get-Process
终止进程 taskkill /PID <进程ID> Stop-Process -Id <进程ID>
查看指定文件是否存在 if exist <文件路径> echo 文件存在 Test-Path <文件路径>
创建文件 echo <内容> > <文件路径> Out-File -FilePath <文件路径> -InputObject "<内容>"
追加文件内容 echo <内容> >> <文件路径> Add-Content -Path <文件路径> -Value "<内容>"
获取文件属性 attrib <文件路径> Get-ItemProperty -Path <文件路径>
修改文件属性 attrib +r <文件路径> Set-ItemProperty -Path <文件路径> -Name "IsReadOnly" -Value $true
修改文件权限 icacls <文件路径> /grant <用户名>:(F) `Set-Acl -Path <文件路径> -AclObject (Get-Acl <文件路径>
查找文件 `dir <路径> /s /b findstr <文件名>`
显示磁盘分区信息 wmic logicaldisk list brief Get-Volume
显示磁盘空间 dir <路径> Get-PSDrive
格式化磁盘 format <驱动器> Format-Volume -DriveLetter <驱动器>
挂载磁盘 mountvol <驱动器> <卷标> Mount-DiskImage -ImagePath <磁盘镜像路径>
卸载磁盘 mountvol <驱动器> /p Dismount-DiskImage -ImagePath <磁盘镜像路径>
启用 Windows 防火墙 netsh advfirewall set allprofiles state on Set-NetFirewallProfile -All -Enabled True
禁用 Windows 防火墙 netsh advfirewall set allprofiles state off Set-NetFirewallProfile -All -Enabled False
查看防火墙规则 netsh advfirewall firewall show rule name=all Get-NetFirewallRule
开启端口 netsh advfirewall firewall add rule name="<规则名>" protocol=TCP dir=in localport=<端口号> action=allow New-NetFirewallRule -DisplayName "<规则名>" -Protocol TCP -LocalPort <端口号> -Action Allow
关闭端口 netsh advfirewall firewall delete rule name="<规则名>" Remove-NetFirewallRule -DisplayName "<规则名>"
查看日志事件 eventvwr Get-WinEvent
查看特定事件日志 eventvwr /c:<日志类型> Get-WinEvent -LogName <日志类型>
列出已安装的程序 wmic product get name Get-WmiObject -Class Win32_Product
卸载程序 wmic product where name="<程序名>" call uninstall `Get-WmiObject -Class Win32_Product -Filter "Name = '<程序名>'"
显示 Windows 版本 ver `Get-ComputerInfo
显示计算机硬件信息 wmic cpu get caption, deviceid, name, numberofcores, maxclockspeed Get-WmiObject -Class Win32_Processor
查看计算机 RAM 信息 wmic memorychip get devicelocator, capacity, speed Get-WmiObject -Class Win32_PhysicalMemory
查看硬盘信息 wmic diskdrive list brief Get-PhysicalDisk
查看分区信息 wmic partition list brief Get-Partition
查看系统 Uptime `systeminfo find "System Boot Time"`
设置时间 time <时间> Set-Date -Date "<日期时间>"
设置日期 date <日期> Set-Date -Date "<日期>"
显示当前用户 echo %username% [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
列出所有网络适配器 netsh interface show interface Get-NetAdapter
查看磁盘空间 dir <路径> Get-PSDrive
创建硬盘分区 diskpart New-Partition -DiskNumber <磁盘编号> -Size <大小> -AssignDriveLetter
删除硬盘分区 diskpart Remove-Partition -DriveLetter <盘符>
显示计算机详细信息 msinfo32 Get-ComputerInfo

说明:

  1. 文件权限管理:CMD 的 icacls 命令和 PowerShell 的 Set-Acl 命令都支持修改文件和目录的访问控制列表 (ACL),但 PowerShell 提供了更强的灵活性,支持更多的属性和对象处理。
  2. 网络配置:PowerShell 提供了更强大的网络管理命令,如 Get-NetIPAddressSet-NetAdapter 等,能实现更细致的配置和查询。
  3. 用户和组管理:在 PowerShell 中,用户管理(如创建、删除用户)通过 New-LocalUserRemove-LocalUserAdd-LocalGroupMember 等命令更为简洁和强大,而 CMD 则使用 net user 和 net localgroup

扩展的 CMD 与 PowerShell 命令对应表(续):

功能 CMD 命令 PowerShell 命令
列出计算机上的所有进程 tasklist Get-Process
终止指定进程 taskkill /PID <进程ID> Stop-Process -Id <进程ID>
列出正在运行的服务 net start Get-Service
启动服务 net start <服务名> Start-Service -Name <服务名>
停止服务 net stop <服务名> Stop-Service -Name <服务名>
查看网络连接 netstat Get-NetTCPConnection
查看网络适配器 ipconfig /all Get-NetAdapter
列出所有本地磁盘驱动器 wmic logicaldisk list brief Get-PSDrive
检查磁盘空间 dir <路径> Get-PSDrive
列出文件和目录 dir Get-ChildItem
显示文件的详细信息 dir /q `Get-Item <文件路径>
复制文件 copy <源路径> <目标路径> Copy-Item -Path <源路径> -Destination <目标路径>
移动文件 move <源路径> <目标路径> Move-Item -Path <源路径> -Destination <目标路径>
删除文件 del <文件路径> Remove-Item -Path <文件路径>
重命名文件 ren <旧文件名> <新文件名> Rename-Item -Path <旧文件路径> -NewName <新文件名>
创建目录 mkdir <目录路径> New-Item -Path <目录路径> -ItemType Directory
删除目录 rmdir <目录路径> Remove-Item -Path <目录路径> -Recurse
压缩文件或文件夹 tar -cvf <压缩文件名> <文件或文件夹> Compress-Archive -Path <文件或文件夹路径> -DestinationPath <压缩文件名>
解压缩文件 tar -xvf <压缩文件名> Expand-Archive -Path <压缩文件名> -DestinationPath <目标路径>
查看磁盘分区信息 diskpart Get-Partition
创建新分区 diskpart New-Partition -DiskNumber <磁盘编号> -Size <分区大小> -AssignDriveLetter <盘符>
删除分区 diskpart Remove-Partition -DriveLetter <盘符>
查看 Windows 版本信息 ver (Get-CimInstance -ClassName Win32_OperatingSystem).Caption
查看系统启动时间 systeminfo (Get-CimInstance -ClassName Win32_OperatingSystem).LastBootUpTime
查看当前日期和时间 date /t / time /t Get-Date
设置日期和时间 date <日期> / time <时间> Set-Date -Date "<日期时间>"
列出所有系统用户 net user Get-LocalUser
创建用户 net user <用户名> <密码> /add New-LocalUser -Name <用户名> -Password (ConvertTo-SecureString "<密码>" -AsPlainText -Force)
删除用户 net user <用户名> /delete Remove-LocalUser -Name <用户名>
列出所有用户组 net localgroup Get-LocalGroup
将用户添加到组 net localgroup <组名> <用户名> /add Add-LocalGroupMember -Group <组名> -Member <用户名>
将用户从组中移除 net localgroup <组名> <用户名> /delete Remove-LocalGroupMember -Group <组名> -Member <用户名>
显示已安装的程序列表 wmic product get name Get-WmiObject -Class Win32_Product
卸载程序 wmic product where name="<程序名>" call uninstall `Get-WmiObject -Class Win32_Product -Filter "Name = '<程序名>'"
列出所有防火墙规则 netsh advfirewall firewall show rule name=all Get-NetFirewallRule
创建防火墙规则 netsh advfirewall firewall add rule name="<规则名>" protocol=TCP dir=in localport=<端口号> action=allow New-NetFirewallRule -DisplayName "<规则名>" -Protocol TCP -LocalPort <端口号> -Action Allow
删除防火墙规则 netsh advfirewall firewall delete rule name="<规则名>" Remove-NetFirewallRule -DisplayName "<规则名>"
启动/禁用 Windows 防火墙 netsh advfirewall set allprofiles state on / off Set-NetFirewallProfile -All -Enabled True / False
显示系统日志 eventvwr Get-WinEvent
查找特定日志 eventvwr /c:<日志名称> Get-WinEvent -LogName <日志名称>
查看 CPU 信息 wmic cpu get caption, deviceid, name, numberofcores, maxclockspeed Get-WmiObject -Class Win32_Processor
查看内存信息 wmic memorychip get devicelocator, capacity, speed Get-WmiObject -Class Win32_PhysicalMemory
查看硬盘信息 wmic diskdrive list brief Get-PhysicalDisk
查看磁盘卷信息 wmic volume list brief Get-Volume
列出所有网络适配器 netsh interface show interface Get-NetAdapter
获取网络适配器详细信息 netsh interface ipv4 show config Get-NetIPConfiguration
查看网络接口信息 ipconfig /all `Get-NetAdapter
查看文件内容 type <文件路径> Get-Content -Path <文件路径>
将文件内容输出到文件 echo <内容> > <文件路径> Out-File -FilePath <文件路径> -InputObject "<内容>"
在文件中追加内容 echo <内容> >> <文件路径> Add-Content -Path <文件路径> -Value "<内容>"

进一步说明:

  1. 磁盘和分区管理:在 PowerShell 中,磁盘和分区管理非常灵活,命令如 New-PartitionGet-Partition 可以用来管理磁盘、创建、删除分区,而在 CMD 中则需要使用 diskpart 命令来实现类似功能。虽然 CMD 提供了 diskpart 工具,但 PowerShell 提供了更细化的控制和更友好的语法。
  2. 文件和目录操作:在 PowerShell 中,文件操作通过 Copy-ItemRemove-ItemMove-Item 等命令实现,语法更为一致且功能更强大。CMD 中虽然也有相应命令(如 copydel),但是功能相比之下较为基础。
  3. 防火墙与网络管理PowerShell 提供了如 `New-NetFirewall

扩展的 CMD 与 PowerShell 命令对应表(续):

功能 CMD 命令 PowerShell 命令
启动/禁用防火墙规则 netsh advfirewall set allprofiles state on / off Set-NetFirewallProfile -All -Enabled True / False
创建防火墙规则 netsh advfirewall firewall add rule name="<规则名>" protocol=TCP dir=in localport=<端口号> action=allow New-NetFirewallRule -DisplayName "<规则名>" -Protocol TCP -LocalPort <端口号> -Action Allow
删除防火墙规则 netsh advfirewall firewall delete rule name="<规则名>" Remove-NetFirewallRule -DisplayName "<规则名>"
显示系统日志 eventvwr Get-WinEvent
查找特定日志 eventvwr /c:<日志名称> Get-WinEvent -LogName <日志名称>
查看 CPU 信息 wmic cpu get caption, deviceid, name, numberofcores, maxclockspeed Get-WmiObject -Class Win32_Processor
查看内存信息 wmic memorychip get devicelocator, capacity, speed Get-WmiObject -Class Win32_PhysicalMemory
查看硬盘信息 wmic diskdrive list brief Get-PhysicalDisk
查看磁盘卷信息 wmic volume list brief Get-Volume
列出所有网络适配器 netsh interface show interface Get-NetAdapter
获取网络适配器详细信息 netsh interface ipv4 show config Get-NetIPConfiguration
查看网络接口信息 ipconfig /all `Get-NetAdapter
查看文件内容 type <文件路径> Get-Content -Path <文件路径>
将文件内容输出到文件 echo <内容> > <文件路径> Out-File -FilePath <文件路径> -InputObject "<内容>"
在文件中追加内容 echo <内容> >> <文件路径> Add-Content -Path <文件路径> -Value "<内容>"
列出系统环境变量 set Get-ChildItem Env:
设置系统环境变量 set <变量名>=<值> $env:<变量名> = <值>
查看所有任务计划 schtasks /query Get-ScheduledTask
创建任务计划 schtasks /create /tn <任务名> /tr <命令> /sc <时间间隔> New-ScheduledTask -Action (New-ScheduledTaskAction -Execute "<命令>") -Trigger (New-ScheduledTaskTrigger -Daily -At "<时间>") -TaskName "<任务名>"
删除任务计划 schtasks /delete /tn <任务名> Unregister-ScheduledTask -TaskName "<任务名>"
查看正在运行的任务 tasklist Get-Process
终止指定任务 taskkill /PID <进程ID> Stop-Process -Id <进程ID>
查看系统服务状态 net start Get-Service
启动系统服务 net start <服务名> Start-Service -Name <服务名>
停止系统服务 net stop <服务名> Stop-Service -Name <服务名>
列出计算机的共享文件夹 net share Get-SmbShare
创建共享文件夹 net share <共享名>=<路径> New-SmbShare -Name <共享名> -Path <路径>
删除共享文件夹 net share <共享名> /delete Remove-SmbShare -Name <共享名>
查看 TCP/IP 配置 ipconfig Get-NetIPConfiguration
重置 TCP/IP 配置 netsh int ip reset Reset-NetIPInterface
显示或设置代理 netsh winhttp show proxy netsh winhttp set proxy <代理地址>:<端口号>
检查网络连接 ping <目标IP> Test-Connection <目标IP>
跟踪网络路径 tracert <目标IP> Test-Connection <目标IP> -Tracert
显示主机名 hostname [System.Net.Dns]::GetHostName()
查看计算机的 IP 地址 ipconfig Get-NetIPAddress
列出所有用户 net user Get-LocalUser
创建新用户 net user <用户名> <密码> /add New-LocalUser -Name <用户名> -Password (ConvertTo-SecureString "<密码>" -AsPlainText -Force)
删除用户 net user <用户名> /delete Remove-LocalUser -Name <用户名>
列出所有用户组 net localgroup Get-LocalGroup
将用户添加到组 net localgroup <组名> <用户名> /add Add-LocalGroupMember -Group <组名> -Member <用户名>
将用户从组中移除 net localgroup <组名> <用户名> /delete Remove-LocalGroupMember -Group <组名> -Member <用户名>
查看计算机域信息 net config workstation Get-WmiObject -Class Win32_ComputerSystem
加入域 netdom join <计算机名> /domain:<域名> /userD:<用户名> /passwordD:<密码> Add-Computer -DomainName <域名> -Credential (Get-Credential)
退出域 netdom remove <计算机名> /domain:<域名> Remove-Computer -UnjoinDomain

进一步说明:

  1. 系统管理与任务调度

    • PowerShell 提供了更为强大的任务调度和服务管理功能。通过 New-ScheduledTask 和 Get-ScheduledTask 等命令,管理员可以更加方便地创建、管理和删除任务调度。相比之下,CMD 只能通过 schtasks 命令来管理任务调度,语法相对较为复杂。
  2. 网络管理

    • CMD 和 PowerShell 都提供了丰富的网络管理功能,如查看网络配置、设置代理、执行网络诊断等。PowerShell 中的 Test-Connection 和 Test-NetConnection 提供了比 CMD 中的 ping 和 tracert 命令更强大的诊断能力。
  3. 用户和组管理

    • PowerShell 提供了更多高级的用户和组管理功能,命令如 New-LocalUser 和 Add-LocalGroupMember 让用户管理更加简便,且可以与其他系统管理功能更好地集成。与此相比,CMD 中的 net user 和 net localgroup 功能较为基础。
  4. 文件与目录操作

    • 在 PowerShell 中,文件和目录操作的命令非常一致和易于理解,且支持更丰富的操作,如压缩和解压文件(Compress-Archive 和 Expand-Archive),这在 CMD 中并不直接提供。
  5. 防火墙管理

    • PowerShell 提供了比 CMD 更细致和强大的防火墙管理命令,支持基于策略、端口等的高级配置。而 CMD 的 netsh 命令相对来说较为基础,且命令的结构较为复杂。

总体来说,PowerShell 提供了比 CMD 更加丰富和高效的命令集合,尤其在系统管理、任务调度、网络配置和自动化


功能方面,PowerShell 相比 CMD 具有显著的优势,尤其在现代 Windows 系统中,PowerShell 被广泛应用于自动化任务和脚本编写。而 CMD 主要还是停留在传统的命令行操作,适用于一些快速的、简单的管理任务。接下来继续补充一些 CMDPowerShell 命令的对比:

系统文件和注册表操作

功能 CMD 命令 PowerShell 命令
查看文件或目录的属性 dir Get-ChildItem
查看文件详细信息 dir /Q Get-Item
复制文件或目录 xcopy <源路径> <目标路径> Copy-Item -Path <源路径> -Destination <目标路径>
移动文件或目录 move <源路径> <目标路径> Move-Item -Path <源路径> -Destination <目标路径>
删除文件或目录 del <文件路径> / rmdir <目录路径> Remove-Item -Path <文件路径> / Remove-Item -Path <目录路径>
创建新文件 echo <内容> > <文件路径> New-Item -Path <文件路径> -ItemType File -Value "<内容>"
创建注册表项 reg add <注册表路径> /v <键名> /t <类型> /d <数据> New-Item -Path "HKCU:\Software\<路径>"
删除注册表项 reg delete <注册表路径> /f Remove-Item -Path "HKCU:\Software\<路径>"
查看注册表项 reg query <注册表路径> Get-ItemProperty -Path "HKCU:\Software\<路径>"
修改注册表项值 reg add <注册表路径> /v <键名> /d <数据> Set-ItemProperty -Path "HKCU:\Software\<路径>" -Name <键名> -Value <数据>

系统监控和调试

功能 CMD 命令 PowerShell 命令
查看计算机性能 perfmon Get-Counter
查看活动进程 tasklist Get-Process
查找进程 ID tasklist /fi "imagename eq <进程名>" Get-Process -Name <进程名>
查看系统性能计数器 perfmon /report Get-Counter -Counter "\Processor(_Total)\% Processor Time"
查看计算机资源使用情况 systeminfo Get-WmiObject -Class Win32_OperatingSystem
查看硬盘使用情况 chkdsk Get-PSDrive
显示内存使用情况 systeminfo `Get-WmiObject -Class Win32_OperatingSystem

远程管理

功能 CMD 命令 PowerShell 命令
远程执行命令 psexec \\<计算机名> <命令> Invoke-Command -ComputerName <计算机名> -ScriptBlock { <命令> }
查看远程计算机状态 net use \\<计算机名> Test-Connection -ComputerName <计算机名>
远程登录计算机 mstsc /v:<计算机名> Enter-PSSession -ComputerName <计算机名>

文件压缩与解压

功能 CMD 命令 PowerShell 命令
压缩文件 tar -cf <压缩文件名> <文件或目录> Compress-Archive -Path <文件或目录> -DestinationPath <压缩文件名>
解压文件 tar -xf <压缩文件名> Expand-Archive -Path <压缩文件名> -DestinationPath <目标目录>
查看压缩文件内容 tar -tf <压缩文件名> Get-Content -Path <压缩文件名>

系统信息与配置

功能 CMD 命令 PowerShell 命令
查看系统信息 systeminfo Get-WmiObject -Class Win32_OperatingSystem
查看 Windows 版本信息 ver [System.Environment]::OSVersion
查看计算机硬件信息 wmic cpu get caption, deviceid, name Get-WmiObject -Class Win32_Processor
查看系统网络适配器信息 wmic nicconfig list Get-NetAdapter
查看电池状态 wmic path Win32_Battery get * Get-WmiObject -Class Win32_Battery
查看系统事件日志 eventvwr.msc Get-WinEvent -LogName "System"

自动化与脚本编写

功能 CMD 命令 PowerShell 命令
运行批处理文件 batch_file.bat & "batch_file.ps1"
执行多个命令 command1 && command2 command1; command2
写入日志文件 echo <日志内容> >> <日志文件> Out-File -FilePath <日志文件> -InputObject "<日志内容>" -Append
循环执行命令 for /l %i in (1,1,10) do <命令> `1..10
条件判断 if <条件> (命令) if (<条件>) { <命令> }

总结

  1. PowerShell vs CMD
    • CMD 更适合快速执行简单命令,对于日常基础操作(如文件管理、网络管理、任务管理)已经足够使用。
    • PowerShell 提供了更丰富的功能,特别是对于系统自动化、远程管理、批量处理和系统配置等任务,PowerShell 是一个更强大、更灵活的工具。
    • PowerShell 具有面向对象的特性,它可以处理更复杂的数据结构(如对象、数组、字典等),并且支持更复杂的脚本功能和模块化管理。
    • CMD 的命令执行速度通常稍快,但灵活性较差,而 PowerShell 是现代 Windows 系统管理的首选工具。

对于系统管理员和开发人员来说,PowerShell 在处理复杂任务时更为高效。对于日常基础操作和快速命令行输入,CMD 则可能更为方便。


对比 CMDPowerShell,我们可以深入探讨在一些更复杂的任务和高级应用中的差异。以下是更详细的对比,包括任务调度、进程控制、模块化管理和数据操作等方面。

任务调度与自动化

功能 CMD 命令 PowerShell 命令
创建任务计划 使用 schtasks 命令 使用 New-ScheduledTask
查看已创建的任务 schtasks /query Get-ScheduledTask
删除任务计划 schtasks /delete /tn <任务名> Unregister-ScheduledTask -TaskName <任务名>
设置任务计划 schtasks /create /tn <任务名> /tr <命令> /sc daily Register-ScheduledTask -Action (New-ScheduledTaskAction -Execute "<命令>") -Trigger (New-ScheduledTaskTrigger -Daily)
管理服务 net start <服务名> / net stop <服务名> Start-Service <服务名> / Stop-Service <服务名>
定时执行脚本 at <时间> <命令> Start-Sleep <秒数>; <命令>
设置任务延时 没有直接的延时功能 Start-Sleep -Seconds <秒数>

进程控制与调试

功能 CMD 命令 PowerShell 命令
列出当前进程 tasklist Get-Process
终止进程 taskkill /PID <进程ID> Stop-Process -Id <进程ID>
查看进程信息 tasklist /fi "imagename eq <进程名>" Get-Process -Name <进程名>
调试脚本 没有专门的调试功能 Set-PSDebug -Trace 1 (启用脚本调试)
获取进程详细信息 tasklist /v `Get-Process
获取子进程信息 tasklist /fi "parent eq <父进程ID>" Get-Process -ParentId <父进程ID>
限制进程 CPU 使用率 不直接支持 `Get-Process -Name <进程名>

数据操作与处理

功能 CMD 命令 PowerShell 命令
操作文本文件 type <文件> Get-Content <文件>
将数据输出到文件 echo <数据> > <文件> Out-File -FilePath <文件>
追加数据到文件 echo <数据> >> <文件> Add-Content -Path <文件> -Value <数据>
查找文件中的特定数据 findstr <字符串> <文件> Select-String -Path <文件> -Pattern <字符串>
数据排序 sort Sort-Object
筛选数据 find Where-Object
计算文件行数 find /c /v "" <文件> `(Get-Content <文件>
统计文件内容 find /c "<字符串>" <文件> (Select-String -Path <文件> -Pattern <字符串>).Count

网络管理与远程控制

功能 CMD 命令 PowerShell 命令
查看网络配置 ipconfig Get-NetIPConfiguration
查看当前连接 netstat Get-NetTCPConnection
查看网络接口信息 netsh interface ipv4 show config Get-NetAdapter
查看端口监听情况 netstat -an `Get-NetTCPConnection
远程登录计算机 telnet <计算机名> Enter-PSSession -ComputerName <计算机名>
远程执行命令 psexec \\<计算机名> <命令> Invoke-Command -ComputerName <计算机名> -ScriptBlock { <命令> }
查看计算机共享资源 net share Get-WmiObject -Class Win32_Share
启用远程管理 winrm quickconfig Enable-PSRemoting -Force

管理注册表与环境变量

功能 CMD 命令 PowerShell 命令
查看注册表项 reg query <注册表路径> Get-ItemProperty -Path "HKCU:\Software\<路径>"
修改注册表项值 reg add <注册表路径> /v <键名> /d <数据> Set-ItemProperty -Path "HKCU:\Software\<路径>" -Name <键名> -Value <数据>
删除注册表项 reg delete <注册表路径> Remove-Item -Path "HKCU:\Software\<路径>"
查看环境变量 set [System.Environment]::GetEnvironmentVariables()
修改环境变量 set <变量名>=<值> [System.Environment]::SetEnvironmentVariable("<变量名>", "<值>")
删除环境变量 不直接支持 [System.Environment]::SetEnvironmentVariable("<变量名>", $null)

进一步总结

CMD 适合于:

  • 快速执行简单的任务。
  • 使用传统的命令行方式进行文件管理、网络配置、任务调度等。
  • 对于没有复杂脚本需求或仅执行单一任务的用户,CMD 是一个更直接的工具。

PowerShell 适合于:

  • 自动化管理,批量操作,远程执行脚本。
  • 处理复杂的数据结构和对象,灵活性更高。
  • 系统管理员和开发人员需要更高效、全面的工具来处理各种复杂任务时,PowerShell 是更强大的选择。
  • 与外部工具和服务进行交互,支持模块化和自定义扩展。

总结来说,PowerShell 是更现代、更强大的工具,适用于自动化、远程管理和系统配置等复杂任务。CMD 虽然简洁且运行速度较快,但它的功能较为基础,无法与 PowerShell 的丰富功能相提并论。在日常管理和脚本编写中,PowerShell 的优势愈发明显,特别是在大型企业环境中,自动化和远程管理的需求越来越高,PowerShell 是首选工具。


深入对比 CMDPowerShell 在其他一些高级功能和实用性方面的差异,重点包括文件操作、脚本编写、错误处理、权限管理等。

文件操作和处理

功能 CMD 命令 PowerShell 命令
复制文件 copy <源文件> <目标文件> Copy-Item <源文件> -Destination <目标文件>
移动文件 move <源文件> <目标文件> Move-Item <源文件> -Destination <目标文件>
删除文件 del <文件> Remove-Item <文件>
查看文件夹内容 dir Get-ChildItem
查看文件信息 dir /q Get-Item <文件>
创建空文件 type nul > <文件> New-Item <文件> -ItemType File
创建目录 mkdir <目录> New-Item <目录> -ItemType Directory
重命名文件或目录 rename <原文件> <新文件> Rename-Item <原文件> -NewName <新文件>
递归删除文件夹 不直接支持 Remove-Item <文件夹路径> -Recurse
查找文件内容 find Select-String -Path <文件> -Pattern <字符串>

脚本编写与模块化

功能 CMD 命令 PowerShell 命令
执行脚本 直接运行 .bat 或 .cmd 文件 通过 .\<脚本文件> 执行 .ps1 脚本
支持循环控制 使用 for 循环 使用 forforeachwhile 等语法支持更强大的循环控制
条件判断 使用 if 语句 使用 if 语句,且支持更复杂的逻辑条件判断和布尔运算
函数定义 使用 call 调用外部文件,无法直接定义函数 可以直接使用 function 关键字定义函数,支持参数和返回值
错误处理 使用 `  
模块化管理 无模块化支持 支持模块化编程,用户可以定义、导入和使用模块来增强功能
导入模块 无法导入外部模块 Import-Module <模块名> 导入模块,支持官方和自定义模块
输出格式 输出为纯文本 支持 JSON, XML, CSV 等多种格式输出,便于数据交换和处理

错误处理与调试

功能 CMD 命令 PowerShell 命令
错误返回码 CMD 命令在执行失败时返回错误代码 (0为成功,其他为失败) PowerShell 支持 $? (上一个命令的执行状态) 和 $LASTEXITCODE (返回码)
捕获错误 无内建错误捕获机制 使用 try-catch 捕获和处理特定错误类型
调试脚本 无内建调试功能 Set-PSDebug -Trace 1 启用命令追踪,Break 可以在脚本执行中断
错误日志 无直接错误日志支持 可以使用 Start-Transcript 开启命令日志,所有输出都将记录在指定文件
日志记录 需要自己编写代码来实现日志记录 Write-EventLog 可以直接将日志写入 Windows 事件日志

权限管理与安全控制

功能 CMD 命令 PowerShell 命令
查看用户权限 net user <用户名> Get-LocalUser -Name <用户名>
添加用户 net user <用户名> <密码> /add New-LocalUser <用户名> -Password (ConvertTo-SecureString -AsPlainText "<密码>" -Force)
删除用户 net user <用户名> /delete Remove-LocalUser -Name <用户名>
更改用户密码 net user <用户名> <新密码> Set-LocalUser -Name <用户名> -Password (ConvertTo-SecureString "<新密码>" -Force)
查看系统权限 net localgroup Get-LocalGroupMember -Group <组名>
修改文件权限 cacls <文件> /e /p <用户名>:<权限> `Set-Acl <文件> (Get-Acl <文件>
查看进程权限 tasklist /v `Get-Process -Name <进程名>

远程管理与自动化

功能 CMD 命令 PowerShell 命令
远程管理 需要安装并配置 PsExec 等工具 Enter-PSSession -ComputerName <计算机名> 可以进行远程会话
远程执行脚本 使用 PsExec 等工具 Invoke-Command -ComputerName <计算机名> -ScriptBlock { <命令> }
文件共享 使用 net share 和 net use 共享文件夹 New-SmbShare 和 Set-SmbShare 管理文件共享
远程注册表访问 使用 reg 命令通过远程访问注册表 Get-ItemProperty -Path "HKLM:\Software\<路径>" -ComputerName <计算机名>
管理 Windows 服务 net start <服务名> / net stop <服务名> Start-Service <服务名> / Stop-Service <服务名>

总结

  • CMD 作为传统的命令行工具,简单且高效,适用于处理一些基本的文件管理、网络配置和系统操作任务。但它在自动化、脚本编写和复杂任务管理上能力有限。

  • PowerShell 是更为强大和灵活的工具,适合系统管理员、开发人员和自动化脚本编写者。它支持强大的对象处理、错误捕获、远程管理、脚本调试、模块化管理以及丰富的文件、网络和系统操作功能。PowerShell 提供了更高级的功能和更强的可扩展性,非常适合处理复杂和多样化的任务。

  • PowerShell 在跨平台支持方面也表现突出。它不仅可以在 Windows 上使用,还可以在 Linux 和 macOS 上运行,因此对于多平台环境的管理和自动化是一个理想选择。

  • 对于基础的文件管理、批处理任务和老旧系统,CMD 仍然是一个快速且实用的选择,但对于大多数复杂任务、自动化操作和远程管理,PowerShell 无疑是更强大的工具。


高级功能对比:PowerShell 和 CMD

继续从其他方面深入对比 PowerShellCMD,涵盖 管道与输出重定向对象处理日志与事件管理网络管理 等。


管道与输出重定向

功能 CMD 命令 PowerShell 命令
输出重定向 > (重定向到文件), >> (追加到文件), 2> (错误重定向) > (重定向到文件), >> (追加到文件), Out-File (更灵活的输出重定向)
管道操作 ` ` (将输出传递给下一个命令)
处理文本输出 只能处理纯文本输出 由于 PowerShell 输出的是对象,因此可以按字段、属性进行处理
管道过滤与选择 需要借助其他命令,如 find 或 findstr 可以使用 Where-ObjectSelect-Object 等 cmdlet 精确筛选对象
处理输出对象 无法直接操作输出为对象类型 可以直接操作对象,访问对象属性和方法,极大提高处理灵活性

示例

  • CMDdir | find "txt" — 查找当前目录下包含 txt 的文件。
  • PowerShellGet-ChildItem | Where-Object { $_.Extension -eq ".txt" } — 获取当前目录下所有扩展名为 .txt 的文件。

对象处理与类型系统

功能 CMD 命令 PowerShell 命令
输出类型 CMD 仅能处理文本输出 PowerShell 输出的是对象,每个命令的输出都是可以操作的对象
对象处理 只能处理文本内容,无法进行结构化操作 支持丰富的对象模型,可以通过属性和方法访问对象的数据
自定义对象 无法直接创建或使用自定义对象 可以通过 New-Object 或 PSCustomObject 创建自定义对象
数组与集合 需要手动处理数组和数据结构 内建支持数组、哈希表等数据结构,且支持 LINQ 风格的操作
类型检查 无直接的类型检查支持 可以使用 Get-TypeName 和 -is 操作符来进行类型检查

示例

  • CMD: 无法直接操作对象。
  • PowerShell:
    powershellCopy Code
    $user = [PSCustomObject]@{ Name="John"; Age=30 }
    $user.Name  # 访问属性

日志与事件管理

功能 CMD 命令 PowerShell 命令
记录命令执行日志 无内建日志系统 Start-Transcript 可以记录当前会话的所有输出到日志文件
查看事件日志 eventvwr.msc 打开事件查看器 Get-WinEvent 或 Get-EventLog 可查询 Windows 事件日志
创建自定义事件日志 无内建支持 New-EventLog 可以创建新的事件日志,并使用 Write-EventLog 写入日志
自动化任务日志记录 无内建支持 可以将日志写入文件、Windows 事件日志或自定义目标
查看/写入 Windows 事件 无直接支持 Get-WinEvent 查看、Write-EventLog 写入日志到事件日志中

示例

  • PowerShell:记录命令执行日志:

    powershellCopy Code
    Start-Transcript -Path "C:\logs\session.log"
    Get-Process
    Stop-Transcript
  • PowerShell:查看应用程序日志:

    powershellCopy Code
    Get-EventLog -LogName Application -Newest 10

网络管理与远程操作

功能 CMD 命令 PowerShell 命令
查看 IP 配置 ipconfig Get-NetIPAddress 或 ipconfig
查看网络连接 netstat Get-NetTCPConnection 或 netstat
管理网络共享 net share New-SmbShare 和 Set-SmbShare
查看远程计算机信息 systeminfo /s <远程计算机> Get-ComputerInfo -ComputerName <远程计算机>
远程执行命令 需要使用 PsExec 等工具 Invoke-Command 可在远程计算机上执行 PowerShell 脚本
远程 PowerShell 会话 无法直接支持 Enter-PSSession 进入远程 PowerShell 会话,Exit-PSSession 退出
管理远程服务 sc \\<远程计算机> start <服务> Get-Service -ComputerName <计算机名> 或 Restart-Service

示例

  • PowerShell:在远程计算机上执行命令:

    powershellCopy Code
    Invoke-Command -ComputerName "RemotePC" -ScriptBlock { Get-Process }
  • PowerShell:启动远程计算机上的服务:

    powershellCopy Code
    Start-Service -ComputerName "RemotePC" -Name "wuauserv"

自动化与计划任务

功能 CMD 命令 PowerShell 命令
创建计划任务 schtasks New-ScheduledTask 和 Register-ScheduledTask 创建计划任务
执行计划任务 schtasks /run /tn <任务名> Start-ScheduledTask 执行计划任务
查看计划任务 schtasks /query Get-ScheduledTask 查看计划任务
删除计划任务 schtasks /delete /tn <任务名> Unregister-ScheduledTask 删除计划任务
计划任务触发条件 需要手动设置 可以通过 New-ScheduledTaskTrigger 设置触发器条件

示例

  • PowerShell:创建一个每天 8:00 AM 执行的任务:
    powershellCopy Code
    $trigger = New-ScheduledTaskTrigger -Daily -At "8:00AM"
    Register-ScheduledTask -Action (New-ScheduledTaskAction -Execute "C:\Path\To\Script.ps1") -Trigger $trigger -TaskName "MyTask"

总结

CMDPowerShell 在处理文件操作、脚本编写、网络管理等方面有显著差异。简而言之:

  1. CMD 适合于较为简单、低级的操作,依赖于文本和简单的命令流控制。对于快速执行系统操作或批处理任务,CMD 是一个足够简洁的选择。

  2. PowerShell 是功能强大的脚本环境,适合进行复杂的系统管理、自动化任务、远程管理、对象处理和跨平台操作。它的核心优势在于支持对象操作、脚本逻辑编写和丰富的系统管理功能,能够更灵活地处理复杂任务。

  3. 对于需要高度自动化和复杂脚本的环境(如系统管理员、开发人员),PowerShell 无疑是一个更合适的选择。通过支持对象、模块化和强大的远程管理功能,PowerShell 能够大幅提升效率和系统操作的灵活性。

  4. 如果任务较为简单,且操作对象仅限于文件和目录,CMD 仍然是一个快速、轻便的工具,但在遇到复杂需求时,PowerShell 的优势会愈加明显。


 

posted @ 2024-12-27 07:44  suv789  阅读(170)  评论(0)    收藏  举报