我有一个PowerCLI脚本,可以关闭VM的电源,更改其内存和CPU,然后重新打开电源。我修改了脚本以利用变量。所有这一切都完美。
我现在正在尝试修改脚本以利用阵列,以便在众多VM之间循环。关闭并打开虚拟机电源的脚本部分运行良好。
我遇到的麻烦是在foreach循环中使用两个数组中的变量。
对于$ vm_name中的每个VM,我需要设置在$ memory_gb中找到的相应内存量。
这就是我所拥有的(它目前为所有VM设置了相同数量的内存(“ 1”))。
$vm_name = @("OMAC-SBXWIN7AJM", "OMAC-SBXWIN2012R2AJM", "OMAC-SBXWIN2008R2AJM")
$memory_gb = 2,4,4
# SET THE VM MEMORY
Write-Host 'NOW SETTING THE VM MEMORY'
foreach ($objItem in $vm_name)
{Set-VM -VM $vm_name -MemoryGB 1 -confirm:$false
Break
}
Run Code Online (Sandbox Code Playgroud)
http://i.stack.imgur.com/E9hfY.png
...我尝试在第二个foreach循环中嵌套第二个,但无济于事。
如何编写脚本,以便$ vm_name中的每个VM获得在$ memory_gb中找到的相应内存量?
好吧,我可能会让事情变得比实际情况更困难,所以请告诉我是否是这样。
我的最终目标:我有一个将被删除的计算机备份列表。每个文件都以计算机名称和备份日期命名。我试图解析每个备份的文件名以获取用户本身的用户名,这样我就可以创建一个列表发送给经理。我们的计算机名称要么是 FIRST-LAST 要么是 FLAST,这又增加了一层难度。
例如,我的列表中有两台计算机:
FIRST-LAST 2016.1.12
FLAST 2015.9.8
我想完全删除这些数字,留下:
第一个-最后一个
FLAST
然后,我想更改第一个计算机的名称以反映原始计算机所有者的用户名(我们在公司中使用 FLAST 作为用户名),这样我最终得到: FLAST FLAST (显然是本示例之外的不同用户)
然后,我可以使用此信息在活动目录中搜索这些用户,将他们的姓名导出到列表中,然后将列表发送给经理,通知他们即将删除。
这很复杂,我认为也许只需要改变我们的流程,以便更容易获取这些信息,但这是一个有趣的难题,所以我很好奇我们是否能找到解决方案。
我刚刚开始从 Microsoft 虚拟学院学习 PowerShell,并且我正在运行指示的命令之一。虽然在他们的最后它起作用了,但我的却没有。我确实四处寻找解决此问题的方法。我只是不知道出了什么问题。任何提示都会对这个新的 PowerShell 学习者有所帮助。
PS C:\Windows\system32> Update-Help -Force
Update-Help : Failed to update Help for the module(s) 'WindowsUpdateProvider' with UI culture(s) {en-US} : Unable to retrieve the HelpInfo XML file for UI culture en-US. Make sure the
HelpInfoUri property in the module manifest is valid or check your network connection and then try the command again.
At line:1 char:1
+ Update-Help -Force
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (:) [Update-Help], Exception
+ FullyQualifiedErrorId : UnableToRetrieveHelpInfoXml,Microsoft.PowerShell.Commands.UpdateHelpCommand
PS C:\Windows\system32> $PSVersionTable …Run Code Online (Sandbox Code Playgroud)