[
](www.techrepublic.com/meet-the-te…)
作者: Scott Matteson in 软件
在 2022年5月12日,太平洋时间上午9:30
PowerShell教程。PowerShell脚本的基础知识
PowerShell可以为你的Windows管理任务节省大量时间,但要有效地使用它,你需要了解它的工作原理。这里有一个Windows PowerShell脚本基础知识的速成班,让你开始学习。
插图。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*就可以在屏幕上打印出该变量的内容。
你可以将一个变量分配给已经管道化的多个命令的最终输出。只需用圆括号将这些命令包围起来。例如,要按进程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 查看更多软件
另请参阅
- Windows 11小抄。你需要知道的一切 (TechRepublic)
- 视觉特效:Windows PowerToys。骗局表 (TechRepublic)
- 最佳加密软件2022 (TechRepublic)
- EDR软件。为你的企业选择最佳EDR工具 (TechRepublic)
- 企业和终端用户的最佳软件 (TechRepublic on Flipboard)
图片。安迪-沃尔伯
软件
2022年最佳云备份服务和解决方案
这11个云到云的解决方案备份了你的组织的数据,所以你会在删除、恶意软件或中断的情况下得到保障。现在就来比较一下最好的在线云备份服务。
发表于 April 11, 2022, 4:58 AM PDT Modified: April 11, 2022, 12:40 PM PDT Read More See more Software