千家信息网

PowerCLI脚本,利用哈希表对参数进行转换

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,在使用PowerCLI的编写powershell脚本的过程中,有这样一个需求:例如需要重启一个指定的虚拟机,运行脚本时输入的参数,参数为虚拟机的名字,但是虚拟机的名字在建立的时候可能是千奇百怪,我们想
千家信息网最后更新 2025年12月02日PowerCLI脚本,利用哈希表对参数进行转换

在使用PowerCLI的编写powershell脚本的过程中,有这样一个需求:例如需要重启一个指定的虚拟机,运行脚本时输入的参数,参数为虚拟机的名字,但是虚拟机的名字在建立的时候可能是千奇百怪,我们想把参数与虚拟机名称对应,实现参数能够自动转化转换为想要的虚拟机的名字。
powershell的哈希表可以满足这种需求。
还有这样一个需求:在创建虚拟机的时候,我们不仅要输入主机参数,LUN参数,模板参数。这些参数的名字不好记忆,或者太长,使用时比较麻烦;也可以通过哈希表的转换,将简洁的参数在脚本内部自动转换为对应的参数。


eg:如下是创建虚拟机是哈希表的应用

#定义参数param([string]$VMname,[string]$vmhostname,[string]$datastore,[string]$template)#在命令窗口中添加powercli模块try{add-pssnapin vmware.vimautomation.core -ErrorAction SilentlyContinue}catch{}#定义模板哈希表$TemplateGroup=@{"centos"="centos7.4";"windows"="server2008sp1"}$Template=$TemplateGroup["$template"]#定义主机哈希表$HostName=@{"1.23"="192.168.1.23";"1.24"="192.168.1.24";"1.56"="192.168.1.56";}$VMHost=$HostName["$vmhostname"]#定义存储哈希表$DatastoreGroup=@{"A"="storage1";"B"="storage2";"C"="storage3"                  "D"="storage4";"E"="storage-7","storage-5","storage-6"}<#假若集群的主机有多个LUN,我们可以随机选取一个值,eg:E对应的有多个LUN,我们使用时可以使用Get-Random来随机获取一个LUN#>if($datastore -eq "E"){    $Datastore=Get-Random $DatastoreGroup["$datastore"]}else{    $Datastore=$DatastoreGroup["$datastore"]}#连接VsphereConnect-VIServer -server serverIP -Protocol https -User username -Password password#根据模板创建VMif($template -eq "windows"){    new-vm -name $VMname  -host $VMHost -template $Template -datastore $Datastore -OSCustomizationSpec win2008}else{    new-vm -name $VMname  -host $VMHost -template $Template -datastore $Datastore}#断开连接Disconnect-VIServer -server serverIP -Confirm:$false

执行命令时,就可以使用简洁易于记忆的参数

.\newvmscript.ps1  vmname 1.23 windows Eor.\newvmscript.ps1 -VMname vmname -vmhostname 1.23 -datastore E -template windows

eg:如下为一个重启业务机器的例子

param([string]$Name)try{add-pssnapin vmware.vimautomation.core -ErrorAction SilentlyContinue}catch{}$NameGroup=@{"业务域名1"="虚拟机名称1";"业务域名2"="虚拟机名称2";}$VMName=$NameGroup["$Name"]connect-viserver -server serverip -user username -password password -port 443Restart-VM -VM $VMName -Confirm:$false -RunAsyncDisconnect-VIServer -Confirm:$false

运行脚本时:.\restartscript.ps1 业务域名1

参数 哈希 脚本 业务 名字 名称 域名 模板 需求 简洁 主机 命令 时候 记忆 输入 运行 千奇百怪 不好 例子 可以通过 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 盱眙百事达网络技术 广东安卓软件开发哪家好 浪潮软件开发测试工程师好吗 数据库课后题答案 多城市网站数据库怎么设计 数据库空间是什么意思 服务器打电话 聊城游戏软件开发公司有哪些 永康市兰哲网络技术 怎么连接远程电脑服务器 济南协裕网络技术有限公司介绍 assess数据库中通配符 两会网络安全保障预案 数据库建表代码唯一非空 如何把网址解析到服务器 西湖论剑网络安全大会志愿者 网络技术员技能比武 联想服务器硬盘坏了 丰台区网络技术开发概况 东旦软件开发有限公司 学生网络安全新闻案例 宝山区企业网络技术承诺守信 java怎么录入数据库 北仑计算机软件开发企业 服务器要内网穿透吗 易语言链接服务器数据库教程 北京精雕软件开发 基于图数据库的导航数据 数据库中信息的符号表示是什么 为什么魔兽世界服务器容量小
0