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

[玩转系统] 使用 PowerShell 自动化 VMware vSphere

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

使用 PowerShell 自动化 VMware vSphere


[玩转系统] 使用 PowerShell 自动化 VMware vSphere

也许是因为我的职业编码生涯始于用 C 语言为 Unix 系统编写设备驱动程序,早在 20 世纪 80 年代就开始使用字符语言基于绿屏(80 列 x 24 行!),我更喜欢通过命令行而不是 GUI 来管理 IT 系统。我不是一个受虐狂,我确实发现从 PowerShell 提示符中进行许多操作比使用(专有)用户界面更容易、更快捷,即使它确实在 Web 浏览器中运行。

与命令提示符 (cmd) 等不太现代的东西相比,PowerShell 本身带来了一些额外的、通用的好处。请注意,后者不是“DOS”提示符 - 它可能看起来像它,但 PowerShell 提示符也可以,并且 DOS 时代早已过去,尽管它仍然可以通过 Visual Studio Subscriber(以前的 MSDN)从 Microsoft 下载,并且最近甚至还发布了 FreeDOS 的新版本!

PowerShell 的优点包括:

  • 通过 ctrl+r 可搜索命令历史记录,只要您拥有持久的 Windows 用户配置文件,该历史记录就会在会话和重新启动时持续存在。如果您以前使用过命令行,您应该能够再次找到它,并在必要时更改参数。
  • cmdlet(PowerShell 命令和函数)的 Tab 补全、cmdlet 和参数名称,再加上 get 和 set 等经过批准的动词,意味着您只需要大致知道命令的名称,或者可以将 Get-Command 与通配符一起使用。
  • Ctrl+空格——这是超级制表符补全!
  • 内置 cmdlet 帮助,或者使用 -Online 参数和 Get-Help 在线查找它们(或者只需键入“Help”,因为如果您指定的不是 cmdlet、函数、PowerShell 将查找以动词“Get”为前缀的 cmdlet,或别名)

PowerCLI 是 VMware 为其 PowerShell 模块指定的名称 - 请注意使用复数,因为有超过 70 个独立的模块,这导致了一个提示,即仅导入所需的模块,而不是全部导入,因为后者可能会很耗时。消耗。 PowerCLI 涵盖 VMware 的所有产品,但在本文中,我将仅介绍 vSphere,尽管本文中的大部分内容也适用于非 vCenter ESXi。

了解如何通过 PowerShell 驱动 VMware vSphere 可以使您成为更高效的管理人员,并轻松实现自动化,您可以将任务设置为在需要时运行,无需任何手动干预 - 当您的更改窗口位于半夜时,这非常有用。

在有关 VMware 的系列博文中的第一篇中,我们将介绍安装和连接方面的内容,因为这些方面有许多可能会让您陷入困境的实际问题,因此我希望您能够过渡到管理和控制 VMware尽可能免费、快速。

安装和升级 PowerCLI

您可能认为这将是一个句子部分 - 安装模块(如果运行提升,则需要为所有用户安装 -Scope) - 但我将在这里放置一些陷阱,以帮助节省人们的时间和挫败感,如果他们解决了问题。

最新版本的 PowerCLI 导致了此错误:

[玩转系统] 使用 PowerShell 自动化 VMware vSphere

这是因为 VMware 用于签署模块的证书提供程序已更改,而 PowerShell 似乎无法满足此要求。这可以通过使用 Uninstall-Module 或删除 VMware 模块的文件夹来解决,例如在“$env:ProgramFiles\WindowsPowerShell\Modules”中

如果您已经安装了 Microsoft Hyper-V PowerShell 模块,您将收到此错误:

[玩转系统] 使用 PowerShell 自动化 VMware vSphere

使用 -AllowClobber 不会覆盖 Hyper-V,因此仍然可以使用它,但您需要小心执行正确的 cmdlet,例如 Get-VM。这可以通过多种方式完成:

  • 删除模块 -Name Hyper-V -ErrorAction SilentlyContinue
  • VMware.VimAutomation.Core\Get-VM(模块资格)
  • “Import-Module -prefix vmware_”并运行 Connect-VMware_viserver、Get-VMware_vm 等

如果您需要在未连接 Internet 的计算机上安装模块,请从已连接且已安装所需模块的计算机复制模块文件夹。

正在连接

我们使用 Connect-VIserver cmdlet 连接到一台或多台 VMware vCenter 或 VMware ESXi 服务器。如果没有显式地将凭据作为参数传递,则运行 cmdlet 的用户将尝试通过身份验证。如果这不可能,则首选使用 -credential 参数,而不是以明文形式传递凭据,因为这些凭据将不安全地保留在 PowerShell 历史文件中。

可能会显示许多警告,可以通过 Set-PowerCLIConfiguration 预先单独抑制这些警告,并且可以为 Connect-VIserver 指定 -Force 以抑制所有用户界面提示。

可以使用 New-VICredentialStoreItem cmdlet 存储凭据,并且当该服务器存储凭据时,它们将自动传递到 Connect-VIserver。请注意,可以从这些存储的凭据中检索密码,但仅限于在创建密码的计算机上以创建密码的用户身份运行时。

Connect-VIserver 返回一个连接对象,因此在继续操作之前测试它是否不是 $null。

[玩转系统] 使用 PowerShell 自动化 VMware vSphere

完成后,不要忘记使用 Connect-VIserver 返回的连接对象中的相同服务器参数或管道来调用 Disconnect-VIserver。您可能还想指定 -confirm:$false 因为默认情况下它会提示确认。

如果您有多个 VMware vCenter,则可以指定 -AllLinked 参数来连接到所有这些 vCenter,以便默认情况下针对所有这些 vCenter 运行操作,但如果它们未链接,您仍然可以通过一次调用 Connect-VIServer 来连接到所有这些 vCenter通过将它们指定为 -Server 参数的逗号分隔列表,该参数以数组形式呈现给 cmdlet。事实上,我们可以轻松地判断特定参数的类型,而不必求助于 RTFM,只需键入 cmdlet 名称,后跟减号并按 ctrl 空格即可获取所有参数的列表。然后,光标键允许您找到您感兴趣的参数,它将在左下角显示类型,如下所示:

[玩转系统] 使用 PowerShell 自动化 VMware vSphere

如果直接连接到 vCenter 和 ESXi 服务器,请务必小心,因为可能会返回重复的对象。

结论

在这篇文章中,您了解了如何安装 VMware PowerCLI 模块并连接到 VMware vCenter 或 VMware ESXi 以及您可能遇到的一些问题。在下一集中,我将向您展示连接后可以执行的多种操作。

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

取消回复欢迎 发表评论:

关灯