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

[玩转系统] 使用 PowerShell 脚本实现自动化

作者:精品下载站 日期:2024-12-14 08:08:43 浏览:15 分类:玩电脑

使用 PowerShell 脚本实现自动化


[玩转系统] 使用 PowerShell 脚本实现自动化

在文章系列的第一部分“了解 Windows PowerShell”中,我们已经讨论了脚本的可能性。

脚本允许您在 PowerShell 中自动执行任务。不仅 Windows Server、Windows Workstations、Exchange、SQL 或 SharePoint 等 Microsoft 系统可以实现自动化。许多第三方供应商也依赖 PowerShell 来管理他们的服务器服务。 ScriptRunner 等工具进一步增强了给定的可能性:例如,通过 ScriptRunner Web 服务连接器,您可以使用第三方系统的 REST API 轻松实现自动化。

但在我们深入研究 PowerShell 自动化之前,我们需要一件事:PowerShell 脚本。下面,我们将更详细地介绍如何创建它们或在哪里找到它们,以及 PowerShell 中的脚本会出现哪些可能性。

下载完成的脚本

网上有很多基于PowerShell的脚本,并且有不同的用途。 Microsoft 在“IT 专业人员脚本资源”网页上提供了许多免费脚本,您可以下载、使用或添加到其中。确保脚本尽可能是最新的并且具有良好的评级。下载页面还显示了该脚本已发布的操作系统。下载时还会显示脚本的许可条件。

这是您需要了解的有关 PowerShell 脚本的信息

PowerShell 脚本可以对系统进行广泛的自定义。因此,在运行脚本之前,您应该查看它并确保它不会执行任何您不想要的操作。在 PowerShell 脚本中,除了 PowerShell 命令 (cmdlet) 之外,您还可以使用其他命令,例如命令提示符。第三方工具也可以在 PowerShell 脚本中使用。

好的 PowerShell 脚本应该经过数字签名,以便执行策略(请参阅本文的第一部分)不会阻止它们。在紧急情况下,您可以关闭PowerShell执行策略。这将导致未签名的脚本运行,但您的系统将不再受到保护。然而,执行政策并非完全保护。 ExecutionPolicy 可防止系统意外启动脚本。因此,ExecutionPolicy 并不是一个全面的安全功能。禁用该策略需要从管理上下文菜单启动 PowerShell(图 1)。

[玩转系统] 使用 PowerShell 脚本实现自动化

图 1:要调整 PowerShell 和执行策略,必须以管理员身份启动 PowerShell

使用以下命令关闭执行策略:

Set-ExecutionPolicy Unrestricted

我们已经在本系列的第一篇文章中讨论了各种选项。对于来自 Internet 的脚本,您应该确保它们来自可靠的来源。此外,脚本应包含有关要执行的操作的注释。在脚本的开头,应该包含有关脚本创建者、脚本用途以及用户应该了解哪些内容的信息(如图 2 所示)。

[玩转系统] 使用 PowerShell 脚本实现自动化

图 2:脚本应包含足够的信息,以便用户了解脚本启动时正在执行的操作。

一般来说,脚本中的注释可以表明脚本中将执行哪些操作以及用户是否需要编辑脚本中的某些内容。

启动脚本

要启动脚本,首先将其下载到计算机上的目录中。然后通过其 *.ps1 文件调用该脚本。许多脚本仍然需要不同的参数来启动。您应该在脚本的开头或在应该记录选项的帮助中了解这一点。如果您位于存储脚本的目录中,则必须在语法“.skript.ps1”之后启动脚本。

自己创建脚本

如果您想自己创建脚本,您应该使用合适的编辑器。例如,Windows PowerShell 集成脚本环境 (ISE)(它是 Windows 的一部分)、Microsoft Visual Studio Code、Microsoft 的开源编辑器或开源解决方案 Notepad++。

学习创建脚本

为了学习如何使用 PowerShell 脚本,不一定需要预订课程。 Internet 上有多个网站可以帮助您学习 PowerShell。 YouTube 视频还可以帮助您学习 PowerShell。众所周知的例子有:

  • Microsoft PowerShell 入门
  • ScriptRunner 的 YouTube 频道
  • PowerShell【Hyper-V用户等入门教程】
  • Windows PowerShell 初学者教程
  • Windows-Scripting.com

[玩转系统] 使用 PowerShell 脚本实现自动化

[玩转系统] 使用 PowerShell 脚本实现自动化

ISEStereoids - Windows PowerShell ISE 扩展

ISEStroids 使用 Windows PowerShell ISE 来编辑脚本,但对其进行了扩展。要使用它,您只需使用“Start-Steroids”加载扩展即可。它是一个 PowerShell 模块,而不是替代 PowerShell ISE 的附加应用程序。

Idera PowerShell Plus - 免费编辑器

Idera 的免费 PowerShell Plus 编辑器为 PowerShell 脚本提供了开发环境。该应用程序包括现成的脚本部分,您可以将其包含在脚本中。一般来说,Idera PowerShell Plus 的功能与 PowerShell ISE 类似,并且能够从模板创建脚本。安装后,启动应用程序。如果您收到权限错误,请通过具有管理员权限的上下文菜单启动应用程序。

启动后,会出现一个向导来帮助您设置编辑器。例如,在设置过程中,您可以控制脚本的执行策略并查看当前状态。您还可以将 SQL Server 连接到编辑器以直接为 SQL Server 运行 PowerShell 脚本。然后您可以开始编辑脚本。

将 Visual Studio Code 与 PowerShell 结合使用

我们已经在前面的部分中提到了 Microsoft Visual Studio 代码。借助免费的开发环境,您不仅可以使用编程语言,还可以下载PowerShell脚本并开发自己的脚本。

[玩转系统] 使用 PowerShell 脚本实现自动化

图 3:使用 Visual Studio 代码开发 PowerShell 脚本

Visual Studio Code (VSCode) 允许您开发跨平台应用程序和应用程序。 Windows、Linux 和 macOS X 支持最重要的平台。 Microsoft 免费提供开源的 Visual Studio Code (VSCode)。 PowerShell Core 是 PowerShell 的新版本,也可用于 Linux 和 macOS X。这个新版本还可以与 Visual Studio code 一起使用。 Visual Studio Code 中的“终端”选项卡允许您打开 VSCode 支持的 shell。 PowerShell 也可以在这里使用。使用组合键“CTRL+P”或“CMD+P”(macos X),搜索栏会出现在上部区域。您可以在此处安装 VSCode 的扩展,例如 PowerShell。为此,请输入命令“ext install powershell”。

在 Linux 中使用 PowerShell Core

上一节提到的PowerShell Core也可以在Linux中使用。要在 Linux 计算机上安装 PowerShell Core,您必须首先导入 GPG 密钥公共存储库:

curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft.list

然后 Microsoft 注册 Ubuntu 存储库并执行更新:

curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft.list
sudo apt-get update

[玩转系统] 使用 PowerShell 脚本实现自动化

PowerShell Core 是从 Microsoft 的 Ubuntu 存储库导入的。

然后 PowerShell 就已安装并可以立即启动:

sudo apt-get install -y powershell

安装后,PowerShell 可用,您可以使用 shell 工作,也可以创建脚本。

转换您自己的 PowerShell 脚本

在本文和文章第一部分中的工具和操作系统以及过程的基础上,您还可以创建自己的脚本。除了可用于创建脚本的 cmdlet 之外,PowerShell 还提供高级功能。例如,您可以使用 Start-Sleep cmdlet 来停止 Windows PowerShell 活动。 Start-Sleep -s 10 命令将脚本停止十秒钟。 Start-Sleep -m 10000 使用毫秒。如果您使用管道运算符 | Out-Printer 将 cmdlet 的输出传递给 Out-Printer cmdlet,PowerShell 将输出打印到默认打印机。

您还可以在引号中指定打印机以及打印机控制器中的标签。您可以使用 Write-Warning cmdlet 在 PowerShell 中显示您自己的警告。 Write-Host 将输出写入 PowerShell 控制台/主机(如果有)。这两个命令通常可以在您可以从 PowerShell 库下载的脚本中找到。您可以使用-ForeGroundColor-BackGroundColor配置输出的颜色。

使用变量

同样有趣的是,您还可以在 shell 中定义变量。您可以在脚本中使用这些变量。例如,如果要将当前日期存储为变量 $today,可以在 shell 中输入命令 $today=Get-Date。今天的日期将存储为变量 $today。如果您接下来在 shell 中输入 $today,将显示当前日期。

命令Get-Date -Displayhint Date仅显示日期,Get-Date -Displayhint Time仅显示时间。您可以通过使用管道运算符 (|) 将 Get 命令的结果传递给 Get-Member 命令来确定特定 cmdlet 获取的对象类型。这允许您使用Get-Service | Get-Member 命令将检索到的对象发送到 Get-Member

此命令显示有关命令返回的 .NET 对象的信息。这些信息包括对象的类型、属性和方法。例如,要显示服务对象的所有属性,请键入 Get-Service | Get-Member -MemberType *属性。

复制、删除和管理文件和对象

您可以使用 Copy-Item cmdlet 将文件或文件夹复制到脚本。您还可以复制注册表项、证书等。例如,Copy-Item C:\Scriptstest.txt C:\Test 命令复制 test.txt 文件。

Copy-Item C:\\Scripts* C:\\Test 命令将相应源文件夹中的所有文件复制到目标文件夹。 Copy-Item C:\\Scripts C:\\Test -Recurse 命令在 C:\ 中创建 C:\Scripts 文件夹的副本\Test 文件夹。如果没有-Recurse选项,则会在C:\Test中创建Scripts文件夹,但不会复制任何文件和文件夹。除了完整的命令之外,您还可以使用缩写 cpicpcopy

Move-Item cmdlet 移动对象:Move-Item C:\Scriptstest.zip c:\test。您也可以在此处使用占位符,就像复制时一样。默认情况下,Move-Item 不会覆盖目标文件夹中的现有文件。 -Force 参数会覆盖现有目标文件或文件夹:Move-Item C:\Scriptstest.zip C:\Test -Force。 Move-Item C:\\Scriptstest.log C:\\Testad.log 命令同时移动和重命名文件。

除了Move-Item之外,您还可以使用mimvmove。您可以使用New-Item cmdlet 创建新文件或文件夹。您使用New-Item C:\TempPowerShell -Type Directory命令在C:\Temp中创建一个名为PowerShell的新空文件夹> 文件夹。

要创建新文件,请使用相同的语法,但键入FileNew-Item C:\Scriptscript.txt -Type File。使用 New-Item C:\\Scriptsskript.txt -Type File -Force 命令将现有文件替换为新的空文件。使用 New-Item C:\\Scriptsskript.txt -Type File -Force -Value “Text ” 命令创建一个新文件,并将指定文本作为其内容。您还可以使用 ni 代替 New-Item

您可以使用Add-Content cmdlet 将数据附加到文本文件:Add-Content C:\Scriptstest.txt Text。默认情况下,Add-Content 在文本文件中的最后一个字符之后插入新值。

将文件内容替换为Set-ContentClear-Content cmdlet 可删除文件的内容。运行后,该文件仍然存在,但没有内容。您还可以在此处使用通配符:Clear-Content C:\Test*。除了文本文件之外,cmdlet 还支持 Excel 表格、Word 文档和其他文件。您还可以使用 clc 代替 Clear-Content。 Remove-Item cmdlet 删除对象:Remove-Item C:\Scriptstest.txt

* 通配符删除指定文件夹中的对象:Remove-Item C:\Scripts*Remove-Item C:\Scripts* Recurse 命令不需要确认删除。 Remove-Item C:\Scripts* -Exclude *.doc 命令将删除除使用 -Exclude 排除的文件之外的所有文件。 Remove-Item C:\Scripts* -Include .xls,.doc 仅删除 -Include 后面的文件。您还可以同时使用这两个选项,例如:Remove-Item C:\Scripts* -Include *.txt -Exclude *test*

在这里,PowerShell 删除文件夹中除文件名中带有字符串“test”的文件之外的所有文本文件。 -Whatif 参数不会删除任何内容,但返回会发生的情况:Remove-Item C:\windows*.exe -Whatif

除了 Remove-Item,您还可以使用 rirderaserm >、rmdirdel。使用 Rename-Item cmdlet 重命名现有对象:Rename-Item C:\Scriptstest.txt new.txt。 rni >ren 命令也会指向目标。

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

取消回复欢迎 发表评论:

关灯