[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程
作者:精品下载站 日期:2024-12-14 05:55:53 浏览:14 分类:玩电脑
面向初学者的 Windows PowerShell 脚本编写教程
介绍
Windows PowerShell 是一种用于任务自动化和配置管理的工具,它将命令行 shell 与脚本语言相结合。 IT 专业人员依靠 PowerShell 来:
- 自动执行常见任务
- 管理远程机器
- 在应用程序之间共享数据
- 将基础设施管理为代码
即使学习一些基本的 Windows PowerShell 命令集和核心脚本功能也可以帮助您实现显着的自动化。为了提供帮助,本 PowerShell 教程涵盖了适合初学者的 PowerShell 脚本基础知识。
注意:一旦您了解了一些 PowerShell 基础知识,就可以轻松开始运行命令 - 但它们可能会对 IT 生态系统的稳定性和安全性产生深远影响。当您开始使用 PowerShell 时,请务必仅在沙盒环境中进行试验。
设置您的 PowerShell 环境
在运行 PowerShell 脚本之前,您需要设置 Windows PowerShell 环境。以下是涉及的步骤。
安装PowerShell
大多数 Windows 操作系统上都预装了 PowerShell。但是,如果您需要安装较新的版本,可以从 Microsoft 网站下载或使用 Windows 包管理器 (Winget) 或 Chocolatey 包管理器。
运行PowerShell
要启动 PowerShell 命令行,请在 Windows“开始”菜单中输入 powershell.exe。您将看到如下所示的屏幕:
检查执行策略
默认情况下,出于安全原因,PowerShell 限制脚本的运行。您可以通过运行 Get-ExecutionPolicy 命令来检查策略的设置:
您将获得以下值之一:
- 受限— 不得运行任何 PowerShell 脚本。这是默认设置。
- AllSigned - 您可以运行由受信任的开发人员签名的 PowerShell 脚本。
- 远程签名 - 您可以运行自己的脚本或由受信任的开发人员签名的脚本。
- 无限制——您可以运行任何您想要的脚本。
要更改执行策略设置,请使用 Set-ExecutionPolicy cmdlet:
安装模块和包
可以使用 PowerShell 库公共存储库或其他来源中的其他模块和包来扩展 Windows PowerShell。
您可以使用 Install-Module cmdlet 直接从 PowerShell 库安装模块。然后,您可以像内置 PowerShell 命令一样使用模块中定义的 cmdlet 和函数。
最常用的模块包括:
- 活动目录
- 微软交换服务器
- Azure 活动目录
- 办公室 365 (M365)
- SQL服务器
- SharePoint服务器
- 互联网信息服务
要获得完整列表,请运行以下 cmdlet:
Get-Module -ListAvailable
PowerShell cmdlet
PowerShell 包含各种用于常见管理任务的 cmdlet(发音为“command-let”),例如管理进程、服务、文件和用户。每个都执行单一功能,但它们可以在 PowerShell 脚本中组合。
Cmdlet 具有动词-名词结构,其中动词表示要执行的操作,名词指定操作的目标,例如 Get-Help、Set-Item 、启动服务或停止进程。其他关键动词包括Out,用于输出某些内容(例如文件),以及New,用于创建某些内容(“new”不是动词,当然,但它的功能是一体的)。
Cmdlet 通常会生成对象作为输出,以便轻松操作以及与其他 cmdlet 和脚本集成。
PowerShell cmdlet 示例
- Get-Process:获取系统正在运行的进程的信息。
- Get-Service:检索系统上服务的状态。
- Get-ChildItem:检索目录中的文件和文件夹列表。
Cmdlet 别名
许多 cmdlet 都有一个或多个别名,它们是其名称的缩写形式。例如,以下两个命令执行相同的操作:
Start-Process notepad
start notepad
同样,您可以使用以下任一命令来停止记事本进程:
Stop-Process -Name notepad
spps -Name notepad
要查看所有别名,请运行 Get-Alias cmdlet:
Cmdlet 参数和参数
Cmdlet 接受控制其行为的参数。使用连字符后跟参数名称来指定参数,例如 -Name 或 -Path。
某些参数接受参数,这些参数是特定数据类型的值(数据类型将在下面解释)。
例如,以下是 Get-Process cmdlet 的语法,其参数为橙色,参数为绿色:
Get-Process
[-Name <String[]>]
[-ComputerName <String[]>]
[-FileVersionInfo]
[-Module]
[-InputObject <Process[]>]
[-IncludeUserName] [-ExcludeUserName]
[-Credential <PSCredential>]
[-Id <Int32[]>]
[-IncludeTotalProcessorTime]
[-WhatIf]
[-Confirm]
数据类型
以下是 PowerShell 中的一些常见数据类型:
- 字符串:字符串是用单引号 (‘ ‘) 或双引号 (” “) 括起来的字符序列。字符串可以包含字母、数字、符号和空格。
- 整数:整数是没有任何小数或小数部分的整数。
- 双精度型:双精度型是具有小数精度的浮点数,例如 3.14 或 -0.5。
- 布尔值:布尔值通常用于条件表达式和比较。唯一可能的值为true 和false。
- 哈希表:哈希表是键值对的集合。哈希表中的每个键都必须是唯一的。哈希表通常用于使用命名键来存储和检索数据。
- 数组:数组是相同数据类型的有序和索引元素的集合,例如一组名称或整数。在 PowerShell 中,您可以通过将括号内的逗号分隔值列表分配给变量来创建数组,如下所示:
$fruits = ("apple", "banana", "orange")
要访问数组的元素,可以使用索引运算符 [n]。数组中第一个元素的索引是 0。下面是一个示例:
$fruits = ("apple", "banana", "orange")
Write-Host $fruits[0] # Output from first element: apple
Write-Host $fruits[1] # Output from second element: banana
Write-Host $fruits[2] # Output from third element: orange
您可以通过为索引分配新值来修改数组的元素:
$fruits = ("apple", "banana", "orange")
$fruits[1] = "grape"
Write-Host $fruits[1] # Output: grape
变量
变量用于在 PowerShell 中存储和操作数据。变量是保存值的命名容器,例如字符串、数字、数组或对象。 PowerShell 变量是松散类型的,这意味着您在为变量赋值时无需声明其数据类型。数据类型是根据分配的值动态确定的。
PowerShell 中的变量名称由 $ 符号后跟变量名称组成。变量名称不区分大小写,因此,例如,“$MyVariable” 和 “$myvariable” 引用同一变量。
每个变量都有一个范围,决定了可以访问的位置:全局、脚本、函数或本地。默认情况下,变量在创建它们的范围内是本地的。
要将值分配给变量,请使用 = 运算符,如以下两个示例所示:
$myVariable = "Hello, World!"
$number = 42
管道
可以使用管道运算符 | 连接 cmdlet,该运算符将一个 cmdlet 的输出传递到下一个 cmdlet。这使得能够创建一行命令来执行复杂的操作。
例如,此命令使用管道将指定字符串输出到文件:
"Hello, World!" | Out-File C:pstest.txt
以下示例获取所有服务并按状态对它们进行排序:
Get-Service | Sort-Object -property Status
您可以使用多个管道。例如,这里第一个命令获取所有服务,第二个命令仅获取正在运行的服务,第三个命令将输出限制为仅显示它们的显示名称:
Get-Service | WHERE {$_.status -eq "Running"} | SELECT displayname
寻求帮助
您可以使用 Get-Help 查看有关任何 cmdlet 的详细信息:
要获取 cmdlet 的示例,请添加 -Examples 参数:
Get-Help Get-Process -Examples
一些常用的 cmdlet
处理文件和文件夹
您可以使用 PowerShell 简化创建、复制、移动、删除和修改文件和文件夹属性等任务。
通过使用管道、条件逻辑和循环,您可以执行更复杂的文件和文件夹操作任务。例如,您可以使用 Get-ChildItem cmdlet 检索目录中的文件列表,使用 Where-Object cmdlet 筛选结果,然后使用 >Remove-Item 删除选定的文件。
以下是一些用于处理文件和文件夹的常见 PowerShell cmdlet:
- Get-ChildItem:检索指定目录中的文件和文件夹列表
- 新项目:创建新文件和文件夹
- 复制项目:将文件和文件夹从一个位置复制到另一个位置
- 移动项目:将文件和文件夹从一个位置移动到另一个位置
- 删除项目:删除文件和文件夹
- Set-Item:修改文件和文件夹的属性。
- 测试路径:检查指定路径中是否存在文件或文件夹
- Get-Content:检索文件的内容并将其输出到控制台
- 设置内容:将内容写入文件,覆盖任何现有内容
使用日期和时间
以下是一些用于处理日期和时间的常见 PowerShell cmdlet。
- 获取日期:使用此 cmdlet 检索当前日期和时间。您还可以使用它将字符串转换为 DateTime 对象并根据特定模式格式化日期。
- Get-Date -Format:此 cmdlet 允许您以特定格式检索当前系统日期和时间。例如,您可以使用 Get-Date -Format ‘yyyy-mm-dd’ 来获取“YYYY-MM-DD”格式的日期。
- Set-Date:此 cmdlet 允许您设置系统日期和时间。
- New-TimeSpan:此 cmdlet 用于计算两个日期之间的时间跨度。它返回一个表示时间差的 Timespan 对象,可用于进一步计算或格式化。
以下是如何在 PowerShell 中使用日期和时间的一些示例。
要获取当前时间和日期:
$currentDateTime = Get-Date
要为过去的特定日期创建 DateTime 对象:
$customDate = [DateTime]::Parse("2023-11-10")
计算当前日期和过去日期之间的时间跨度并将其存储在变量 $timeDifference 中:
$timeDifference = New-TimeSpan -Start $currentDateTime -End $customDate
打印变量$timeDifference的值:
Write-host $timeDifference
PowerShell 脚本编写
PowerShell 脚本编写是使用 PowerShell 脚本语言自动执行任务、管理系统和执行各种操作的强大方法。
PowerShell 集成脚本环境 (ISE)
内置的集成脚本环境支持在图形用户界面中编写 PowerShell 脚本。它提供了一组强大的功能,用于创建、编辑、调试和执行 PowerShell 脚本,包括多行编辑、制表符完成、语法着色、选择性执行和上下文相关帮助。
您可以在 Windows PowerShell 控制台中执行的许多相同操作也可以在菜单项和键盘快捷键中找到。例如,在集成脚本环境中调试脚本时,可以右键单击编辑窗格中的一行代码来设置断点。无论您是初学者还是经验丰富的 PowerShell 用户,PowerShell ISE 都可以简化您的工作流程并提高您的工作效率。
要启动 PowerShell ISE,请在“开始”菜单中输入 powershell ise:
PowerShell ISE 的关键要素包括:
- 菜单栏:菜单栏提供文件、编辑、视图、工具、调试、附加组件和帮助的下拉菜单。
- 工具栏:菜单栏下方的工具栏提供执行复制、剪切、粘贴、运行脚本、运行选择和停止操作等操作的按钮。
- 脚本选项卡:在上面屏幕截图的工具栏下,您可以看到几个选项卡。每个都是用于编写和运行 PowerShell 脚本的工作区。当您将鼠标光标放在脚本选项卡上时,脚本文件的完全限定路径将显示在工具提示中。
- 状态栏:屏幕最底部的脚本选项卡下有一个状态栏,显示已运行的命令和脚本的完成状态以及任何错误消息。
- 命令窗格:PowerShell ISE 的右侧是一个列出所有可用命令的窗格。
- 文本大小滑块:右下角有一个滑块,可用于增大或减小屏幕上文本的大小。
示例脚本
下面是一个简单的 PowerShell 脚本示例,演示了如何定义变量、使用 if-else 语句以及在 PowerShell 控制台中打印消息。
# Define variables
$name = "Jennifer"
$age = 35
# Display a greeting based on the age
if ($age -ge 18) {
Write-Host "Hello, $name! You are an adult."
} else {
Write-Host "Hello, $name! You are a minor."
}
这是另一个简单的 PowerShell 脚本;它提示用户输入他们的名字,然后向他们打招呼:
# Prompt the user for their name
$name = Read-Host "Enter your name"
# Greet the user
Write-Host "Hello, $name! Welcome to PowerShell scripting."
向脚本添加注释
在脚本中留下评论将帮助您和您的同事更好地了解他们的工作。单行注释以井号 (#) 开头,块注释以“”结尾。
方括号、圆括号和大括号
在 PowerShell 中,分隔符有多种用途,包括定义数组、访问元素、对表达式进行分组和指定脚本块。以下是一些最常见的:
- 方括号: 方括号 ([]) 用于定义和访问数组的元素。
$fruits = @("apple", "banana", "orange")
Write-Host $fruits[0] # Output: apple
- 括号:括号在 PowerShell 中广泛使用,例如传递参数、括起多个指令集或解决歧义。当需要在命令中嵌套括号时,使用运算符 $()。
$result = $("The result is: " + (2 + 3))
Write-Host $result #Output: The result is: 5
- 大括号:大括号 ({}) 用于定义脚本块,这些脚本块用于循环和条件语句(如下所述)等控制结构,以及 ForEach-Object 等 cmdlet 和 Where-Object。 例如:
$numbers = @(1, 2, 3, 4, 5)
$filtered = $numbers | Where-Object { $_ -gt 3 }
Write-Host $filtered # Output: 4 5
循环
PowerShell 脚本中使用循环来多次重复一段代码。以下是最常见的循环类型:
- For循环:用于根据指定的因素多次执行代码块。下面是一个将执行 write 语句 5 次的示例:
for ($i = 1; $i -le 5; $i++) {
Write-Host "Iteration $i"
}
- ForEach 循环: 迭代集合中的元素(例如数组或一组对象),并为每个元素执行代码。这是一个例子:
$colors = "Red", "Green", "Blue"
foreach ($color in $colors) {
Write-Host "Color: $color"
}
- While循环:只要满足特定条件就执行代码块。下面是一个例子。
$i = 1
while ($i -le 5) {
Write-Host "Iteration $i"
$i++
}
- Do-While 循环: 与“while”循环类似,但保证在检查条件之前至少执行一次代码块。这是一个例子:
$i = 1
do {
Write-Host "Iteration $i"
$i++
} while ($i -le 5)
状况
条件用于控制 PowerShell 脚本的流程。以下是 PowerShell 中的一些条件语句:
- If 语句:当(且仅当)指定条件为真时才执行代码。这是一个例子:
$num = 10
if ($num -gt 5) {
Write-Host "The number is greater than 5"
}
- If-else 语句: 通过提供在条件不成立时执行的代码块来扩展“if”语句。这是一个例子:
$num = 3
if ($num -gt 5) {
Write-Host "The number is greater than 5"
}
else {
Write-Host "The number is not greater than 5"
}
- Else-if 语句: 允许指定按顺序检查的多个条件,而不是仅两个。这是一个例子:
$num = 5
if ($num -gt 5) {
Write-Host "The number is greater than 5"
}
elseif ($num -eq 5) {
Write-Host "The number is equal to 5"
}
else {
Write-Host "The number is less than 5"
}
PowerShell 脚本编写教程摘要
本教程涵盖了所有 PowerShell 基础知识,从如何安装和配置 PowerShell 到运行常用命令,再到编写更复杂的 PowerShell 脚本。请记住,如果您忘记了什么,您可以随时使用 Get-Help cmdlet!
其他资源
有用的 PowerShell 脚本
管理AD用户
- 列出 Windows 系统上的所有用户帐户
- 创建新的 Active Directory 用户
- 发现新的 AD 用户
- AD 组成员身份报告
- 查找禁用的 AD 用户
- 列出过期的 AD 用户帐户
- 查找锁定的 AD 用户帐户
- 收到有关密码过期的通知
- 在 Office 365 中将用户密码配置为永不过期
管理AD计算机
- 在 AD 中创建、删除、重命名、禁用和加入计算机
- 列出 Active Directory 中不活动的计算机
管理组和 OU
- 获取本地管理员组更改的通知
- 添加和删除 AD 组和组中的对象
- 管理 OU 及其对象
管理其他事情
- 监控事件日志
- 查询事件日志
- 在 Windows Server 2008 中转发事件日志
- 管理文件系统访问控制列表 (ACL)
- 简化文件管理
高级 PowerShell 脚本编写指南
- 了解何时使用 Windows PowerShell 以及何时使用命令提示符
- 系统管理员的主键盘快捷键
- 了解如何使用任务计划程序自动执行 PowerShell 脚本
- 了解有关使用变量和数组的更多信息
其他资源
- PowerShell 简介
微软常见问题解答
PowerShell 难学吗?
Microsoft PowerShell 入门非常简单,因为该语言很简单,并且您可以轻松获取有关任何 cmdlet 的信息。但了解您所连接的系统也很重要,这样您的脚本就不会导致严重的问题,例如系统停机或安全事件。
从哪里开始学习 PowerShell?
我们推荐初学者使用 Windows PowerShell 脚本编写教程。它涵盖了 PowerShell 脚本基础知识,包括如何运行 PowerShell 脚本和使用最常见的 PowerShell 命令。另一个很好的来源是 Microsoft 网站上的 PowerShell 页面,其中包含可靠的入门课程。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag