<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>:::虚拟时代::: &#187; PowerShell</title>
	<atom:link href="http://blog.microhyper.com/archives/tag/powershell/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.microhyper.com</link>
	<description>最新虚拟技术资讯</description>
	<lastBuildDate>Wed, 28 Jul 2010 14:06:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>在Hyper-V Server 2008 R2上开启PowerShell</title>
		<link>http://blog.microhyper.com/archives/712</link>
		<comments>http://blog.microhyper.com/archives/712#comments</comments>
		<pubDate>Tue, 17 Feb 2009 22:13:10 +0000</pubDate>
		<dc:creator>ericz</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Hyper-V Server 2008 R2]]></category>
		<category><![CDATA[PowerShell]]></category>

		<guid isPermaLink="false">http://blog.microhyper.com/?p=712</guid>
		<description><![CDATA[<p>Hyper-V Server 2008 R2其中的一个新功能是可以开启PowerShell。这在执行本地任务时非常有用而无需使用远程用户界面。首先运行下面的命令：</p>
<p>start /w ocsetup MicrosoftWindowsPowerShell</p>
<p>之后，你就可以开始PowerShell的命令窗口：</p>
<p>start C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe</p>
]]></description>
			<content:encoded><![CDATA[<p>Hyper-V Server 2008 R2其中的一个新功能是可以开启PowerShell。这在执行本地任务时非常有用而无需使用远程用户界面。首先运行下面的命令：</p>
<p><code>start /w ocsetup MicrosoftWindowsPowerShell</code></p>
<p>之后，你就可以开始PowerShell的命令窗口：</p>
<p><code>start C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.microhyper.com/archives/712/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何在VMware的ESX上使用免费的Quick Migration虚拟机迁移脚本</title>
		<link>http://blog.microhyper.com/archives/329</link>
		<comments>http://blog.microhyper.com/archives/329#comments</comments>
		<pubDate>Tue, 14 Oct 2008 21:01:35 +0000</pubDate>
		<dc:creator>ericz</dc:creator>
				<category><![CDATA[VMware]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[VMware ESX]]></category>

		<guid isPermaLink="false">http://blog.microhyper.com/?p=329</guid>
		<description><![CDATA[<p>Quick Migration是来自微软Hyper-V的一项免费功能。VMware具有VMotion，但只给企业许可证用户。对大多数小型企业来说这是相当昂贵的额外投入。因此，一个聪明的家伙（Mike diPetrillo）想了一个好方法，使在VMware的ESX主机上也具有该功能。其实是一个很小的脚本运行在Windows PowerShell下，用于把你的虚拟机从一个ESX主机移到另一个上。它的速度非常快，但你的虚拟机必须在共享存储[...]]]></description>
			<content:encoded><![CDATA[<p>Quick Migration是来自微软Hyper-V的一项免费功能。VMware具有VMotion，但只给企业许可证用户。对大多数小型企业来说这是相当昂贵的额外投入。因此，一个聪明的家伙（Mike diPetrillo）想了一个好方法，使在VMware的ESX主机上也具有该功能。其实是一个很小的脚本运行在Windows PowerShell下，用于把你的虚拟机从一个ESX主机移到另一个上。它的速度非常快，但你的虚拟机必须在共享存储上。简单来讲该脚本是：</p>
<ol>
<li>挂起正在运行的虚拟机。</li>
<li>把该虚拟机的所有文件复制到另一个ESX主机。</li>
<li>在第二个ESX主机上启动该虚拟机。</li>
</ol>
<p>你将需要以下一系列的工具来运行该脚本：</p>
<ol>
<li><a href="http://www.vmware.com/download/vi/">2个VMware Infrastructure 3个主机(2个ESX服务器)，下载</a></li>
<li><a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx">Windows PowerShell，下载</a>	</li>
<li><a href="http://www.vmware.com/support/developer/windowstoolkit/">VMware Infrastructure Toolkit (for Windows)，下载</a></li>
<li><a href="http://mikedatl.typepad.com/vmmigrator-1.0.ps1.zip">来自Mike网站的VM Migrator脚本，下载</a></li>
<li>运行你要迁移的虚拟机</li>
</ol>
<p>你可以在<a href="http://blip.tv/file/get/Mikedatl-MicrosoftQuickMigrationForVMwareUsingTheVMwareToolkitFo351.mov">这里下载该脚本的视频演示</a>。</p>
<div class="captionfull"><a class="thickbox" rel="" href='http://blog.microhyper.com/wp-content/gallery/vmware/zrtn_006n7777b20_tn.jpg' title=''><img src='http://blog.microhyper.com/wp-content/gallery/vmware/zrtn_006n7777b20_tn.jpg' alt='zrtn_006n7777b20_tn.jpg' class='ngg-singlepic ngg-center' /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.microhyper.com/archives/329/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://blip.tv/file/get/Mikedatl-MicrosoftQuickMigrationForVMwareUsingTheVMwareToolkitFo351.mov" length="1670175" type="video/quicktime" />
		</item>
		<item>
		<title>XenServerPSSnapin演示 &#8211; 虚拟机的关联启动</title>
		<link>http://blog.microhyper.com/archives/304</link>
		<comments>http://blog.microhyper.com/archives/304#comments</comments>
		<pubDate>Sun, 12 Oct 2008 20:32:51 +0000</pubDate>
		<dc:creator>ericz</dc:creator>
				<category><![CDATA[Citrix]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[XenServer]]></category>

		<guid isPermaLink="false">http://blog.microhyper.com/?p=304</guid>
		<description><![CDATA[<p>简介</p>
<p>在这里我为大家介绍一下新的XenServer PowerShell snap-in 功能。使用一个简单的虚拟机关联(chained)启动的例子：即等待一个虚拟机启动完毕后该虚拟机才开始启动。</p>
<p>在这个例子中，我们使用XenServer工具来检测启动是否已经完毕：即一旦虚拟机的IP已绑定，我们就认为该虚拟机已经准备就绪。当然你也可以把这个条件设地更复杂一点，例如等待一个域控制器启动后再[...]]]></description>
			<content:encoded><![CDATA[<p><strong>简介</strong></p>
<p>在这里我为大家介绍一下新的XenServer PowerShell snap-in 功能。使用一个简单的虚拟机关联(chained)启动的例子：即等待一个虚拟机启动完毕后该虚拟机才开始启动。</p>
<p>在这个例子中，我们使用XenServer工具来检测启动是否已经完毕：即一旦虚拟机的IP已绑定，我们就认为该虚拟机已经准备就绪。当然你也可以把这个条件设地更复杂一点，例如等待一个域控制器启动后再开始启动。但在这个例子中不作深入讨论。</p>
<div class="captionfull"><a class="thickbox" rel="" href='http://blog.microhyper.com/wp-content/gallery/xen/start-vm.jpg' title=''><img src='http://blog.microhyper.com/wp-content/gallery/xen/thumbs/thumbs_start-vm.jpg' alt='start-vm.jpg' class='ngg-singlepic ngg-center' /></a></div>
<p>在第一个截图上，我用XenCenter 5.0与XenServer 5.0虚拟池相连，开启XS-PS，并运行本例子中的脚本，Start-VM.Wait.ps1 。 至于PowerShell的安装不再这里罗嗦了，并确定设置了ExecutionPolicy为RemoteSigned。</p>
<p><strong>命名空间和Initialize-XenServer:Aliases</strong></p>
<p>首先，我们简短的来描述一下如何在XS-PS里处理命名空间。</p>
<p>很多Xen API的名字都很容易理解，如cmdlet “Create-Message”是创建消息。XenServer的cmdlets在XenServer的命名空间如下：</p>
<p>Create-XenServer:VM<br />
Destroy-XenServer:VM<br />
Get-XenServer:VM<br />
Get-XenServer:VM.NameLabel<br />
Set-XenServer:VM.NameLabel<br />
Invoke-XenServer:VM.Start</p>
<p>这对想在混合环境下使用XS-PS非常有用，但该快速脚本显然有一点冗长，所以新增了别名功能。在Start-VM.Wait处理模块，你可以看到下面的应用：</p>
<p>Initialize-XenServer:Aliases Start</p>
<p>这样就导入了整个别名集，我们就可以使用下面的简短名了：</p>
<p>Create-VM<br />
Destroy-VM<br />
Get-VM<br />
Get-VM.NameLabel<br />
Set-VM.NameLabel<br />
Start-VM</p>
<p>这些别名的有效范围是在此脚本内，因此他们不会影响其他的用户环境。你可以通过-Scope参数将它们设为全局有效。  </p>
<p>Initialize-XenServer:Aliases实际支持三种类型的别名，你可以选择最适合你环境的类型，或者你愿意可以使用全名。</p>
<p>PS C:\Users\Ewan Mellor> Initialize-XenServer:Aliases<br />
Invoke-Xen = Get-Xen:VM / Invoke-Xen:VM.Start<br />
Invoke     = Get-VM / Invoke-VM.Start<br />
Start      = Get-VM / Start-VM</p>
<p><strong>Start-VM.Wait</strong></p>
<p>Start-VM.Wait在管道中取得虚拟机的信息。然后像下面那样一次性的处理它们：</p>
<ul>
<li>如果VM的记录代表的是控制域，或者一个模板，就跳过。</li>
<li>如果VM无法启动（因为它已经运行了），记录到日志文件并跳过。</li>
<li>否则，调用Start-VM。这将等待直到VM的进程开始启动。</li>
<li>下一步，为VM的启动等待5分钟。等待VM.guest_metrics有效，并可以进入VM_guest_metrics.networks 。一旦有记录在这里，我们认为XenServer工具已经准备就绪，并该虚拟机的IP地址已经配置完毕（例如从DHCP服务器）。</li>
<li>如果5分钟后还没有有效的数据，那么显示警告信息并进入下一VM的处理。</li>
</ul>
<p>function Start-VM.Wait<br />
{<br />
    begin<br />
    {<br />
        $timeout = 5 * 60 * 1000<br />
        Initialize-XenServer:Aliases Start<br />
    }<br />
    process<br />
    {<br />
        if ($_.is_a_template -or $_.is_control_domain)<br />
        {<br />
            return<br />
        }<br />
        if ($_.allowed_operations -notcontains &#8220;start&#8221;)<br />
        {<br />
            Write-Warning(&#8220;{0} cannot be started&#8221; -f $_.name_label)<br />
            return<br />
        }</p>
<p>        Write-Verbose(&#8220;Starting {0}&#8230;&#8221; -f $_.name_label)<br />
        Start-VM $_</p>
<p>        for ($count = 0; $count -le $timeout / 500; $count += 1)<br />
        {<br />
            $metrics = Get-VM.GuestMetrics $_<br />
            if ($metrics -ne $null -and $metrics.networks.Count -gt 0)<br />
            {<br />
                Write-Verbose(&#8220;VM {0} started&#8221; -f $_.name_label)<br />
                return<br />
            }<br />
            Start-Sleep -m 500<br />
        }</p>
<p>        Write-Warning(&#8220;Timeout starting {0}&#8221; -f $_.name_label)<br />
   }<br />
}</p>
<p><strong>使用</strong></p>
<div class="captionfull"><a class="thickbox" rel="" href='http://blog.microhyper.com/wp-content/gallery/xen/start-vm2.jpg' title=''><img src='http://blog.microhyper.com/wp-content/gallery/xen/thumbs/thumbs_start-vm2.jpg' alt='start-vm2.jpg' class='ngg-singlepic ngg-center' /></a></div>
<p>使用此脚本非常的简单： </p>
<ol>
<li>点（.）然后脚本名</li>
<li>设置$VerbosePreference为&#8221;Continue&#8221;，只是为了该演示。</li>
<li>连接到主服务器。</li>
<li>选择你要启动的虚拟机（在本例中，所有标记为“Production”的） 。</li>
<li>用管道功能使所有的VM进入Start-VM.Wait</li>
<li>演示开始</li>
<li>结束后退出你的服务器。</li>
</ol>
<p>PS> . .\Start-VM.Wait.ps1<br />
PS> $VerbosePreference = &#8220;Continue&#8221;<br />
PS> Connect-XenServer -url https://<servername><br />
PS> Get-XenServer:VM -Tags Production | Start-VM.Wait<br />
&#8230;<br />
PS> Disconnect-XenServer</p>
<p>这是一个简单的例子，当然你可以作适当的改动以符合你的环境，但我希望这个例子可以作为一个好的开始。</p>
<p><a href="http://blog.microhyper.com/downloads/Start-VM.Wait.ps1">Start-VM.Wait.ps1脚本可以在这里下载</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.microhyper.com/archives/304/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

