Geek学校:学习如何使用PowerShell自动化Windows

在这个版本的Geek学校,我们将帮助您了解强大的Windows PowerShell脚本语言,并且在IT环境中非常有用。

虽然本系列不是围绕考试构建的,但学习PowerShell是您作为网络​​管理员可以做的最重要的事情之一,所以如果你有一件事要学习来帮助你的IT生涯,这是它。 另外,这很有趣。

介绍

PowerShell是最强大的自动化工具,微软所提供的,其既是一个外壳脚本语言

请注意,本系列基于PowerShell 3,它随Windows 8和Server 2012一起提供。如果您运行的是Windows 7,请在继续之前下载PowerShell 3更新。

认识控制台和ISE

有两种方式与开箱即用的PowerShell交互,控制台和集成脚本环境(也称为ISE)。 ISE已从PowerShell 2附带的可怕版本中大大改进,可以通过按Win + R组合键打开一个运行框,然后键入powershell_ise并按回车打开。

image

正如你可以看到的ISE运动分裂视图,使您可以快速脚本,同时仍然能够看到ISE的下半部分的结果。 ISE的下半部分(其中打印了脚本的结果)也可以用作REPL提示符,就像命令提示符一样。 v3 ISE最终添加了对脚本窗格以及交互式控制台中的智能感知的支持。

image

image

或者,您可以使用PowerShell控制台与PowerShell进行交互,这是我将在大多数系列中使用的。 PowerShell控制台的行为非常类似于命令提示符 - 您只需输入命令,它会输出结果。 要打开Windows PowerShell控制台,再次按Win + R组合键打开一个运行框并键入powershell,然后按enter键。

image

REPL提示像这样是真棒的即时满足:你输入一个命令,你得到的结果。 虽然控制台不提供智能感知,但是它提供了一些称为标签完成的功能,其功能大致相同 - 只需开始输入命令,然后按Tab键即可循环浏览可能的匹配项。

image

image

使用帮助系统

在过去的PowerShell版本中,安装Windows时包括了帮助文件。 这是一个很好的解决方案,但大部分留给我们一个重大的问题。 当PowerShell帮助团队停止处理帮助文件时,PowerShell开发人员仍然忙于编码和进行更改。 这意味着当PowerShell发货时,帮助文件不正确,因为它们不包含对代码所做的更新更改。 为了解决这个问题,PowerShell 3没有帮助文件,包括可更新的帮助系统。 这意味着在您执行任何操作之前,您将需要下载最新的帮助文件。 你可以打开一个PowerShell控制台并运行:

更新帮助

image

image

恭喜您运行第一个PowerShell命令! 事实是,Update-Help命令有更多的选项,而不仅仅是运行它,并且看到它们,我们将要查看该命令的帮助。 要查看命令的帮助,只需将要帮助的命令的名称传递给Get-Help命令的Name参数,例如:

Get-Help - 名称更新 - 帮助

image

你可能想知道如何解释所有的文本,我的意思是为什么在语法部分有两个信息,为什么有这么多的括号在所有地方? 第一件事情:原因在语法部分下有两个信息块的原因是它们表示不同的方式来运行命令。 这些在技术上称为参数集,您只能一次使用一个(您不能混合不同集的参数)。 在上面的截图中,您可以看到顶部参数集具有SourcePath参数,而底部不具有。 原因是,如果您正在从已经下载了它们的网络上的另一台计算机更新帮助文件,您将使用顶部参数集(包含SourcePath的那个),而您不需要指定源路径,如果您只是想抓从Microsoft的最新文件。

要回答第二个问题,有一些语法帮助文件跟随,这里是:

  • 围绕参数名称及其类型的方括号表示它是一个可选参数,并且命令将正常工作,没有它。
  • 参数名称的方括号表示参数是位置参数。
  • 在尖括号中的一个参数的右边的东西告诉你参数期望的数据类型。

虽然你应该学会阅读帮助文件语法,如果你不确定一个特定的参数只是append -Full到你的get help命令的结尾,并向下滚动到参数部分,它将告诉你一点更多关于每个参数。

Get-Help - 名称更新 - 帮助 - 全

image

你需要知道的关于帮助系统的最后一件事是如何使用它来发现命令,这实际上是很容易的。 你看,PowerShell几乎在任何地方都接受通配符,所以使用它们和Get-Help命令可以让你轻松地发现命令。 例如,我正在寻找处理Windows服务的命令:

Get-Help -Name * service *

image

当然,所有这些信息可能不是蝙蝠的方便,但相信我,花时间和学习如何使用帮助系统。 它随时都会派上用场,甚至是多年来一直在做这件事的先进的脚手。

安全

这不会是一个适当的介绍,没有提到安全。 PowerShell团队最大的担心是PowerShell成为脚本小子的最新和最大的攻击点。 他们已经采取了一些安全措施,以确保这不会发生,所以让我们来看看他们。

最基本的保护形式来自于PS1文件扩展名(用于表示PowerShell脚本的扩展名)未注册到PowerShell主机,而实际上已使用记事本注册。 这意味着如果你双击一个文件,它将打开记事本,而不是运行。

其次,您不能通过键入脚本的名称从shell运行脚本,您必须指定脚本的完整路径。 因此,如果你想在C驱动器上运行一个脚本,你必须键入:

C:\ runme.ps1

或者如果您已经在C驱动器的根目录,您可以使用以下:

。\ runme.ps1

最后,PowerShell有一个名为执行策略的东西,它阻止你运行任何旧脚本。 事实上,默认情况下,您不能运行任何脚本,如果您希望允许运行它们,则需要更改您的执行策略。 有4个显着的执行策略:

  • 限制 :这是在PowerShell中的默认配置。 此设置表示无法运行脚本,无论其签名如何。 使用此设置可以在PowerShell中运行的唯一一件事是单独的命令。
  • 使用AllSigned:此设置确实允许脚本在PowerShell中运行。 脚本必须具有来自受信任发布者的关联数字签名。 在从受信任的发布者运行脚本之前,会有提示。
  • 下RemoteSigned:此设置允许运行脚本,但要求被从互联网上下载的脚本和配置文件具有可信发布一个相关的数字签名。 从本地计算机运行的脚本不需要签名。 在运行脚本之前没有提示。
  • 无限制 :允许未签名的脚本运行,包括从互联网上下载的所有脚本和配置文件。 这将包括来自Outlook和Messenger的文件。 这里的风险是运行没有任何签名或安全性的脚本。 我们重新开始,你永远不会使用这个设置。

要查看当前的执行策略设置为什么,请打开PowerShell控制台并键入:

Get-ExecutionPolicy

image

对于本课程和大多数其他情况,RemoteSigned策略是最好的,因此请使用以下内容更改策略。

注意:这需要从提升的PowerShell控制台完成。

Set-ExecutionPolicy RemoteSigned

image

这就是这一次的人,明天见到更多的PowerShell有趣。


免责声明:PowerShell命令的正确术语是一个cmdlet,从现在起,我们将使用这个正确的术语。 它只是觉得更适当的调用他们的命令为这个介绍。


如果您有任何疑问,您可以鸣叫我@taybgibb ,或者只是发表评论。

赞 (0)
分享到:更多 ()