当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 面向初学者的 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。您将看到如下所示的屏幕:

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

检查执行策略

默认情况下,出于安全原因,PowerShell 限制脚本的运行。您可以通过运行 Get-ExecutionPolicy 命令来检查策略的设置:

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

您将获得以下值之一:

  • 受限— 不得运行任何 PowerShell 脚本。这是默认设置。
  • AllSigned - 您可以运行由受信任的开发人员签名的 PowerShell 脚本。
  • 远程签名 - 您可以运行自己的脚本或由受信任的开发人员签名的脚本。
  • 无限制——您可以运行任何您想要的脚本。

要更改执行策略设置,请使用 Set-ExecutionPolicy cmdlet:

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

安装模块和包

可以使用 PowerShell 库公共存储库或其他来源中的其他模块和包来扩展 Windows PowerShell。

您可以使用 Install-Module cmdlet 直接从 PowerShell 库安装模块。然后,您可以像内置 PowerShell 命令一样使用模块中定义的 cmdlet 和函数。

最常用的模块包括:

  • 活动目录
  • 微软交换服务器
  • Azure 活动目录
  • 办公室 365 (M365)
  • SQL服务器
  • SharePoint服务器
  • 互联网信息服务

要获得完整列表,请运行以下 cmdlet:

Get-Module -ListAvailable

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

PowerShell cmdlet

PowerShell 包含各种用于常见管理任务的 cmdlet(发音为“command-let”),例如管理进程、服务、文件和用户。每个都执行单一功能,但它们可以在 PowerShell 脚本中组合。

Cmdlet 具有动词-名词结构,其中动词表示要执行的操作,名词指定操作的目标,例如 Get-HelpSet-Item启动服务停止进程。其他关键动词包括Out,用于输出某些内容(例如文件),以及New,用于创建某些内容(“new”不是动词,当然,但它的功能是一体的)。

Cmdlet 通常会生成对象作为输出,以便轻松操作以及与其他 cmdlet 和脚本集成。

PowerShell cmdlet 示例

  • Get-Process:获取系统正在运行的进程的信息。

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

  • Get-Service:检索系统上服务的状态。

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

  • Get-ChildItem:检索目录中的文件和文件夹列表。

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

Cmdlet 别名

许多 cmdlet 都有一个或多个别名,它们是其名称的缩写形式。例如,以下两个命令执行相同的操作:

Start-Process notepad

start notepad

同样,您可以使用以下任一命令来停止记事本进程:

Stop-Process -Name notepad

spps -Name notepad

要查看所有别名,请运行 Get-Alias cmdlet:

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

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。
  • 布尔值:布尔值通常用于条件表达式和比较。唯一可能的值为truefalse
  • 哈希表:哈希表是键值对的集合。哈希表中的每个键都必须是唯一的。哈希表通常用于使用命名键来存储和检索数据。
  • 数组:数组是相同数据类型的有序和索引元素的集合,例如一组名称或整数。在 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

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

您可以通过为索引分配新值来修改数组的元素:

$fruits = ("apple", "banana", "orange")

$fruits[1] = "grape"

Write-Host $fruits[1] # Output: grape

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

变量

变量用于在 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

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

您可以使用多个管道。例如,这里第一个命令获取所有服务,第二个命令仅获取正在运行的服务,第三个命令将输出限制为仅显示它们的显示名称:

Get-Service | WHERE {$_.status -eq "Running"} | SELECT displayname

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

寻求帮助

您可以使用 Get-Help 查看有关任何 cmdlet 的详细信息:

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

要获取 cmdlet 的示例,请添加 -Examples 参数:

Get-Help Get-Process -Examples

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

一些常用的 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

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

PowerShell 脚本编写

PowerShell 脚本编写是使用 PowerShell 脚本语言自动执行任务、管理系统和执行各种操作的强大方法。

PowerShell 集成脚本环境 (ISE)

内置的集成脚本环境支持在图形用户界面中编写 PowerShell 脚本。它提供了一组强大的功能,用于创建、编辑、调试和执行 PowerShell 脚本,包括多行编辑、制表符完成、语法着色、选择性执行和上下文相关帮助。

您可以在 Windows PowerShell 控制台中执行的许多相同操作也可以在菜单项和键盘快捷键中找到。例如,在集成脚本环境中调试脚本时,可以右键单击编辑窗格中的一行代码来设置断点。无论您是初学者还是经验丰富的 PowerShell 用户,PowerShell ISE 都可以简化您的工作流程并提高您的工作效率。

要启动 PowerShell ISE,请在“开始”菜单中输入 powershell ise

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

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."

}

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

这是另一个简单的 PowerShell 脚本;它提示用户输入他们的名字,然后向他们打招呼:

# Prompt the user for their name

$name = Read-Host "Enter your name"

# Greet the user

Write-Host "Hello, $name! Welcome to PowerShell scripting."

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

向脚本添加注释

在脚本中留下评论将帮助您和您的同事更好地了解他们的工作。单行注释以井号 (#) 开头,块注释以“”结尾。

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

方括号、圆括号和大括号

在 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

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

循环

PowerShell 脚本中使用循环来多次重复一段代码。以下是最常见的循环类型:

  • For循环:用于根据指定的因素多次执行代码块。下面是一个将执行 write 语句 5 次的示例:
for ($i = 1; $i -le 5; $i++) {

Write-Host "Iteration $i"

}

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

  • ForEach 循环: 迭代集合中的元素(例如数组或一组对象),并为每个元素执行代码。这是一个例子:
$colors = "Red", "Green", "Blue"

foreach ($color in $colors) {

 Write-Host "Color: $color"

}

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

  • While循环:只要满足特定条件就执行代码块。下面是一个例子。
$i = 1

while ($i -le 5) {

 Write-Host "Iteration $i"

 $i++

}

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

  • Do-While 循环: 与“while”循环类似,但保证在检查条件之前至少执行一次代码块。这是一个例子:
$i = 1

do {

 Write-Host "Iteration $i"

 $i++

} while ($i -le 5)

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

状况

条件用于控制 PowerShell 脚本的流程。以下是 PowerShell 中的一些条件语句:

  • If 语句:当(且仅当)指定条件为真时才执行代码。这是一个例子:
$num = 10

if ($num -gt 5) {

 Write-Host "The number is greater than 5"

}

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

  • 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"

}

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

  • 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"

}

[玩转系统] 面向初学者的 Windows PowerShell 脚本编写教程

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 页面,其中包含可靠的入门课程。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯