设为首页 收藏本站
查看: 1021|回复: 0

PowerShell针对SCVMM批量导出模板的描述信息以及导入

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-31 09:20:17 | 显示全部楼层 |阅读模式
SCVMM的模板也会给Windows Azure Pack使用,这个时候如果手头有很多很多的节点需要导入导出,会是非常麻烦的一个事情,手动改的工作量很大。
比如说下面这张图,一个vhdx文件包含至少有名称、系列、版本、操作系统、以及本来路径的名字,另外如果是给Windows Azure Pack使用,可能还包含一个tag。这些属性都需要一一输入,一两个可能你还愿意自己手动修改,但是多了呢?不仅容易出错,挣钱干活的速度也大大降低了。解决这个问题同样使用PowerShell完成,用到的方法不多,依然是博客以前提到的一些方法,进行了整合。
QQ截图20150731092034.png
首先我需要获取到原始vhdx文件的名称,它包含在“路径”属性中,类似下面的形式
\\vm121.contoso.com\MSSCVMMLibrary\M-CentOS64.vhdx
我只需要M-CentOS64.vhdx部分,第一次,我用了一个很傻的方法,下面是伪代码
1
2
3
4
5
6
7
8
9
10
11
$GHD = Get-SCVirtualHardDisk
#这是一种效率比较低的方法
$2b = $GHD.name
$2b
$zz = (Get-SCVirtualHardDisk -name $2b).SharePath
$zz = $zz -replace "\\", ""
#必须填写vhdx文件所在的库服务器名和库共享名
$zz = $zz -replace "vm121.contoso.com", ""
$zz = $zz -replace "MSSCVMMLibrary", ""
Add-Member -InputObject $tagx -MemberType NoteProperty -Name "vhdxname2" -value $zz  -Force #写入变量到vhdxname2这个属性当中
}



那么上面这个方法为什么说比较傻呢?因为它只是用-replace做了替换的方法,这个时候需要替换三次,第一次替换\,第二次替换库名字,第三次替换库共享名,最后剩下的就是文件名了。而且这种替换不是通用的,需要手动把变量写进去。

所以我采用了Split的分割方法,效率和通用性一下提高了
1
2
3
$2b = $tagx.name
$zz = (Get-SCVirtualHardDisk -name $2b).SharePath  
$zz =$zz.Split("\")[-1]



这里的意思是说,用\分割,取最后一组数据。
好,我们来看看完整的取数据的代码

1
2
3
4
5
6
7
8
9
$GHD = Get-SCVirtualHardDisk
foreach($tagx in $GHD)
{[string]$tagxx =$tagx.tag
Add-Member -InputObject $tagx -MemberType NoteProperty -Name "tagx2" -value $tagxx  -Force
$2b = $tagx.name
$zz = (Get-SCVirtualHardDisk -name $2b).SharePath  
$zz =$zz.Split("\")[-1]
Add-Member -InputObject $tagx -MemberType NoteProperty -Name "vhdxname2" -value $zz  -Force }
$GHD|select Name,FamilyName, OperatingSystem, Release,tagx2,vhdxname2,VirtualizationPlatform| Export-Csv c:/GRlistold.csv  -Force -Encoding utf8




取了之后,我们需要在新服务器上导入,拷贝上文的c:/GRlistold.csv,然后我们会用到另外一组代码,需要注意的是,在Windows Azure Pack环境中,tag可能是多个数组,这里我的方法只能输入一个数组,所以如果有需要,针对数组方面,还需要自己添加一下。
1
2
3
4
5
6
7
8
9
10
11
12
Import-Csv -Path c:/GRlistold.csv | foreach {
$vhdxname = $_.Name
$vhdxname2 = $_.vhdxname2
$OperatingSystem = $_.OperatingSystem
$familyName = $_.FamilyName
$release =  $_.Release
$tags =  $_.tagx2
$VirtualizationPlatform = $_.VirtualizationPlatform
$myVHD = Get-SCVirtualHardDisk -name $vhdxname
Set-scvirtualharddisk –virtualharddisk $myVHD –OperatingSystem $OperatingSystem –FamilyName $familyName  –Release $release –Tag $tags  -name $vhdxname2 -VirtualizationPlatform $VirtualizationPlatform
}
Get-SCVirtualHardDisk |select name,FamilyName, OperatingSystem, Release,tag,VirtualizationPlatform|ft






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-92560-1-1.html 上篇帖子: shell脚本进行数据库操作 下篇帖子: Linux下的shell脚本编程-变量-算术表达式-判断语句-if分支语句 信息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表