CMD 与 PowerShell 命令对应的表格:PowerShell 命令支持对象管道、复杂的数据处理和脚本化的能力,而 CMD 更多是命令行工具,适合执行简单的命令和操作。PowerShell 支持丰富的脚本语言,可以用来进行系统管理、批处理和自动化任务,而 CMD 更多是用于手动交互式的命令执行。
CMD 与 PowerShell 命令对应的表格:
| 功能 | CMD 命令 | PowerShell 命令 |
|---|---|---|
| Ping 测试连接 | ping <IP地址> |
Test-NetConnection -ComputerName <IP地址> |
| 查看 IP 配置 | ipconfig |
Get-NetIPAddress |
| 查看网卡配置 | ipconfig /all |
Get-NetIPConfiguration |
| 显示路由信息 | route print |
|
| ARP (地址解析协议) 缓存 | arp -a |
|
| 查看网络适配器状态 | netstat |
Get-NetTCPConnection |
| 查看 DNS 配置 | ipconfig /displaydns |
Get-DnsClientServerAddress |
解释:
-
Ping 测试连接:
ping命令用于测试与远程主机的网络连接。- PowerShell 中使用
Test-NetConnection,可以提供更详细的信息,如端口开放状态、网络延迟等。
-
查看 IP 配置:
- 在 CMD 中,
ipconfig显示本地计算机的网络配置。 - 在 PowerShell 中,
Get-NetIPAddress则返回更详细的 IP 地址信息。
- 在 CMD 中,
-
查看网卡配置:
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>" |
说明:
-
CMD 与 PowerShell 命令功能对比:
- CMD 和 PowerShell 都可以执行类似的操作,但 PowerShell 提供了更强大的功能和灵活的脚本能力。
- PowerShell 命令支持对象管道、复杂的数据处理和脚本化的能力,而 CMD 更多是命令行工具,适合执行简单的命令和操作。
-
常见命令差异:
- 在 PowerShell 中,很多命令是基于对象的,比如获取进程列表时,
Get-Process返回的是进程对象,可以直接对这些对象进行操作(如筛选、排序、计算等)。 - CMD 命令则更简单,通常返回文本输出,需要额外的工具或解析步骤来处理这些输出。
- 在 PowerShell 中,很多命令是基于对象的,比如获取进程列表时,
-
增强功能:
- PowerShell 支持丰富的脚本语言,可以用来进行系统管理、批处理和自动化任务,而 CMD 更多是用于手动交互式的命令执行。
更多常见的 CMD 和 PowerShell 命令对应表:
| 功能 | 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 <用户名> |
说明:
-
PowerShell 相较于 CMD 的优势:PowerShell 提供了更多对对象的处理能力,可以轻松操作和筛选对象(如进程、文件系统、网络配置等),支持复杂的脚本和管道操作,适合进行自动化任务。
-
命令的扩展功能:CMD 命令大多数都处理文本输出,而 PowerShell 可以处理对象,允许用户更精确地筛选和处理信息。
-
Windows 管理和自动化:PowerShell 是微软推荐的管理工具,支持系统管理、文件操作、网络配置、服务管理等功能,比传统的 CMD 更加高效和强大。
更多 CMD 和 PowerShell 命令对应表,帮助你了解如何在这两种环境下执行相似的任务。
| 功能 | 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 <端口名> |
说明:
- PowerShell 的优势:PowerShell 提供了比 CMD 更强大的功能和更精细的控制,特别是在处理对象、数据流、网络配置等方面。它支持脚本化,能够轻松自动化系统管理任务。
- 管道机制:PowerShell 支持强大的管道操作,可以将多个命令串联起来,使得任务可以分步骤执行并传递输出结果,这对于高级用户和自动化脚本尤为重要。
CMD 和 PowerShell 的更多命令对应表,涵盖了常用的文件管理、系统管理、网络配置等操作:
| 功能 | 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 的强大之处在于它能通过管道将命令结果传递给其他命令进行处理,让系统管理员能够通过简短的脚本执行复杂的任务。
CMD 与 PowerShell 命令的更多对应表,涵盖了更多常用的系统管理和操作任务:
| 功能 | 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 强大。
CMD 与 PowerShell 命令的更多对应表,涵盖了更多常用的系统管理、文件操作和网络配置等任务:
| 功能 | 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 |
|
| 查看已安装的程序 | 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 |
说明:
- 文件权限管理:CMD 的
icacls命令和 PowerShell 的Set-Acl命令都支持修改文件和目录的访问控制列表 (ACL),但 PowerShell 提供了更强的灵活性,支持更多的属性和对象处理。 - 网络配置:PowerShell 提供了更强大的网络管理命令,如
Get-NetIPAddress、Set-NetAdapter等,能实现更细致的配置和查询。 - 用户和组管理:在 PowerShell 中,用户管理(如创建、删除用户)通过
New-LocalUser、Remove-LocalUser、Add-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 "<内容>" |
进一步说明:
- 磁盘和分区管理:在 PowerShell 中,磁盘和分区管理非常灵活,命令如
New-Partition、Get-Partition可以用来管理磁盘、创建、删除分区,而在 CMD 中则需要使用diskpart命令来实现类似功能。虽然 CMD 提供了diskpart工具,但 PowerShell 提供了更细化的控制和更友好的语法。 - 文件和目录操作:在 PowerShell 中,文件操作通过
Copy-Item、Remove-Item、Move-Item等命令实现,语法更为一致且功能更强大。CMD 中虽然也有相应命令(如copy、del),但是功能相比之下较为基础。 - 防火墙与网络管理: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 |
进一步说明:
-
系统管理与任务调度:
- PowerShell 提供了更为强大的任务调度和服务管理功能。通过
New-ScheduledTask和Get-ScheduledTask等命令,管理员可以更加方便地创建、管理和删除任务调度。相比之下,CMD 只能通过schtasks命令来管理任务调度,语法相对较为复杂。
- PowerShell 提供了更为强大的任务调度和服务管理功能。通过
-
网络管理:
- CMD 和 PowerShell 都提供了丰富的网络管理功能,如查看网络配置、设置代理、执行网络诊断等。PowerShell 中的
Test-Connection和Test-NetConnection提供了比 CMD 中的ping和tracert命令更强大的诊断能力。
- CMD 和 PowerShell 都提供了丰富的网络管理功能,如查看网络配置、设置代理、执行网络诊断等。PowerShell 中的
-
用户和组管理:
- PowerShell 提供了更多高级的用户和组管理功能,命令如
New-LocalUser和Add-LocalGroupMember让用户管理更加简便,且可以与其他系统管理功能更好地集成。与此相比,CMD 中的net user和net localgroup功能较为基础。
- PowerShell 提供了更多高级的用户和组管理功能,命令如
-
文件与目录操作:
- 在 PowerShell 中,文件和目录操作的命令非常一致和易于理解,且支持更丰富的操作,如压缩和解压文件(
Compress-Archive和Expand-Archive),这在 CMD 中并不直接提供。
- 在 PowerShell 中,文件和目录操作的命令非常一致和易于理解,且支持更丰富的操作,如压缩和解压文件(
-
防火墙管理:
- PowerShell 提供了比 CMD 更细致和强大的防火墙管理命令,支持基于策略、端口等的高级配置。而 CMD 的
netsh命令相对来说较为基础,且命令的结构较为复杂。
- PowerShell 提供了比 CMD 更细致和强大的防火墙管理命令,支持基于策略、端口等的高级配置。而 CMD 的
总体来说,PowerShell 提供了比 CMD 更加丰富和高效的命令集合,尤其在系统管理、任务调度、网络配置和自动化
功能方面,PowerShell 相比 CMD 具有显著的优势,尤其在现代 Windows 系统中,PowerShell 被广泛应用于自动化任务和脚本编写。而 CMD 主要还是停留在传统的命令行操作,适用于一些快速的、简单的管理任务。接下来继续补充一些 CMD 和 PowerShell 命令的对比:
系统文件和注册表操作
| 功能 | 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 (<条件>) { <命令> } |
总结
- PowerShell vs CMD:
- CMD 更适合快速执行简单命令,对于日常基础操作(如文件管理、网络管理、任务管理)已经足够使用。
- PowerShell 提供了更丰富的功能,特别是对于系统自动化、远程管理、批量处理和系统配置等任务,PowerShell 是一个更强大、更灵活的工具。
- PowerShell 具有面向对象的特性,它可以处理更复杂的数据结构(如对象、数组、字典等),并且支持更复杂的脚本功能和模块化管理。
- CMD 的命令执行速度通常稍快,但灵活性较差,而 PowerShell 是现代 Windows 系统管理的首选工具。
对于系统管理员和开发人员来说,PowerShell 在处理复杂任务时更为高效。对于日常基础操作和快速命令行输入,CMD 则可能更为方便。
对比 CMD 和 PowerShell,我们可以深入探讨在一些更复杂的任务和高级应用中的差异。以下是更详细的对比,包括任务调度、进程控制、模块化管理和数据操作等方面。
任务调度与自动化
| 功能 | 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 是首选工具。
深入对比 CMD 和 PowerShell 在其他一些高级功能和实用性方面的差异,重点包括文件操作、脚本编写、错误处理、权限管理等。
文件操作和处理
| 功能 | 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 循环 |
使用 for, foreach, while 等语法支持更强大的循环控制 |
| 条件判断 | 使用 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
继续从其他方面深入对比 PowerShell 和 CMD,涵盖 管道与输出重定向、对象处理、日志与事件管理、网络管理 等。
管道与输出重定向
| 功能 | CMD 命令 | PowerShell 命令 |
|---|---|---|
| 输出重定向 | > (重定向到文件), >> (追加到文件), 2> (错误重定向) |
> (重定向到文件), >> (追加到文件), Out-File (更灵活的输出重定向) |
| 管道操作 | ` | ` (将输出传递给下一个命令) |
| 处理文本输出 | 只能处理纯文本输出 | 由于 PowerShell 输出的是对象,因此可以按字段、属性进行处理 |
| 管道过滤与选择 | 需要借助其他命令,如 find 或 findstr |
可以使用 Where-Object、Select-Object 等 cmdlet 精确筛选对象 |
| 处理输出对象 | 无法直接操作输出为对象类型 | 可以直接操作对象,访问对象属性和方法,极大提高处理灵活性 |
示例:
- CMD:
dir | find "txt"— 查找当前目录下包含txt的文件。 - PowerShell:
Get-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 CodeStart-Transcript -Path "C:\logs\session.log" Get-Process Stop-Transcript -
PowerShell:查看应用程序日志:
powershellCopy CodeGet-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 CodeInvoke-Command -ComputerName "RemotePC" -ScriptBlock { Get-Process } -
PowerShell:启动远程计算机上的服务:
powershellCopy CodeStart-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"
总结
CMD 和 PowerShell 在处理文件操作、脚本编写、网络管理等方面有显著差异。简而言之:
-
CMD 适合于较为简单、低级的操作,依赖于文本和简单的命令流控制。对于快速执行系统操作或批处理任务,CMD 是一个足够简洁的选择。
-
PowerShell 是功能强大的脚本环境,适合进行复杂的系统管理、自动化任务、远程管理、对象处理和跨平台操作。它的核心优势在于支持对象操作、脚本逻辑编写和丰富的系统管理功能,能够更灵活地处理复杂任务。
-
对于需要高度自动化和复杂脚本的环境(如系统管理员、开发人员),PowerShell 无疑是一个更合适的选择。通过支持对象、模块化和强大的远程管理功能,PowerShell 能够大幅提升效率和系统操作的灵活性。
-
如果任务较为简单,且操作对象仅限于文件和目录,CMD 仍然是一个快速、轻便的工具,但在遇到复杂需求时,PowerShell 的优势会愈加明显。

浙公网安备 33010602011771号