VMware Invoke-VMScript的使用

概要

此 cmdlet 在每个指定虚拟机的来宾操作系统中运行脚本。

句法

Invoke-VMScript [-ScriptText] <String> [-VM] <VirtualMachine[]> [-GuestCredential <PSCredential>] [-GuestPassword <SecureString>] [-GuestUser <String>] [-HostCredential <PSCredential>] [-HostPassword <SecureString>] [-HostUser <String>] [-RunAsync] [-ScriptType <ScriptType>] [-Server <VIServer[]>] [-ToolsWaitSecs <Int32>] [-Confirm] [-WhatIf] [<CommonParameters> ]

相关命令

网络版

详细说明

此 cmdlet 在每个指定虚拟机的来宾操作系统中运行脚本。要运行 Invoke-VMScript,用户必须具有对包含虚拟机的文件夹的读取权限和 Virtual Machine.Interaction.Console 交互权限。虚拟机必须已打开电源并安装了 VMware Tools。必须存在与在端口 902 上托管虚拟机的 ESX 系统的网络连接。要使用主机或来宾操作系统进行身份验证,必须提供 HostUser/HostPassword (GuestUser/GuestPassword) 对和 HostCredential (GuestCredential) 参数之一。您用来向来宾操作系统进行身份验证的来宾帐户必须具有管理员权限。有关受支持操作系统的列表,请参阅 PowerCLI 用户指南。


要针对 5.0 之前的 vCenter Server/ESX/ESXi 版本运行此 cmdlet,您需要满足以下要求: *您必须在 32 位版本的 Windows PowerShell 上运行 cmdlet。*您必须有权通过 TCP 端口 902 访问托管虚拟机的 ESX。*对于 4.1 之前的 vCenter Server/ESX/ESXi 版本,您需要 VirtualMachine.Interact.ConsoleInteract 权限。对于 vCenter Server/ESX/ESXi 4.1 及更高版本,您需要 VirtualMachine.Interact.GuestControl 权限。


要针对 vCenter Server/ESXi 5.0 及更高版本运行此 cmdlet,您需要 VirtualMachine.GuestOperations.Modify 和 VirtualMachine.GuestOperations.Execute 权限。

参数

NAMETYPEDESCRIPTIONREQUIRED?PIPELINE INPUTDEFAULT VALUE
ScriptTextString提供要运行的脚本的文本。您还可以将包含脚本路径的字符串变量传递给此参数。trueFalse
VMVirtualMachine[]指定要在其来宾操作系统上运行脚本的虚拟机。trueTrue (ByValue)
ConfirmSwitchParameter如果值为 $true,则表示 cmdlet 在运行前要求确认。如果值为 $false,则 cmdlet 会在不要求用户确认的情况下运行。falseFalse
GuestCredentialPSCredential指定一个 PSCredential 对象,其中包含您要用于通过虚拟机来宾操作系统进行身份验证的凭据。falseFalse
GuestPasswordSecureString指定要用于对虚拟机来宾操作系统进行身份验证的密码。falseFalse
GuestUserString指定要用于对虚拟机来宾操作系统进行身份验证的用户名。falseFalse
HostCredentialPSCredential指定一个 PSCredential 对象,其中包含要用于与主机进行身份验证的凭据。仅当您进行身份验证的 vCenter Server 或 ESX 版本低于 4.0,或者您安装的 VIX 版本低于 1.10 时,您才需要指定主机凭据。falseFalse
HostPasswordSecureString指定要用于与主机进行身份验证的密码。仅当您进行身份验证的 vCenter Server 或 ESX 版本低于 4.0,或者您安装的 VIX 版本低于 1.10 时,您才需要指定主机凭据。falseFalse
HostUserString指定要用于与主机进行身份验证的用户名。仅当您进行身份验证的 vCenter Server 或 ESX 版本低于 4.0,或者您安装的 VIX 版本低于 1.10 时,您才需要指定主机凭据。falseFalse
RunAsyncSwitchParameter表示命令立即返回,无需等待任务完成。在这种模式下,cmdlet 的输出是一个 Task 对象。有关 RunAsync 参数的详细信息,请在 VMware PowerCLI 控制台中运行“help About_RunAsync”。falseFalse
ScriptTypeScriptType指定脚本的类型。有效值为 PowerShell、Bat 和 Bash。如果虚拟机操作系统为 Windows,则默认值为 PowerShell。如果虚拟机操作系统为 Linux,则默认值为 Bash。falseFalse
ServerVIServer[]指定要在其上运行 cmdlet 的 vCenter Server 系统。如果未向此参数传递任何值,则该命令在默认服务器上运行。有关默认服务器的更多信息,请参见 Connect-VIServer 的说明。falseFalse
ToolsWaitSecsInt32指定系统等待连接到 VMware Tools 的时间(以秒为单位)。默认值为 20。falseFalse
WhatIfSwitchParameter表示运行 cmdlet 只是为了显示将要进行的更改,实际上没有修改任何对象。falseFalse

返回类型

一个或多个VMScriptResult对象VMScriptResult

笔记

要使 PowerShell 脚本正常工作,您必须在 PowerShell 安装后重新启动虚拟机。对于 BIN 和 BASH 脚本,不需要重新启动。

例子

-------------------------- 示例 1 ---------------------- ----

<span style="color:#000000"><span style="color:#000066"><span style="background-color:#eff7ff">Invoke-VMScript -VM VM -ScriptText "dir" -GuestUser 管理员 -GuestPassword pass2</span></span></span>

列出来宾操作系统上的目录条目。

-------------------------- 示例 2 ---------------------- ----

<span style="color:#000000"><span style="color:#000066"><span style="background-color:#eff7ff">$script = '&"$env:ProgramFiles\Common Files\Microsoft Shared\MSInfo\msinfo32.exe" /report "$env:Tmp\inforeport"'

调用-VMScript -ScriptText $script -VM VM -GuestCredential $guestCredential</span></span></span>

运行 PowerShell 脚本。在 PowerShell 中,要访问环境变量,您必须使用以下语法:$env:<environment variable>(例如,$env:ProgramFiles)。此外,要运行该程序,您必须在程序路径前指定一个与号 (&)。外部引号 ($script = '...') 是必需的,因为这是您在 PowerShell 中定义字符串变量的方式。内部双引号是必需的,因为路径中有空格。

-------------------------- 示例 3 ---------------------- ----

<span style="color:#000000"><span style="color:#000066"><span style="background-color:#eff7ff">$script = '"%programfiles%\Common Files\Microsoft Shared\MSInfo\msinfo32.exe" /report "%tmp%\inforeport"'

调用-VMScript -ScriptText $script -VM VM -GuestCredential $guestCredential -ScriptType Bat</span></span></span>

运行 BAT 脚本。在 BAT 脚本中,要访问环境变量,您必须使用以下语法:%<environment variable>%(例如,%programfiles%)。


外部引号 ($script = '...') 是必需的,因为这是您在 PowerShell 中定义字符串变量的方式。内部双引号是必需的,因为路径中有空格。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mgaofeid

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值