Windows PowerShell(以下简称 PowerShell)是微软专门为 Windows 系统管理员设计的命令行壳(Shell)程序。PowerShell 不再像一般的命令行程序接受脚本并返回结果,基于 .NET Framework 的设计让管理员可以在脚本中使用对象并以编程的方式来改变环境。
本场Chat首先会带领大家零基础入门 PowerShell,然后针对日常开发、运维场景介绍 PowerShell 命令,提供可操作的命令及参数组合,方便日常使用。最后将通过一些简单示例演示通过 PowerShell 一键部署环境等。
本场 Chat 您将学到如下内容:
- PowerShell 环境;
- PowerShell 文件操作;
- PowerShell 网络操作;
- PowerShell 程序安装;
- PowerShell 操作注册表;
- PowerShell 控制权限;
- PowerShell 配置 IIS;
- PowerShell 注册 Windows 定时任务;
- PowerShell 注册 Windows 服务;
- PowerShell 的无限可能性;
- 演示:PowerShell 一键部署开源 CMS 环境。
概述
近年来IT行业发展迅速,竞争激烈,软件项目周期越来越短,而项目的规模和复杂度却直线上升。无论是开发运维都充满挑战,软件团队开始采用敏捷、DevOps 等手段提高生产效率,个人方面也开始实施量化和时间管理,期待整体水平的提高。
DevOps 时代,运维与开发一样开始讲求统一、一致、持续、同构等特性,也同样需要被量化和管理。如同软件编程的领域语言,软件设计出现了 UML,我们也期待有工具能在一致性层面解决运维问题。
为什么是 PowerShell?
PowerShell 是微软命令行外壳(Shell)程序和脚本编程环境,因结合了 .NET CLI(公共语言接口)的设计,就拥有了类编程语言的部分能力,如面向对象概念中的类、方法和变量作用域,可以采用面向对象方式来编写脚本。另外PowerShell吸收了近年来流行的模块化设计和包管理的理念,提供编程模型可供第三方软件提供商开发可导入模块,如 MS SQL Server、Office、Azure、Amazon 等都根据自己的软件产品特点,开发了基于 PowerShell 支持的模块,方便了日常开发运维,为自动化提供了丰富的工具。
PowerShell 简介
PowerShell 命令称为 Cmdlet(Command-let),大致为以下结构:
命令 -参数1 参数值1 -参数2 参数值2 ...|管道命令1 ...|管道命令2 ...|...
其组件主要包括:
- 命令(Cmdlet)
PowerShell 的命令一般是动名词,如 Remove-Item
, Start-Process
等,功能从字面显而易见。
- 参数(Parameter)
参数包含两部分:参数名和参数值,参数名代表参数的功能,同时约束了参数值的类型。PowerShell 的参数值类型非常丰富,可以但不限于以下类型:
文本——简单的字符串类型,如路径、名称、ID等
数组——基本类型的数组
列表——这里指无指定类型要求的参数列表,出现的比较少
管道(Pipe)
|
符号在命令行中代表管道,管道的意思是 |
前面的命令行表达式返回值作为 |
后命令行表达式的输入参数。
PowerShell 运行环境
在 Windows 环境下,可直接在命令行下输入 PowerShell 进入命令行(脚本运行)环境,提示符左边会出现 PS
字样。Mac 环境下可通过安装 PowerShell app 然后点击图标进入。
与 Windows 命令行的命令执行和批处理方式类似,PowerShell 即支持直接运行命令,也执行通过脚本(.ps1)文件编写并于命令行中调用。除此以外部分第三方软件中也支持采用 PowerShell 实现部署及运维操作,我们称之为代码块(Script Block)方式,以下是各种模式的使用场景:
- 直接执行的 PowerShell 控制台命令 - 人工部署、人工运维
- 命令行脚本(.ps1 文件)
- 无参数/有参数 - 自动化部署、自动化运维
- 控制台交互 - 半自动化运维
- 第三方软件中配置的代码块(如Octopus) - 自动化部署
启程:确认环境&获得帮助
现在我们开始学习 PowerShell,本教程特别适合零基础学员,所有的语句都可随手尝试。不过我要打破一下常规,第一个命令不是输出 Hello,World!
&#x