PowerShell (.ps1) 脚本是基于 Microsoft PowerShell 语言编写的文本文件,用于自动化任务、管理系统配置、执行命令行操作等。PowerShell 使用一种类似于命令行接口的命令和脚本语法,结合了.NET Framework的强大功能,支持对象导向编程概念。
PowerShell脚本文件采用.ps1
作为后缀的原因,相对直接而简单:
`PS`代表的是“PowerShell”的缩写,用以标识这是一个属于PowerShell环境的脚本文件。
数字`1`并不是指代“第一”,而是PowerShell的第一个主要发行版。当Microsoft首次推出PowerShell时,它是作为一种新的命令行和脚本语言环境来设计的,为了与可能存在的其他潜在扩展名相区别,并表明这是PowerShell特定版本支持的脚本格式,微软选择了在其产品名缩写后加上版本号,即`PS1`。
因此,.ps1
实际上是指“PowerShell version 1 script”。
虽然,后续的PowerShell版本中,脚本文件依然沿用了这个扩展名,即使现在PowerShell已经迭代到更高版本,但.ps1
这个约定俗成的扩展名一直保持不变。
一个基本的 PowerShell 脚本通常包含以下元素:
单行注释以 #
开始,直到行尾。
# 这是一个单行注释
PowerShell 命令与 cmdlet 名称遵循动词-名词规则,例如 `Get-ChildItem`、`Set-Location` 等。
Get-Process # 列出当前运行的进程
变量无需事先声明,直接赋值即可创建。
$myVariable = "Hello, World!"
`if`、`else` 和 `elseif` 用于条件判断。
if ($myVariable -eq "Hello, World!") {
Write-Host "The variable matches the string."
} else {
Write-Host "The variable does not match the string."
}
`foreach` 循环遍历集合或数组。
foreach ($item in $array) {
Write-Output $item
}
`for` 循环进行计数迭代。
for ($i = 1; $i -le 10; $i++) {
Write-Host $i
}
使用 {}
定义代码块。
function MyFunction {
param($input)
Write-Host "Processing $input..."
}
使用 |
将命令输出连接起来,实现数据流式处理。
Get-Service | Where-Object Status -eq 'Running'
定义函数用于封装逻辑。
function Get-SystemInfo {
Get-WmiObject Win32_OperatingSystem
}
Get-SystemInfo
脚本可以通过 $args
数组或者定义参数名接收外部传入的参数。
param(
[string]$ComputerName = "localhost",
[int]$PortNumber
)
Test-NetConnection -ComputerName $ComputerName -Port $PortNumber
为了更好地理解 PowerShell 脚本,可以从以下几个方面入手:
此外,当遇到不熟悉的命令或概念时,可以使用 `Get-Help` cmdlet 来查阅帮助文档,例如 `Get-Help Get-ChildItem`。
直接运行本地脚本文件(推荐!!!)
Restricted
,则可能需要改为 RemoteSigned
或 Unrestricted
):Get-ExecutionPolicy 2Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
// 注意:更改执行策略可能会有安全风险,请根据实际情况谨慎操作。
cd "C:\Path\To\Your\Script"
.\YourScript.ps1
或者,如果脚本不在当前目录,可以直接指定完整路径:
& "C:\Path\To\Your\Script\YourScript.ps1"
【注意】使用点号 (.
) 或 (&
) 符号,都是为了执行脚本。
更改默认关联以双击运行 .ps1 文件(不太推荐)
不管选择哪个方法,请始终确保您信任正在执行的脚本,因为 PowerShell 脚本具有很高的系统权限!!!。
原网址: 访问
创建于: 2024-12-03 18:40:56
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论