问题标签 [powercli]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
powershell - 使用 VMware powercli 自动部署
我们有构建环境,我们没有使用任何工具,如 Cruise control、TFS 或 buildforge。
我们完全依赖于 Msbuild 和 powershell。我们决定自动化部署过程。
因为我们使用 VMWare ESXi 来满足我们的虚拟机需求。我们决定使用 VMWare powercli 来自动化部署过程。
构建结束后,VMware powercli 会将 VM 的快照恢复为新状态,我们尝试使用 Invoke-VMScript 进行自动化部署。
但是由于我们的部署有 UI ,这几乎是不可能的,因为 Powercli 尝试在会话 0 中调用 UI 并且它不支持 UI 应用程序。
是否有人克服了这个问题并在虚拟机中成功安装了您的应用程序?
c# - 通过 vmware sdk api 调用将磁盘切换到持久模式
更新:首选的解决方案是使用适用于 .NET 的 VmWare 工具包并实现以下目标
我们现在需要执行的任务之一(如果可能)是将虚拟硬盘从非持久模式切换到持久模式,反之亦然。
我已经尝试寻找正确的 API 调用,但还没有找到。有谁知道这是否可以通过 API 调用来完成?
c# - 从 C# 调用 VmWare PowerCLI
有没有办法从 C# 中执行 PowerCLI cmdlet?基本上我们有一个使用 Windows Workflow 编写的工作流。在执行此工作流的某些阶段,我们需要与某些虚拟机交互并打开/关闭它们或切换磁盘的持久模式等。
虽然我们可以使用 .NET 工具包并实现我们需要的东西,但探索通过 PowerCLI cmdlet 实现这一目标的可能性是有意义的,因为我们需要做的几乎所有事情都可以通过 PowerCLI cmdlet 轻松完成。
powershell - 如何使用 PowerCLI 确定 ESX 主机上是否安装了 EMC PowerPath
TL;DR 如何使用 PowerCLI 确定 ESX 主机上是否安装了 EMC PowerPath?
我正在尝试编写一个脚本,该脚本将在将 LUN 从一个存储组移动到另一个存储组时执行主机屏蔽操作。这是为了适应由于 ESX 4.1 中的竞争条件而可能发生的 All Paths Down 错误。VMWare KB 1015084 和 1009449 中描述了这些步骤。这些步骤是为从服务控制台使用而编写的。我想避免编写 SSH 活动脚本,而是在 Powershell/PowerCLI 中完成整个操作。
在我们的环境中,我们在大多数(但不是全部)主机上使用 EMC PowerPath。仅需要在安装了 PowerPath 的主机上执行此 LUN 屏蔽,因此我正在尝试测试每个主机以确定这一点。
我一直在努力确定如何使用 PowerCLI 执行此操作。如果连接到 ESX 服务控制台,该命令esxcfg-mpath --list-plugins
将显示是否安装了 PowerPath。在 vCenter GUI 中,可以通过以下方式确定:
Select Host -> Configuration -> Storage Adapters -> Select Adapter -> View Devices -> Examine "Owner" column
在 PowerCLI 中使用get-scsilun
会返回一个对象,该对象包含除此Owner 列之外的所有这些信息。
我难住了。我曾希望一个get-esxcli
对象有某种等效的方法,可能在satp
or中nmp
,但到目前为止我找不到任何东西。
powershell - 为什么在会话中第一次执行 powershell 脚本需要很多时间?
我在我的脚本中加载 Powercli 管理单元。如果我在会话中第一次执行脚本,则需要更多时间。当我执行另一个使用相同管理单元的脚本时,它需要更少的时间。[我使用 Measure-Command cmdlet 测量了性能]
所以我认为每当创建新会话时,执行脚本需要更多时间。
在我们的例子中,由于用户将通过右键单击文件来执行 powershell 并使用 powershell 运行,因此它将始终在新会话中运行。所以每次他们都面临着缓慢。
为什么在会话中第一次执行 powershell 脚本需要很多时间?
有什么办法可以避免这种缓慢?[我使用的是 Powershell 2.0]
vmware - 使用多线程 PowerCLI 并行克隆多个 VM
我承担了在 VMware 中克隆大量虚拟机的任务。我不想通过克隆向导单击数百次,而是希望尽可能地自动执行此操作。
我已经配置并“密封”了模板机。克隆并打开电源后,新克隆的实例将启动,在系统准备过程中坐在那里一段时间,等等。这大约需要 20 分钟左右。
我在 MSFT TechNet 上找到了一个非常好的脚本,它可以完成我需要它做的所有事情。我已经对其进行了一些修改,因此我不必更改值并为流程的每个步骤重新保存脚本。而不是整个脚本中的 $Step 计数器,我只是用一些 Start-Sleep 延迟替换它。此时,它工作正常并成功克隆了它从 CSV 文件中读取的所有机器。每台机器大约需要 35 分钟才能准备就绪(机器移动到不同的 AD OU)。
唯一的问题是它全部串行运行,等待整个过程(克隆、更改 VLAN、启动机器并等待域加入,并将最终机器对象移动到不同的 AD OU)完成,然后再开始另一个克隆。
我真正想要的是多线程以使整个操作更快。我在测试中发现,一旦运行大约五个单独的克隆作业,vSphere 中的克隆就会开始减慢,因此我想修改此脚本以一次运行四个克隆(执行整个工作流程)。
有任何想法吗?如果需要,我可以粘贴代码。
loops - 一次循环遍历 n 个对象的集合
我是一个自学成才的新手程序员,我觉得这是一个非常基本的问题,如果我真的学过计算机科学,我就能回答这个问题:P 在我搜索 intertrons 和 StackOverflow 时,我没有无法找到我正在寻找的答案。所以我希望有人可以放纵我。
我有一个对象集合。我想一次对它们进行五个操作,然后继续进行下一个五个。上下文是重启一堆虚拟机;我被要求错开它们,这样主机就不会因为所有虚拟机同时重新启动而受到猛烈抨击。
我觉得正确的道路是for i
某种能力的循环,而不是foreach
. 我也觉得它可能是和的组合,do-until
但for i
我无法从我的大脑中筛选出答案。
我可能可以通过从集合中删除对象来做到这一点,但这感觉像是“错误”的做法,即使它会起作用。
我正在使用 Powershell 和 PowerCLI 执行此操作,但我觉得我试图理解的逻辑比依赖任何语言更基本,所以即使你不熟悉 Powershell,我对你的回答。
编辑:根据下面大卫的回答,以下代码似乎是我正在寻找的:
给出输出:
谢谢大卫!
powershell - VSphere CLI:如何拍摄新快照并添加描述?
我正在编写一个 VSphere CLI 脚本,该脚本将拍摄 6 个快照,并允许我将每个快照的描述设为它的创建日期。目前这是我正在尝试的代码:
arrays - PowerCLI 快照阵列
现在有点难过,想知道社区是否可以快速推动我,帮助我继续我正在工作的项目。
在我正在处理的程序中,我试图从数组中获取 6 个最新元素。我想将快照变量放在数组中,以便获取数组中的所有快照。这是目前让我感到困惑的代码部分:
我是否实现了在我的数组中获取 $snapshot 变量的目标,并且我的 for 循环是否正确管理删除除了 6 个最新的变量之外的所有变量?
编辑:修复了以前没有注意到的小问题。
powershell - PowerCLI:任务自动化
我有一个脚本,我想让它每周一和周四自动运行。我很好奇是否可以在 PowerCLI 上执行此操作,或者我是否必须创建一个 .bat 来实现此目标。我进行了一些搜索并了解到这段代码在我的脚本中是必需的:
我还需要什么才能让这个代码在每周一和周四运行?
谢谢!
编辑:我将在哪里编辑任务调度程序以允许它运行?我提供了我所在位置的图像(我也是一个视觉人:P)