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

SCVMM的模板也会给Windows Azure Pack使用,这个时候如果手头有很多很多的节点需要导入导出,会是非常麻烦的一个事情,手动改的工作量很大。

比如说下面这张图,一个vhdx文件包含至少有名称、系列、版本、操作系统、以及本来路径的名字,另外如果是给Windows Azure Pack使用,可能还包含一个tag。这些属性都需要一一输入,一两个可能你还愿意自己手动修改,但是多了呢?不仅容易出错,挣钱干活的速度也大大降低了。解决这个问题同样使用PowerShell完成,用到的方法不多,依然是博客以前提到的一些方法,进行了整合。

首先我需要获取到原始vhdx文件的名称,它包含在“路径”属性中,类似下面的形式

\\vm121.contoso.com\MSSCVMMLibrary\M-CentOS64.vhdx

我只需要M-CentOS64.vhdx部分,第一次,我用了一个很傻的方法,下面是伪代码

$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的分割方法,效率和通用性一下提高了

$2b = $tagx.name
$zz = (Get-SCVirtualHardDisk -name $2b).SharePath  
$zz =$zz.Split("\")[-1]

这里的意思是说,用\分割,取最后一组数据。

好,我们来看看完整的取数据的代码

$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可能是多个数组,这里我的方法只能输入一个数组,所以如果有需要,针对数组方面,还需要自己添加一下。

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
时间: 2024-08-30 14:27:34

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

Powershell管理系列(二十六)PowerShell操作之批量导出&导入邮箱

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 项目中有时候做跨林邮箱迁移的时候,条件不成熟,比如安全考虑或者其他考虑,不能做双林信任,这样就提出了一个问题,历史邮件需要使用的话怎么办,一个简单高效的解决办法就是从源森林批量导出邮件为.pst文件,在批量导入到目的域森林,具体操作如下: 1.赋予管理账号邮件导入导出权限,命令如下: cls whoami New-Manageme

Azure PowerShell (14) 批量导出Azure ASM ACL和ARM NSG配置信息

<Windows Azure Platform 系列文章目录> 最近有一个客户需求,需要批量导出Azure Classic VM的ACL (Access Control List), 还有ARM VM的NSG (Network Security Group) 设置. 我花了一点时间,写了一个PowerShell脚本,发布在我的GitHub上: https://github.com/leizhang1984/AzureChinaPowerShell/blob/master/ARM/ExportA

dedecms批量导出新增文章url和标题

百度站长工具推出主动提交功能有一段时间了,可以将新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录.那么dedecms如何批量导出新增文章url呢?你可以用标签调用最新文章,可以用sql导出,也可以用采集工具进行遍历,这边主要讲解用dedecms后台直接操作. 如下图所示,在dedecms后台 - 模板 - 全局标记测试 - 输入代码 - 提交测试就可以了 代码如下 {dede:arclist row="300"} <li>[field:fulltitle/

lotus notes 数据库中附件的批量导出 2

Lotus Notes 数据库中附件的批量导出 Lotus Notes 数据库是一种文档型数据库,其中文档的富文本域中往往嵌入许多附件(如 Word 文档.PDF 文档.Excel 文档等).用户时常需要将这些附件导出到其他系统中进行使用处理.然而当需要导出许多文档中的附件时,只能手动逐个打开各个文档并将附件导出,然后再将附件导入到其他系统中,那么,当附件数量很大时则会大大降低效率.本文从用户角度出发,分析了若干附件批量导出的需求并给出了相应的解决方案. 引言 Notes 数据库是一种文档型数据

C# 导出word文档及批量导出word文档(1)

这里用到了两个dll,一个是aspose.word.dll,另外一个是ICSharpCode.SharpZipLib.dll,ICSharpCode.SharpZipLib.dll是用于批量导出word文档的,通过把文件打包成压缩包,以文件流的方式输出下载.aspose.word.dll最好使用最新版的,14.5或者更高,我使用的是14.5版本,页面是采用mvc的语法.在这里感谢赵某人为我提供的帮助.         首先制作好word模板,使用模板可以避免在代码中对word进行排版,方便简单.

C# 导出word文档及批量导出word文档(3)

在初始化WordHelper时,要获取模板的相对路径.获取文档的相对路径多个地方要用到,比如批量导出时要先保存文件到指定路径下,再压缩打包下载,所以专门写了个关于获取文档的相对路径的类. 1 #region 获取文档的相对路径 2 public class WordFilePath 3 { 4 #region 返回文件带路径值 5 /// <summary> 6 /// 返回文件带路径值 7 /// </summary> 8 /// <param name="Fil

使用PHPExcel实现数据批量导出为excel表格

首先需要下载PHPExecel类文件,帮助文档可以参考PHPExcel中文帮助手册|PHPExcel使用方法. 下面直接上例子,是我自己写的一个简单的批量导出数据为excel的例子 前台页面 比较简单,就是一个超链接,跳转到处理页面,超链接也可以跟一些参数(看需求)! <a href="./Process1.php">导出excel表格</a> 后台Process.php页面 /** * 批量导出数据 * @param $arr 从数据库查询出来,即要导出的数据

Windows根证书的批量导出和导入

# POWERSHELL批量导出 Get-ChildItem -Path Cert:\LocalMachine\Root\ |ForEach-Object {Export-Certificate -Cert $_ -FilePath ($env:USERPROFILE + "\Desktop\新建文件夹\ROOT\" + $_.Thumbprint + ".cer")} # POWERSHELL批量导入 Get-ChildItem -Path ($env:USERP

java使用POI操作excel文件,实现批量导出,和导入

一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Excel 95及以后的版本,即可操作后缀为 .xls 和 .xlsx两种格式的excel. POI全称 Poor Obfuscation Implementation,直译为"可怜的模糊实现",利用POI接口可以通过JAVA操作Microsoft office 套件工具的读写功能.官网:htt