PowerShell教程。PowerShell脚本的基础知识

2,177 阅读8分钟
  • 帐户信息

    TechRepublic close modal

    与你的朋友分享

    PowerShell教程。PowerShell脚本的基础知识

    您的电子邮件已被发送

[

Image of Scott Matteson

](www.techrepublic.com/meet-the-te…)

作者: Scott Matteson in 软件

在 2022年5月12日,太平洋时间上午9:30

PowerShell教程。PowerShell脚本的基础知识

PowerShell可以为你的Windows管理任务节省大量时间,但要有效地使用它,你需要了解它的工作原理。这里有一个Windows PowerShell脚本基础知识的速成班,让你开始学习。

powershell.jpg

插图。Lisa Hornung

Microsoft PowerShell,一般被称为Windows PowerShell,提供了一种方便的方式来自动处理各种杂事,无论你是在Windows服务器还是Windows工作站上工作。

系统管理员最好学习这种脚本语言,将其作为自动化任务--特别是重复性任务--的技能,并开发高级管理任务,以帮助减轻他们的工作量,并通过可预测的、成熟的命令执行操作。这些命令可以在本地系统或使用PowerShell远程功能的远程系统上运行,例如,对多个系统的Windows注册表进行更新。

看到了。 功能比较。时间跟踪软件和系统 (TechRepublic Premium)

更多关于软件

PowerShell并不是像Visual Studio Code(又称VS Code)那样的编程语言,而是一种脚本语言。PowerShell变量、cmdlet、模块和提供者是基础,构成了强大的PowerShell工具,帮助完成工作。

  • 变量是一个识别特定值的术语,便于参考和重复使用。
  • cmdlet是一个内置的PowerShell命令(Get命令cmdlet是最常见的一个,有多种用途,如检索现有设置或通过get-help cmdlet寻求帮助)。
  • 模块是一个包含多个对象的包,如cmdlet、变量等。
  • 提供者是一个.NET程序,它提供对信息的访问,如注册表、别名、函数、变量、文件系统和整个操作系统环境。

Windows PowerShell只在Windows操作系统上运行,而PowerShell Core是一个高级版本,能够以Visual Studio Code的方式在Windows、Mac和Linux操作系统上运行。

这里是一个Windows PowerShell脚本教程,旨在作为初学者的指南,说明脚本的基本知识,以帮助初学者开始使用现有的Windows PowerShell脚本或PowerShell cmdlets或建立新的脚本。

你可以从开始菜单的Windows PowerShell文件夹下启动Windows PowerShell,以便为自己使用这个PowerShell教程指明方向。要使用的两个程序是Windows PowerShell和Windows PowerShell ISE(集成脚本环境)。第一个可执行程序是命令提示界面,第二个是基于GUI的界面,显示如下。

我更喜欢使用Windows PowerShell ISE来编写PowerShell脚本,因为它提供了一个PowerShell控制台窗口,允许命令提示功能,同时还有一个方便的工具栏功能区和右边列出的命令参考,你可以点击它来插入PowerShell命令以及了解它们的更多信息。

请注意,默认的可执行文件是64位的,但是为了向后兼容的目的,可以在这个文件夹中找到每个人的32位PowerShell版本。

1.PS1文件

PowerShell的语法对于新手来说可能有点令人生畏,所以让我们从脚本的基础知识开始,它也被称为PS1文件。一个Windows PowerShell脚本实际上不过是一个简单的文本文件,可以在Windows PowerShell或Windows PowerShell ISE中运行。PowerShell脚本语言的操作方式是执行一系列的PowerShell命令(或单个命令),每个命令出现在单独的一行。为了使文本文件被当作PowerShell脚本,其文件名需要以.PS1结尾,以暗示PowerShell扩展名。

最简单、最基本的PowerShell例子是一个名为Datecheck.ps1的文件,它包含以下条目。

Get-Date

运行这个文件将为你提供与下面类似的输出。

Tuesday, May 10, 2022 3:20:04 pm

2.执行权限

为了防止恶意脚本的执行,PowerShell执行了一个执行策略。默认情况下,执行策略被设置为受限,这意味着PowerShell脚本将不会运行。你可以通过使用以下cmdlet来确定当前的执行策略。

Get-ExecutionPolicy

你可以使用的执行策略有。

  • Restricted-脚本不会运行。
  • RemoteSigned-本地创建的脚本会运行,但从互联网下载的脚本不会运行(除非它们是由受信任的发布者数字签名)。
  • 所有签名的脚本只有在经过受信任的发布者签名后才会运行。
  • 不受限制的脚本会运行,不管它们来自哪里,也不管它们是否被签名。

你可以通过使用以下cmdlet来设置PowerShell的执行策略。

Set-ExecutionPolicy <policy name>

注意:在PowerShell命令提示符下输入命令时,你可以输入部分命令,然后点击Tab来自动填充其余部分(或者显示与你输入的内容相匹配的多个选择)。例如,输入Set-Ex并按Tab键将自动填入整个Set-ExecutionPolicy命令,为你节省一些时间。

3.运行一个脚本

多年来,如果你想从命令行中运行一个可执行文件,做法是导航到该文件的路径,然后输入可执行文件的名称。然而,这种古老的方法对PowerShell脚本不起作用。

如果你想执行一个PowerShell脚本,你通常要在输入文件名的同时输入全路径。例如,要运行一个名为SCRIPT.PS1的脚本,你可以输入

C:\Scripts\Script.ps1

最大的例外是,如果包含脚本的文件夹在你的系统路径中,你可以通过简单地输入其名称来执行脚本。如果你已经在包含脚本的文件夹中,你也可以使用一个快捷方式。在这种情况下,你可以输入.\和脚本的名称,而不是输入脚本的完整路径。比如说,你可以输入

.\Script.ps1

4.流水线

Pipelining是指将一个命令的输出输入到另一个命令中。这使得第二条命令能够对它所收到的输入采取行动。要对两个命令(或cmdlet)进行流水作业,只需用管道符号(|)将它们分开。

为了帮助你理解管道的工作原理,想象一下,你想创建一个在服务器上运行的进程列表,并按进程ID号对该列表进行排序。你可以通过使用Get-Process cmdlet获得一个进程列表,但该列表不会被排序。然而,如果你将cmdlet的输出编入Sort-Object ID命令,该列表将被排序。使用的命令串看起来像这样。

Get-Process | Sort-Object ID

5.变量

尽管你可以使用管道将一个命令的输出输入到另一个命令中,但有时仅靠管道并不能完成工作。当你用管道将一个命令的输出输入另一个命令时,该输出会被立即使用。偶尔,你可能需要将输出存储一段时间,以便以后使用(或重复使用)。这就是PowerShell变量可以发挥作用的地方。

我们很容易把变量看成是一个存储值的仓库,但在PowerShell中,变量可以存储一个命令的全部输出。例如,假设你想把服务器上运行的进程列表存储为一个变量。要做到这一点,你可以使用这行代码。

$a = Get-Process

这里,该变量被命名为a。如果你想使用这个变量,只需调用它的名字。例如,输入a。如果你想使用这个变量,只需调用它的名字。例如,输入*a*就可以在屏幕上打印出该变量的内容。

你可以将一个变量分配给已经管道化的多个命令的最终输出。只需用圆括号将这些命令包围起来。例如,要按进程ID对正在运行的进程进行排序,然后将输出结果分配给一个变量,可以使用这个命令。

$a = (Get-Process | Sort-Object ID)

运行 "echo $a "后,将执行你分配给变量的命令。

6.6.@符号

通过使用@符号,你可以把一个列表的内容变成一个数组。例如,下面这行代码,它创建了一个名为$Procs的变量,其中包含多行文本(一个数组)。

$procs = @{name="explorer","svchost"}

你也可以在使用该变量时使用@符号,以确保它被当作一个数组而不是一个单一的值。例如,下面这行代码将针对我刚才定义的变量运行Get-Process cmdlet。这样做,Windows将显示Windows Explorer和Svchost使用的所有进程。请注意变量名称前面使用的是@符号,而不是我们通常看到的美元符号。

Get-Process @procs

7.分割

分割操作符根据你指定的字符来分割一个文本字符串。例如,假设你想把一个句子分割成一个由句子中每个单词组成的数组。你可以通过使用类似这样的命令来做到这一点。

"This is a test" -split " "

结果会是这样的。

a

测试

8.连接

正如split可以将一个文本字符串分割成多个片段一样,join操作符可以将多个文本块合并成一个。例如,这一行将创建一个由我的名字和姓氏组成的文本串。

"Scott","Matteson" -join " "

命令末尾引号之间的空格告诉Windows在这两个文本字符串之间插入一个空格。

9.断点

运行一个新创建的PowerShell脚本,如果该脚本包含bug,可能会产生意想不到的后果。一种保护自己的方法是在脚本的战略位置插入断点。这样一来,你就可以在处理整个脚本之前,确保该脚本是按预期工作的。

插入断点的最简单方法是按行号插入。例如,要在脚本的第10行插入一个断点,你可以使用这样的命令。

Set-PSBreakpoint -Script C:\Scripts\Script.ps1 -Line 10

你也可以将断点绑定到一个变量上。因此,如果你想让你的脚本在a$的内容发生变化时中断,你可以使用类似这样的命令。

Set-PSBreakpoint -Script C:\scripts\Script.ps1 -variables a

注意,我没有在变量名后面加上美元符号。

你可以在PSBreakpoint中使用一些动词,包括Get, Enable, Disable和Remove。

10.步骤

在调试一个脚本时,有时可能需要逐行运行该脚本。为此,你可以使用PowerShell ISE中的Stepping过程,使脚本在每一行之后都暂停,而不管是否存在断点。利用下表中列出的功能。

图片。微软

微软周报

通过阅读这些Windows和Office技巧、窍门和小抄,成为贵公司的微软内部人士。

周一和周三送达

今天就注册

斯科特-马特森

发布日期:2012年5月12日 May 12, 2022, 9:30 AM PDT Modified: May 12, 2022, 10:43 AM PDT 查看更多软件

另请参阅

Top cloud backup servces lead image.

图片。安迪-沃尔伯

软件

2022年最佳云备份服务和解决方案

这11个云到云的解决方案备份了你的组织的数据,所以你会在删除、恶意软件或中断的情况下得到保障。现在就来比较一下最好的在线云备份服务。

安迪-沃伯

发表于 April 11, 2022, 4:58 AM PDT Modified: April 11, 2022, 12:40 PM PDT Read More See more Software