当前位置: 首页 > article >正文

【 Windows 操作系统】.bat 与 .ps1 的区别和作用

很多人“会用脚本”但说不清脚本。 真正的差距往往从bat 和 ps1 的理解深度开始拉开。一、为什么 Windows 会同时存在.bat和.ps1这是一个历史 架构演进的问题。.ps1是PowerShell脚本文件的扩展名用于编写和执行 PowerShell 脚本。.bat是 Windows 批处理脚本文件的扩展名用于编写和执行一系列 Windows 命令。1.1、.bat的诞生背景.batBatch File来自DOS 时代核心设计目标只有一个把人工在命令行里敲的命令一次性自动执行所以它的设计思想是命令逐行执行一切皆字符串几乎没有“语言设计”1.2、.ps1的出现原因随着 Windows 成为服务器操作系统、企业级平台仅靠 bat 已经不够需要批量管理服务需要操作注册表、AD、WMI需要结构化数据XML / JSON需要远程管理于是PowerShell诞生了而.ps1是它的脚本载体。PowerShell 不是 CMD 的升级版而是全新的自动化平台二、.bat是什么2.1、执行模型执行程序cmd.exe执行方式逐行解释失败不会自动终止除非你自己判断cmd.exe /c test.bat2.2、核心特征无对象概念变量全是字符串依赖系统内置命令错误处理极弱2.3、bat 的“变量系统”set VARvalue echo %VAR%⚠️ 注意%VAR%是文本替换不是运行时计算循环里要用!VAR!延迟展开三、.bat的完整语法体系3.1、基本结构echo off rem 这是注释 echo Hello World pause关键字含义echo off关闭命令回显未关闭回显时每条命令都会先被打印出来再执行并显示结果。rem注释rem 为注释命令,一般用来给程序加上注解,该命令后的内容不被执行,但能回显::用于进行文本的注释执行后即使打开echo on也不会回显内容pause等待按键用于暂停批处理脚本执行,显示本地化提示(如‘请按任意键继续...’),并等待用户任意按键后才继续。其核心价值在于防止命令窗口闪退echo off title REM 和 :: 最小回显测试 echo 先关闭回显 echo. pause echo on REM 这一行是 REM :: 这一行是 :: echo 这一行是普通 echo 输出 echo off echo. echo 测试完成 pause执行后结果如下所示3.2、条件判断ifecho off title IF 输入判断示例 set /p a请输入一个数字 if %a%1 ( echo 你输入的是 1 ) else ( echo 你输入的不是 1 ) pause常见判断existerrorlevelif %errorlevel% neq 0 echo 执行失败这是 bat 最容易写出 bug 的地方。3.3、循环forecho off for %%i in (*.txt) do echo 找到文件%%i pausefor /f最反人类的语法/f表示按行读取文本内容并进行解析。echo off title 获取本机 IPv4 地址示例 echo 正在获取本机 IPv4 地址... echo. for /f tokens2 delims: %%i in (ipconfig ^| findstr /i IPv4) do echo 本机IPv4地址%%i echo. pausebat 最大的痛点能做的事 ≠ 好做的事四、.ps1是什么4.1、本质定位.ps1是PowerShell 脚本文件而 PowerShell 本身是基于 .NET 的面向对象自动化语言这句话极其重要。4.2、执行模型执行程序powershell.exe/pwsh.exe命令返回的不是文本而是对象Get-Service返回的是System.ServiceProcess.ServiceController而不是字符串。五、.ps1的语法体系5.1、变量与类型$name Windows $count 10支持强类型[int]$port 443Windows 默认不允许直接运行.ps1脚本运行需要配置如下命令配置只对当前 PowerShell 临时允许Set-ExecutionPolicy RemoteSigned -Scope CurrentUser5.2、条件判断if$port 443 if ($port -eq 443) { Write-Host HTTPS } else { Write-Host Other }对比 bat可读性直接碾压5.3、循环foreach / forforeach ($svc in Get-Service) { if ($svc.Status -eq Stopped) { Write-Host $svc.Name } }这里$svc是对象不是字符串。5.4、管道PowerShell 灵魂Get-Service | Where-Object Status -eq Running这就是 PowerShell 能彻底干掉 bat 的原因。5.5、函数企业级脚本必备function Restart-MyService { param($Name) Restart-Service $Name }六、执行策略为什么 ps1 默认跑不了6.1、执行策略是什么PowerShell 引入了Execution Policy防止脚本被恶意执行常见策略策略含义Restricted禁止脚本RemoteSigned本地允许Bypass全放行6.2、企业最常用方式powershell -ExecutionPolicy Bypass -File deploy.ps1注意这是“临时放行”不改系统策略。七、.bat与.ps1的工程级对比维度batps1自动化能力低极高可维护性差好错误处理原始完整日志能力几乎没有原生支持适合规模小中 / 大企业标准淘汰中主流bat 能跑 ps1 能长期维护八、真实企业场景建议8.1、不再用 bat 的场景安全整改脚本批量系统配置运维巡检自动化部署8.2、ps1 的黄金场景等保 / 分保脚本批量漏洞修复服务巡检日志采集AD / 注册表管理九、一个现实真相很多“只会 bat 的运维” 本质上还停留在人工命令自动化阶段而 PowerShell 做的是系统能力的程序化控制这是两个时代。.bat是历史的产物.ps1是 Windows 自动化的基石懂 bat 是入门 精通 ps1 才是职业护城河十、【实战】Windows信息检查脚本功能说明检查Windows主机的硬件配置系统安装时间系统版本硬件序列号等。具体脚本内容GetSystemInfo.ps1文件内容如下所示# # 版权所有 © 2026 笨熊呆呆瓜 # 联系方式842668578qq.com # 用途收集本机系统信息时间、主机名、用户、BIOS、硬盘、IP与MAC等 # # 确保脚本路径正确 $scriptDir if ($PSScriptRoot) { $PSScriptRoot } else { Get-Location } Set-Location -Path $scriptDir # 获取时间、主机名、用户、操作系统信息 $timestamp Get-Date -Format yyyy-MM-dd_HH-mm-ss $hostname $env:COMPUTERNAME $username $env:USERNAME $osinfo Get-CimInstance Win32_OperatingSystem $osname $osinfo.Caption $installTime $osinfo.InstallDate.ToLocalTime().ToString(yyyy-MM-dd HH:mm:ss) # 构造输出文件路径 $outputFile Join-Path $scriptDir system_info_${hostname}_${timestamp}.txt # 初始化输出 Set-Content -Path $outputFile -Value 系统信息收集 -Encoding UTF8 Add-Content -Path $outputFile -Value 导出时间$timestamp -Encoding UTF8 Add-Content -Path $outputFile -Value 系统安装时间$installTime -Encoding UTF8 Add-Content -Path $outputFile -Value 主机名$hostname -Encoding UTF8 Add-Content -Path $outputFile -Value 当前用户$username -Encoding UTF8 Add-Content -Path $outputFile -Value 操作系统$osname -Encoding UTF8 Add-Content -Path $outputFile -Value -Encoding UTF8 # BIOS 序列号 Add-Content -Path $outputFile -Value [设备序列号 - BIOS SerialNumber] -Encoding UTF8 (Get-CimInstance Win32_BIOS).SerialNumber | Add-Content -Path $outputFile -Encoding UTF8 Add-Content -Path $outputFile -Value -Encoding UTF8 # 物理硬盘序列号 Add-Content -Path $outputFile -Value [硬盘序列号 - Disk Serial Numbers] -Encoding UTF8 Get-PhysicalDisk | ForEach-Object { 硬盘: $($_.FriendlyName) - 序列号: $($_.SerialNumber) | Add-Content -Path $outputFile -Encoding UTF8 } Add-Content -Path $outputFile -Value -Encoding UTF8 # 网卡 IP 和 MAC 配对输出清晰配对 Add-Content -Path $outputFile -Value [网络接口 - IP 与 MAC 地址配对] -Encoding UTF8 $adapters Get-NetAdapter | Where-Object { $_.Status -eq Up } foreach ($adapter in $adapters) { $name $adapter.Name $mac $adapter.MacAddress $ips Get-NetIPAddress -InterfaceAlias $name -AddressFamily IPv4 | Where-Object { $_.IPAddress -ne $null } if ($ips.Count -eq 0) { Add-Content -Path $outputFile -Value 接口: $name -Encoding UTF8 Add-Content -Path $outputFile -Value IP地址: 无 -Encoding UTF8 Add-Content -Path $outputFile -Value MAC地址: $mac -Encoding UTF8 } else { foreach ($ip in $ips) { Add-Content -Path $outputFile -Value 接口: $name -Encoding UTF8 Add-Content -Path $outputFile -Value IP地址: $($ip.IPAddress) -Encoding UTF8 Add-Content -Path $outputFile -Value MAC地址: $mac -Encoding UTF8 } } Add-Content -Path $outputFile -Value -Encoding UTF8 } # 控制台驻留兼容所有 PowerShell 版本 Write-Host n系统信息已导出到 -NoNewline Write-Host $outputFile -ForegroundColor Green Write-Host 请按任意键退出... [void][System.Console]::ReadKey($true)BAT文件RunSystemInfo.bat内容如下所示echo off :: :: 版权所有 © 2026 笨熊呆呆瓜 :: 联系方式842668578qq.com :: 用途调用 PowerShell 脚本收集本机系统信息 :: powershell -ExecutionPolicy Bypass -NoExit -File %~dp0GetSystemInfo.ps1运行BAT文件执行过程如下所示生成如下结果文件文件内容如下所示

相关文章:

【 Windows 操作系统】.bat 与 .ps1 的区别和作用

很多人“会用脚本”,但说不清脚本。 真正的差距,往往从 bat 和 ps1 的理解深度 开始拉开。一、为什么 Windows 会同时存在 .bat 和 .ps1?这是一个历史 架构演进的问题。.ps1 是 PowerShell 脚本文件的扩展名,用于编写和执行 Powe…...

Coruna 漏洞工具包曝光:苹果紧急推送 iOS 15.8.7,老 iPhone 正面临一场「无声围剿」

近日,苹果面向仍在使用 iOS 15 的老旧机型,紧急推送 iOS 15.8.7 安全更新,官方描述简短低调,却直指一个代号为 Coruna 的高危漏洞利用工具包。这不是一次常规迭代,而是一场针对数亿旧款 iPhone 的安全止损。 在移动安全…...

RAG技术解析:让大模型从“闭卷考试“到“开卷考试“的进化

RAG(检索增强生成)是一种结合检索与生成的AI架构,通过外挂知识库解决大模型的幻觉、缺乏专业知识和可解释性问题。工作流程分为索引、检索、增强、生成四阶段。企业应用广泛,包括知识助手、智能客服等。未来发展趋势包括GraphRAG、Agent增强RAG和多模态R…...

用大模型和RAG打造智能客服系统,小白也能轻松上手

本文详细介绍了如何利用大模型和RAG技术构建智能客服系统。通过分块处理企业文档、向量化存储和检索知识,系统能够理解用户意图、提供准确回答并支持多轮对话。相比传统客服的慢、笨、贵,该方案可降低70%成本,支持本地部署保障数据安全&#…...

“HALCON error #2404: Invalid handle type in operator do_ocr_multi_class_cnn

"HALCON error #2404: Invalid handle type in operator do_ocr_multi_class_cnn版本不一致的时候,安装群里的halcon20.11...

大模型学习宝典:零基础入门到项目实战的完整攻略

这篇文章提供了从零进入大模型领域的完整转型攻略,包括明确目标方向、掌握基础知识、学习大模型技术、实践项目、参与开源社区、推荐学习资源、职业发展建议和常见问题解答,帮助读者系统学习大模型技术并成功转型。 这里为你提供一份详细的转型攻略&…...

AI在线客服系统源码独立管理后台,自动回复文本、图片、视频等多种消息类型

温馨提示:文末有资源获取方式在数字化转型的浪潮中,企业客户服务的响应速度与智能化程度直接影响用户体验与品牌口碑。春哥团队基于PHP自主研发的微信AI智能在线客服系统源码,为企业打造了一套集智能交互、多媒体识别、知识库管理与人工协同于…...

基于卷积神经网络-门控循环单元的时间序列预测 CNN-GRU 基于MATLAB环境 替换自己的...

基于卷积神经网络-门控循环单元的时间序列预测 CNN-GRU 基于MATLAB环境 替换自己的数据即可 数据回归预测评价指标为RMSE R2 MAE MBE 最近在捣鼓时间序列预测的时候试了把CNN和GRU组队干活,发现这俩组合拳效果还挺有意思。直接把一维CNN当特征提取器,后面…...

C++智能指针:高效管理内存的利器

上篇文章:C算法:一维/二维前缀和算法模板题 目录 1.智能指针的使用场景 2.RAII和智能指针的设计思路 3.C标准库智能指针的使用 4.智能指针的原理 5.shared_ptr和weak_ptr 5.1shared_ptr循环引用问题 5.2weak_ptr 6.shared_ptr的线程安全问题 7…...

Linux系列四:SSH工具安装

由于我们企业开发时,Linux服务器一般都是在远程的机房部署的,我们要操作服务 器,不会每次都跑到远程的机房里面操作,而是会直接通过SSH连接工具进行连接操作。 进入正文: https://dl.hostbuf.com/finalshell3/finalsh…...

【跟韩工学Hadoop系列第3篇】Hadoop 单节点集群搭建(优化版)-003篇

文章目录Hadoop 单节点集群搭建(优化版)一、环境前置优化(基础层)1. 系统级优化(Linux)2. JDK 环境优化二、核心配置优化(功能层)1. 通用配置(core-site.xml)…...

Excel高级查询工具Pro版v3.0|跨平台浏览器端轻量级数据引擎

温馨提示:文末有联系方式为什么推荐升级至Excel高级查询工具Pro版v3.0? 突破传统Excel筛选局限,这不仅是一款增强型查询插件,更是一个嵌入浏览器的轻量级本地数据库系统——无需联网、不依赖Office,开箱即用。跨平台无…...

PTA 习题9-3 平面向量加法

本题要求编写程序,计算两个二维平面向量的和向量。输入格式:输入在一行中按照“x1​ y1​ x2​ y2​”的格式给出两个二维平面向量v1​(x1​,y1​)和v2​(x2​,y2​)的分量。输出格式:在一行中按照(x, y)的格式输出和向量,坐标输出小数点后一位&#xff…...

生产环境部署Spring boot时优化启动速度和内存的技巧

核心思路是减少类加载、精简依赖、优化JVM。一、 提升启动速度惰性初始化在 application.yml或启动命令中开启,让 Bean 只在首次使用时创建,大幅缩短启动时间:spring:main:lazy-initialization: true注意:可能隐藏依赖问题&#x…...

ADRC自抗扰控制器的Simulink仿真之旅:S函数构建ESO与TD模块

ADRC自抗扰控制器的simulink仿真,ESO和TD等模块使用S函数开发最近在研究控制算法这块,ADRC(自抗扰控制器)着实引起了我的兴趣。今天就来跟大家分享一下ADRC在Simulink中的仿真实现,特别是ESO(扩张状态观测器&#xff0…...

ServerBox安卓版SSH客户端推荐|高效远程服务器管理工具

温馨提示:文末有联系方式ServerBox安卓版:专为移动场景优化的SSH管理利器 ServerBox安卓版是一款面向Android平台深度优化的SSH终端工具,集安全性、稳定性与易用性于一体,让服务器管理不再局限于电脑端。核心功能全覆盖&#xff0…...

探索滑模控制的多元世界

滑模控制,SMC,滑模抖振削弱,模糊滑模,动态滑模,高阶滑模,反馈线性化滑模,滑模控制器参数寻优。在控制领域,滑模控制(SMC)就像一颗璀璨的明珠,以其…...

关于网络故障排查

ping和traceroute命令都是常用的工具ping命令主要用于检测网络联通性。通过发送ICMP(Internet Control Message Protocol)回显请求(echo request)报文并等待目标主机回应,可以确定目标主机是否在线以及网络传输的延迟和…...

2026 全球 AI 大模型实力榜:国产崛起与国际争锋的全新格局

2026 年,全球 AI 大模型行业迈入技术深水区与产业落地期双轨并行的新阶段,国际头部模型在超大参数、全模态能力上持续突破,国产模型则凭借本土化适配、垂直领域深耕、算力自主化实现弯道超车,不仅在核心性能上与国际顶尖模型差距持…...

WrenAI 深度解析:算法视角:wren-ai-service 如何利用 RAG 与 Metadata 提升 SQL 准确率?

在 Text-to-SQL 领域,尽管 GPT-4 等大语言模型(LLM)已经展现了惊人的代码生成能力,但在面对复杂的企业级数据库时,直接生成 SQL 的准确率往往不尽如人意。核心难点不在于 SQL 语法,而在于**“语义鸿沟”**&…...

2.斐波那契数列的题解

##题目的分析首先他是关于一个数列,第一项为1,第二项为1,从第三项起为前两项的和1.输入#测试数据的组数n#输入n组测试数据(每组数据代表数列的第几项)2.输出#对应第n项的数字(这个数字是前两项数字的和&…...

基于NI Linux RT和Veristand的实时仿真探索

基于Ni linux RT和veristand的实时仿真在工程与科研领域,实时仿真扮演着至关重要的角色,它能帮助我们在实际系统搭建之前,对各种设计进行验证和优化。今天咱们就来聊聊基于NI Linux RT和Veristand的实时仿真。 NI Linux RT简介 NI Linux RT是…...

字节面试官怒怼:RAG只会检索?大模型意图识别实战(非常详细),从入门到精通,收藏这一篇就够了!

直到上周一个学员面试的经历让我觉得必须补上这篇了:Query 理解与路由。 面试官问他:“用户在你们系统里输入’帮我算一下 A 款保险的理赔金额’,你的系统怎么处理的?” 他说:“先做 Embedding,然后去向量…...

【基于GasTurb的不同构型发动机性能对比】 GasTurb软件 1、涡桨、涡扇发动机等构型

【基于GasTurb的不同构型发动机性能对比】 GasTurb软件 1、涡桨、涡扇发动机等构型 2、在一样的推力需求下对比NOx排放差异 3、在不同的delta_T和高度下对比性能差异在航空发动机设计领域,GasTurb软件就像机械工程师的瑞士军刀。今天咱们拿它来折腾点有意思的——把…...

玩转T-Mats库:航空发动机气路故障仿真那些事儿

T-Mats库 涡扇发动机气路故障 数据 仿真模型】 1、包含部件流量、效率及压比故障在内的13类故障植入,故障程序和组合可自定义;航空发动机,典型气路故障仿真; 2、基于软阈值去噪处理后的信号序列提取了真实的运行扰动; 3、输出数据符合CMAPASS的排列要求。…...

电导增量法INC仿真模型,作为目前实际光伏发电系统中最常用的mppt算法,可以用于学习研究

电导增量法INC仿真模型,作为目前实际光伏发电系统中最常用的mppt算法,可以用于学习研究,才用了输出参考电压的方式来进行pwm调制。电导增量法的仿真模型在光伏圈子里都快被玩出花了,但说实话这算法确实稳得一批。今天咱们直接撸代…...

基于企鹅优化算法的机器人轨迹规划(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

手把手玩转变压器辐射传热仿真】今天带大家用COMSOL做个会“发热发光“的变压器模型,全程保姆级操作演示,连参数设置时容易手滑的地方都标出来了

有限元仿真模型二:视频教程仿真模型-基于comsol有限元的变压器辐射传热数值分析 1、分析变压器内外辐射传热机理,利用传热方程建立辐射传热数值计算模型 2、提供详细的讲解指导,带你实现从零到有,超级适合新手小白学习&#xff01…...

2026年春日活动海报复盘:如何快速敲定桃树主题视觉方案

作为一名社群运营,我经常需要为各种小型活动快速制作宣传物料。上周三,我接到了一个紧急任务:为周末的“社区踏春赏桃”活动设计一张宣传海报,要求周四上午就要发到业主群和朋友圈里预热。时间紧,任务急,而…...

Java 编程中的运算符探寻

Java 编程中的运算符探寻 🚀 Java 运算符是表达式计算的核心,掌握它们能让你写出高效、清晰的代码,避免优先级陷阱。本文从基础到进阶,带你全面探寻 Java 运算符(基于 Java 21/23 最新特性,2026 年仍适用&…...