在使用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"]
}#连接Vsphere
Connect-VIServer -server serverIP -Protocol https -User username -Password password#根据模板创建VM
if($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 E
or
.\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

转载于:https://blog.51cto.com/forsk/2154149

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

  1. <力扣>-----利用哈希表来判断是否存在重复元素

    class Solution {public boolean containsDuplicate(int[] nums) {Set<Integer> set = new HashSet&l ...

  2. 利用哈希表和dfs解决LeetCode 399. Evaluate Division

    问题简介 给定一些由变量组成的等式组,然后根据这些等式推算出所闻的等式的结果,如果无法推算,则返回-1.0. 比如: 给定等式组 a / b = 2.0, b / c = 3.0 求出 a / c = ...

  3. 基础提升*哈希函数与哈希表

    目录 1:哈希函数与哈希表 2:利用哈希表建立新的结构: 3:布隆过滤器(黑名单的查询与建立) 4:一致性哈希 情景假设: 原始问题: 解决方法(一致性哈希) 一致性哈希的优点: 存在的问题: 解决方 ...

  4. LeetBook哈希表专题题解(详解/一题多解)

    哈希表 文章目录 哈希表 设计哈希表 设计哈希集合(set) (超大数组法) (拉链法1(list实现)) (拉链法2(模拟实现单链表+虚拟头节点)) (拉链法3(模拟单链表不叫虚拟头节点)) 设计哈 ...

  5. 【LeetCode1】两数之和_哈希表

    一.题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是 ...

  6. 第七章 哈希表与字符串

    文章目录 哈希表与字符串 哈希表基础知识 HashMap 基本使用 leetcoe 例1:最长回文串(409) 例2:词语模式(290) 例3:同字符词语分组(49) 例4:无重复字符的最长子串(3) ...

  7. 散列表(也叫哈希表),

    google搜索到的头条:散列表(也叫哈希表),是根据关键码值直接进行访问的数据结构,也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.这个映射函数叫做散列函数,存放记录的数组 ...

  8. (教学思路 C#集合二)哈希表

    这一节我们来学习第二种集合,因为它的特性,可以提供一种相当有效率的搜索方法,所以在实际项目中非常实用,它就是哈希表.哈希继承了IDictionary接口,IDictionary接口提供了key(键)/ ...

  9. LeetCode--49. 字母异位词分组(哈希表)

    49. 字母异位词分组(哈希表) 1. 题目描述 2. 题目分析 3. Python实现 1. 题目描述 难度:中等 2. 题目分析 这道题的目的就是找出由相同字母组成的字符的集合.非常直观的方法就是 ...

最新文章

  1. ubuntu16.04系统下创建python隔离环境
  2. 软件需求管理用例方法三
  3. windows远程桌面管理工具下载_vnc viewer 64位下载,3步实现vnc viewer 64位下载
  4. recv函数返回值说明
  5. rust(54)-字符串
  6. 自定义验证规则ValidationAttribute的使用
  7. leetcode 116 --- 填充每个节点指向最右节点的next指针
  8. 雷霄骅--H264视频编解码分析--目录转载
  9. Apache JMeter 5.1.1 发布,压力测试工具
  10. EasyExcel筛选和冻结首行
  11. html 给表格添加背景颜色,HTML表格标记教程(7):背景颜色属性BGCOLOR
  12. 使用Layer弹窗时遇到Layer.Close()后dom元素延迟性销毁的问题 @Gyb
  13. 2018年6月13日任务
  14. 第一次作为面试官的感悟
  15. 很有意思的十句话,说说背后的故事。
  16. 搭建嵌入式ARM完整系统
  17. 【数据架构】SOGAF 通用实体框架 (CoE)
  18. 四叉树 java 实现
  19. 云享团——基于大数据开发套件的增量同步策略
  20. VMware 随win10自动启动与关闭

热门文章

  1. 分享几个vs code 的几个插件
  2. Visual Studio开发必备:扩展工具应用
  3. 创建topic验证kafka集群
  4. 面向对象笔记2 原型链 解释
  5. C# 判断两张图片是否一致,极快速
  6. Idea-LifecycleException when deploying
  7. 常用Shell脚本编写的内置变量
  8. vim编辑器基础知识总结
  9. asp.net调用百度地图API,实现电子地图
  10. 浅谈代码的执行效率(4):汇编优化