简介

本文主要内容:
1.分别介绍CMD与Powershell的概念
2.分别列出CMD与Powershell的常用命令
3.分别演示CMD与Powershell的常见使用
4.分别举例bat与ps1脚本的一些使用示例


一.CMD与Powershell的概述


1.CMD

CMD(命令提示符)是Windows 操作系统中的一个命令行界面,用于执行各种命令行任务。它的作用主要集中在基本的系统操作、文件管理、网络配置和诊断任务等,尽管功能比 PowerShell 简单,但在日常使用中仍然非常实用。

1. 文件和目录管理

CMD 最基本的功能是操作文件和文件夹。用户可以通过命令创建、删除、复制和移动文件及文件夹,也可以查看当前目录中的文件列表或更改当前工作目录。文件管理操作在维护和组织系统文件时非常常用。

2. 系统诊断和维护

CMD 提供了许多系统维护相关的命令,用于检查系统健康状态、修复系统文件错误和获取有关计算机硬件和操作系统的信息。这些命令可以帮助用户排查系统问题,如文件损坏、磁盘错误等,确保计算机稳定运行。

3. 网络操作与诊断

通过 CMD,可以执行多种网络操作和测试。用户可以查看计算机的网络配置、测试与其他计算机或服务器的连接、追踪网络路径以及查看当前网络连接的状态。这些网络命令在解决网络连接问题或配置网络设置时非常有用。

4. 批处理与自动化

CMD 支持批处理脚本,这使得用户可以自动执行一系列任务。批处理文件可以包含多个命令,按照顺序执行,从而自动化一些重复性的工作任务。批处理文件在系统管理和运维中经常使用,特别是需要定期执行的任务,如备份或清理。

5. 进程和服务管理

CMD 提供了管理系统进程和服务的功能。用户可以查看当前正在运行的进程,终止不需要的进程,启动或停止系统服务。管理进程和服务对于监控和维护计算机的正常运行至关重要,特别是在处理性能问题或特定服务故障时。

6. 用户和权限管理

CMD 允许用户管理系统账户和权限设置。这包括创建新用户、删除现有用户、更改用户密码以及将用户添加到系统组。这些功能在多用户系统或需要配置权限的环境中非常重要,特别是管理员在管理本地用户时。

7. 磁盘和分区管理

CMD 具有一些磁盘管理命令,可以帮助用户查看和管理磁盘上的分区、格式化驱动器或检查磁盘的健康状况。这些命令可以在处理存储设备问题或重新组织磁盘空间时发挥作用。

8. 计划任务管理

用户可以通过 CMD 配置计划任务,自动执行某些命令或脚本。这对定期执行的任务(如备份、更新、清理等)非常有帮助,且可以精确控制任务执行的时间和频率。

9. 高级系统设置

CMD 提供了某些高级系统设置的访问权限,包括管理启动配置、更新组策略等。系统管理员通常使用这些命令来修改系统行为或执行深度管理任务。

10. 调试与故障排查

CMD 还提供了许多用于调试和故障排查的工具。例如,用户可以使用它检查系统的详细状态信息、查看日志,或测试与特定服务器的连接。它是排查问题、修复故障、提高计算机稳定性的重要工具。

CMD 是一个功能丰富的工具,虽然它的界面基于文本,但它可以执行各种任务,尤其适用于系统管理、文件操作、批量任务自动化以及故障排查等场景。在现代 Windows 系统中,虽然 PowerShell 更加功能强大,但 CMD 依然是一个简单易用的工具,适合执行许多日常的系统操作。

CMD 的局限性:

CMD 虽然功能实用,但与现代工具(如 PowerShell)相比,功能较为基础,缺少编程和高级管理功能。而 PowerShell 不仅能够执行 CMD 的所有功能,还提供了更强大的脚本能力和系统管理功能。

总结:CMD 是一个简单但功能可靠的工具,适合执行文件操作、网络诊断、批处理任务等基本管理任务,但它在现代自动化需求中已经逐渐被 PowerShell 等功能更强的工具所取代。

Windows批处理是使用CMD运行的一系列命令,通常以.bat或.cmd扩展名的文件保存


2.Powershell

PowerShell 是一种基于命令行的任务自动化和配置管理框架,由 Microsoft 开发,专为系统管理员和高级用户设计。它具有以下几个主要功能和作用:

1. 命令行接口 (CLI)

PowerShell 允许你使用命令(称为 cmdlets)执行各种任务,如文件操作、网络配置、服务管理等。它比传统的 CMD 提供了更强大的功能和更复杂的脚本处理能力。

2. 脚本编写和自动化

PowerShell 支持编写脚本文件(通常扩展名为 .ps1),通过这些脚本,你可以自动化复杂的系统管理任务,比如批量创建用户、部署应用、备份数据等。系统管理员可以使用它自动化日常任务,提高工作效率。

3. 对象导向

与传统命令行不同,PowerShell 的输出是对象,而不是纯文本。这意味着可以轻松处理、过滤和操作这些数据,进行更精细的管理。例如,你可以获取系统中的进程,然后筛选或终止特定的进程。

4. 跨平台支持

虽然 PowerShell 最初是为 Windows 开发的,但现在它已经开源并跨平台支持,可以在 Linux 和 macOS 上运行。这使得它适合管理混合环境的企业或开发者。

5. 系统管理和配置

PowerShell 提供了对 Windows 操作系统和应用程序的深入控制,用户可以通过它管理注册表、服务、进程、事件日志、网络配置、文件系统等。管理员也可以使用 PowerShell 执行远程管理。

6. 模块扩展和社区支持

PowerShell 支持模块化扩展,你可以安装第三方模块以获得更多功能,像 Azure PowerShell 模块用于管理 Azure 资源。PowerShell 库还提供了大量社区和官方开发的脚本和模块,进一步增强了它的功能。

常见用法:

如果你是开发人员或系统管理员,PowerShell 是非常强大且灵活的工具,适合用于自动化任务和复杂的系统管理。


3.区别

PowerShell 和 CMD(命令提示符)是 Windows 操作系统中两种命令行接口,但它们在功能、设计和用途上有显著的区别。(不过都使用命令cls清屏)以下是一些主要差异:

1. 命令集和功能

2. 基于文本 vs 基于对象

3. 脚本能力

4. 跨平台支持

5. 模块化和扩展性

6. 管理员权限

7. 命令语法

8. 集成 .NET

9. 远程管理

什么时候使用 CMD 和 PowerShell?

总结:

你可以根据任务的复杂度选择最合适的工具!


4.win+R

Win+R用于打开 “运行”对话框
在这个对话框中,你可以输入程序名、文件名、文档名或互联网地址快速启动相应的应用程序或打开文件
你可以输入cmd打开命令提示符,也可输入powershell打开终端


二.CMD使用示例


以我目前使用CMD的经验,主要有三个方面的用法
关于这些命令和bat中的语法,可以先去看看后面
下面演示都只用了最基本的命令与语法
更高级的目前我还没用到

1.查询信息

1.可以用ipconfig查询ip地址 2.可以使用ping命令查看是否连接有网络,包括是否是科学环境

2.使用bat脚本

再次介绍:BAT文件是批处理文件的一种,包含一系列可以在CMD中自动执行的命令,常用于自动化任务
需求:1.我每次想浏览Jekyll网站时,都需要运行一个命令,以此启动一个本地的开发服务器
通过运行这个bat文件,就能自动运行其中的命令 2.可以写一个py文件的启动器

3.进行文件间的操作

1.图中演示了我将ipconfig的输出重定向到了ip.txt

4.核心概念

1.重定向运算

>> (是左边出内容追加到右边)
>  (是左边输出内容覆盖到右边)
<  (是右边出内容追加到左边)
<< (记忆:箭头哪边,内容向哪边走)

2.管道运算

A `|` B (A的输出作为B的输入)

3.命令帮助信息查看

命令 /?

使用此命令后会显示命令的用法,和参数的介绍 4.更多的操作我目前并没怎么没有用到,如果有机会用到再更新


三.CMD命令大全


CMD(命令提示符)有许多命令,用于文件管理、系统诊断、网络操作等。在这里,将根据日常使用的重要性和频率对 CMD 命令进行排序和介绍。

1. 文件和目录管理命令

这些是最常用的命令,用于操作文件和文件夹。

2. 系统诊断和修复命令

这些命令用于检查和修复系统,排查问题。

3. 网络命令

这些命令用于诊断网络连接和配置网络设置。

4. 批处理命令

这些命令经常在批处理脚本(.bat 文件)中使用,以自动化重复任务。

5. 用户和权限管理

这些命令用于管理用户账户和权限。

6. 磁盘管理命令

这些命令用于管理硬盘驱动器和分区。

7. 进程和服务管理

这些命令用于查看、终止进程或管理系统服务。

sc query wuauserv

shutdown /s /t 0 # 立即关机 shutdown /r /t 0 # 立即重启

8. 时间与计划任务管理

这些命令用于与系统时间、计划任务有关的操作。

time

schtasks /create /sc daily /tn “Backup” /tr “backup.bat” /st 23:00

9. 高级管理命令

bcdedit /set {bootmgr} timeout 30

gpupdate /force

wmic process get name

10.总结:

  1. 文件和目录管理:如 dir、cd、copy、del 等,是最基础的操作。
  2. 系统诊断和修复:如 sfc、chkdsk、ipconfig 等,用于维护和修复系统。
  3. 网络操作:如 ping、netstat、tracert,对于网络调试和故障排查非常有用。
  4. 批处理和自动化:如 echo、for、if,用于编写自动化脚本。
  5. 用户和权限管理:如 net user、runas,用于管理账户和权限。

四.bat文件语法


批处理文件(BAT 文件)的语法基于 Windows 的命令行工具 CMD。BAT 文件用于自动执行一系列命令,通常以 .bat 或 .cmd 为扩展名。编写 BAT 文件时,使用的是 CMD 中的命令及其特定的控制结构来控制脚本的流程。

1.基本语法结构

BAT 文件的每一行通常包含一个命令,并且按照自上而下的顺序执行。常用的命令包括文件操作、系统管理、进程控制等。

REM This is a comment :: This is also a comment

echo Hello, World!

set myVar=123 echo %myVar%

@echo off

2.流程控制语法

BAT 文件支持基本的流程控制语法,如条件语句、循环等。

条件语句 (if)

if exist file.txt echo File exists

if “%myVar%”==”123” echo Variable is 123

if %myVar% GEQ 100 echo Value is greater than or equal to 100

循环语句 (for)

for %%f in (*.txt) do echo %%f

for /L %%i in (1, 1, 10) do echo %%i

3.输入输出

set /p userInput=Enter your name: echo Hello, %userInput%

echo This is a test > output.txt

echo Another line » output.txt

4.子程序与跳转

goto :start :start echo This is the start

call otherScript.bat

5.错误处理

if %errorlevel% neq 0 echo An error occurred

6.批处理文件常见参数

echo First parameter is %1

shift

7.批处理文件常用命令

pause

exit

8.高级功能

setlocal set myVar=123 endlocal

9.批处理文件的应用场景

10.总结:

BAT 文件语法虽然简单,但在系统自动化和维护中非常有用。它结合了条件语句、循环、变量操作等功能,可以编写复杂的脚本来处理各种任务。如果需要实现更复杂的功能或与外部工具交互,批处理脚本也可以作为基础,通过调用其他程序实现更强大的自动化解决方案。


五.Powershell命令大全


PowerShell 是一个功能强大的命令行界面和脚本语言,支持多种命令(cmdlets),这些命令用于系统管理、文件操作、网络管理等。以下是按重要性排序的一些常用 PowerShell 命令及其简要说明:

1.基本命令

2.文件和目录管理

3.系统管理

4.网络管理

5.用户和权限管理

6.服务和进程管理

7.脚本和自动化

8.对象和管道处理

9.注册表操作

10.获取系统信息

11.环境变量

12.其他常用命令

13.总结

以上列举的是一些重要且常用的 PowerShell 命令,按照其在日常使用中的重要性进行排序。这些命令可以帮助用户完成许多任务,从基础的文件管理到复杂的系统管理和自动化操作。PowerShell 的强大之处在于它的命令组合能力和对象处理能力,用户可以通过管道将一个命令的输出直接传递给另一个命令,从而实现更复杂的操作。


六.ps1文件语法


PSL 文件通常是指 PowerShell 脚本文件,其扩展名为 .ps1。PowerShell 脚本使用 PowerShell 语言编写,支持丰富的语法和功能。以下是对 PowerShell 脚本(PSL 文件)语法的详细介绍:

1.基本结构

# This is a comment

<# This is a multi-line comment It can span multiple lines #>

2.变量

$myVariable = “Hello, World!”

Write-Host “The message is: $myVariable”

3.数据类型

$stringVar = “This is a string” $intVar = 42 $arrayVar = @(1, 2, 3, 4) $hashTable = @{“key1” = “value1”; “key2” = “value2”}

4.流程控制

if ($condition) { # Do something } elseif ($otherCondition) { # Do something else } else { # Do another thing }

for ($i = 0; $i -lt 10; $i++) { Write-Host $i }

foreach ($item in $arrayVar) { Write-Host $item }

$counter = 0 while ($counter -lt 5) { Write-Host $counter $counter++ }

5.函数

function MyFunction { param ($param1, $param2) Write-Host “Parameter 1 is $param1” Write-Host “Parameter 2 is $param2” } MyFunction “Value1” “Value2”

6.错误处理

try { # Code that might throw an exception } catch { Write-Host “An error occurred: $_” } finally { # Code that runs regardless of success or failure }

7.模块和导入

Import-Module ModuleName

8.输入和输出

Write-Host “This is output to the console”

$userInput = Read-Host “Enter your name” Write-Host “Hello, $userInput!”

9.管道

Get-Process | Where-Object { $_.CPU -gt 100 }

10.文件操作

$content = Get-Content “C:\path\to\file.txt”

“Hello, World!” | Out-File “C:\path\to\output.txt”

11 对象和属性

$process = Get-Process | Where-Object { $_.Name -eq “powershell” } Write-Host “Process ID: $($process.Id)”

12.自动化和计划任务

$action = New-ScheduledTaskAction -Execute “PowerShell.exe” -Argument “C:\path\to\script.ps1” $trigger = New-ScheduledTaskTrigger -At 7am -Daily Register-ScheduledTask -Action $action -Trigger $trigger -TaskName “MyTask”

13.模块的创建与使用

14.管道和流

Get-Service | Where-Object { $_.Status -eq ‘Running’ }

15.自动完成和参数

16.总结

PowerShell 脚本(PSL 文件)语法强大且灵活,支持多种编程结构,使其能够用于系统管理、自动化任务、文件处理等多种场景。通过合理使用这些语法结构,用户可以编写高效、可维护的脚本来完成复杂的操作。


七.Powershell使用示例


1.配置环境

1.1.执行策略介绍

执行策略(Execution Policy)是 PowerShell 中的一个安全功能,用于控制脚本和配置文件的运行权限。它通过限制脚本的执行来保护系统不受潜在恶意代码的影响。主要的执行策略有:

  1. Restricted:默认策略,不允许任何脚本运行。
  2. AllSigned:只允许运行由受信任的发布者签名的脚本。
  3. RemoteSigned:本地脚本可以运行,远程脚本必须签名。
  4. Unrestricted:允许所有脚本运行,但在执行远程脚本时会有警告。
  5. Bypass:不进行任何检查,允许所有脚本运行。
  6. Undefined:没有设置策略,PowerShell 会回到默认策略。

可以通过 PowerShell 中的 Get-ExecutionPolicy 命令查看当前策略,通过 Set-ExecutionPolicy 命令更改策略。修改执行策略时需要考虑安全性和系统的需求。

1.2.运行命令检查执行策略

我这已经提前更改过了,初始是限制的

Get-ExecutionPolicy -List

1.3.更改执行策略

更改CurrentUser 的策略为RemoteSigned

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

2.批量重命名文件名

2.1.需求

我需要对一个目录下的所有png图片按照时间顺序进行指定格式的重命名

2.2.编写代码

文件后缀是ps1,不要写成psl了,数字1与字母l很像

2.3.在终端中运行

需处理的文件 运行命令 完成处理

2.4.python实现相同操作

3.注意事项

1.文件名命名最好不要用中文和空格

文件路径中使用中文字符和空格可能导致路径解析错误,特别是在某些编程语言和工具中。这可能导致文件无法找到或命令无法执行,增加了开发和调试的复杂性。因此,使用英文字符和下划线等替代方式更为稳妥


八.完结


关于CMD与Powershell,我目前并没有使用到过多的功能,相比于ps1脚本,更多人应该更喜欢py脚本,本文也仅简要介绍ps1与bat脚本,更多的功能请自行探索