没有XenServer Powershell cmdlets的Critix管理工具箱是不完整的。XenServer Powershell cmdlets允许管理员使用单个命令行接口管理Citrix XenDesktop、XenApp、部署服务器、Netscaler以及XenServer。 在虚拟环境中,基本的XenServer PowerShell cmdlets提供了一些关键的特性,允许管理员拷贝虚拟机,判定主资源池,配置许可、主机版本并为虚拟机分配服务器。但是虚拟环境只是个基础;管理员通常需要使用高级脚本以及程序进一步将任务序列化并自动化。
开始使用XenServer PowerS……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
没有XenServer Powershell cmdlets的Critix管理工具箱是不完整的。XenServer Powershell cmdlets允许管理员使用单个命令行接口管理Citrix XenDesktop、XenApp、部署服务器、Netscaler以及XenServer。
在虚拟环境中,基本的XenServer PowerShell cmdlets提供了一些关键的特性,允许管理员拷贝虚拟机,判定主资源池,配置许可、主机版本并为虚拟机分配服务器。但是虚拟环境只是个基础;管理员通常需要使用高级脚本以及程序进一步将任务序列化并自动化。
开始使用XenServer PowerShell cmdlets
为了在Window 7 x64服务器上安装XenServer PowerShell cmdlets,管理员需要下载XenServer PowerShell管理单元并提取cmdlets。为了在x64系统中配置管理单元,需要在命令提示符下运行如下命令,使用64位的.NET框架注册动态链接库。
C:windowsmicrosoft.netframework64v2.0.50727installutil.exe "c:program files (x86)citrixxenserverpssnapinxenserverpssnapin.dll"
运行完上述命令后,应该会收到一条消息,显示命令提交成功。
如果你在使用快照,那么你还需要使用XenServer快照管理单元。确保将快照管理单元增加到PowerShell配置文件中并且不要忘了执行Connect-Xenserver 命令启动会话。否则在PowerShell下将会提示错误信息。
使用MAC地址查找XenServer客户端
为了通过MAC地址识别虚拟机,你必须使用如下命令获取虚拟接口(VIF)的对象属性:
$vif = get-xenserver:VIF | ? { $_.MAC -match "ce:e2:b7:56:85:7f"};(Get-XenServer:VIF.VM -VIF $vif.uuid).name_label
在Get-Xenserver cmdlet中应用VIF属性直接查询虚拟接口的MAC地址。以下命令说明了如何检索特定UUID(通用唯一标识符)的虚拟机信息。使用该信息替代VIF属性。只需要改变不同的属性值,就能够基于这些属性值检索、管理并关联不同的结果。
Get-XenServer:VM -properties @{ uuid='$uuid' }
令人称道的是Get-XenServer cmdlets提供了一系列可用的变量,包括角色,资源池,秘密,会话以及契约。运行get-help Get-XenServer命令可以查看所有可用的变量值并快速创建你自己的查询。
除Get-XenServer 之外的其他cmdlet
除了经常用到的Get-XenServer cmdlet之外,还有一些其他的cmdlets。你可以使用XenServer提供的功能,比如创建、添加、删除、回退、设置以及移除。
为了查看可用的XenServer cmdlets及其属性,可以在PowerShell命令提示符下运行Get-Command *xen* 命令。
我发现了一些能够展示XenServer cmdlets内部工作机制的高级脚本。这些高级脚本来源于Maikel Gadder的博客,它提供了一些非常好的如何使用变量并存储属性的例子。
# Xenserver-UpdateScript
# V 0.9.2
# 20.07.2012
# written by Maikel Gaedker (http://www.ingmarverheij.com/ # Version : 1.0, 13 february 2012 # # Requires : plink (a command-line interface to the puTTY back ends) # http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
# function StartProcess([String]$FileName, [String]$Arguments){ $process = New-Object "System.Diagnostics.Process" $startinfo = New-Object "System.Diagnostics.ProcessStartInfo" $startinfo.FileName = $FileName $startinfo.Arguments = $arguments $startinfo.UseShellExecute = $false
$startinfo.RedirectStandardInput = $true
$startinfo.RedirectStandardOutput = $true $startinfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Hidden
$process.StartInfo = $startinfo
$temp = $process.start() return $process } #Region PrerequisiteCheck #Check number of arguments If ($args.count -lt 5) { Write-Host "Usage" Write-Host "powershell.exe .RDSConnect.ps1 (XenServerPoolMaster) (XenServerUsername) (XenServerPassword) (VMName) (Network ID) [CustomFieldName] [CustomFieldValue]" Write-Host ""
Write-Host "Example"
Write-Host "powershell.exe .RDSConnect.ps1 172.16.1.1 root Passw0rd WS01 0 STUDENT 1"
Write-Host "" Write-Host "Press any key to continue ..."
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
break
}
#EndRegion
#Region Define variables and read
#Executables
$strExecutableMSTSC=((Get-Item "Env:WinDir").Value)+'system32mstsc.exe' $strExecutablePLink=(Split-Path -parent $MyInvocation.MyCommand.Definition) + 'plink.exe' #File paths $strPathTemp=$Env:TEMP
$strFileQueryNetworks ='QueryNetworks'
#Script variables $XenServerHost=$args[0] $XenServerUsername=$args[1] $XenServerPassword=$args[2] $VirtualMachineName=$args[3]
$VirtualMachineNetworkID=$args[4].toString()
If ($args.count -ge 7) {
$CustomFieldName=$args[5] $CustomFieldValue=$args[6] } else { $CustomFieldName=""
$CustomFieldValue="" } $strNICInterface=($VirtualMachineNetworkID)+'/ip: ' #Filter variables
$strFilterVM='name-label="' + $VirtualMachineName+'"'
IF ($CustomFieldName) {$strFilterVM+=' other-config:XenCenter.CustomFields.' + $CustomFieldName + '=' + $CustomFieldValue}
#EndRegion #Prevent rsa2 key fingerprint message #==================================== #The server's host key is not cached in the registry. You have no guarantee that the server is the computer you #think it is. #The server's rsa2 key fingerprint is: ssh-rsa 2048 7c:99:f3:31:38:ca:b7:b6:3b:21:53:55:ff:f3:76:1e #If you trust this host, enter "y" to add the key to PuTTY's cache and carry on connecting.
#If you want to carry on connecting just once, without adding the key to the cache, enter "n".
#If you do not trust this host, press Return to abandon the connection. # #Run plink and confirm rsa2 key fingerprint with yes
#--------------------------------------------------- $process = StartProcess $strExecutablePLink (' -l '+$XenServerUsername+' -pw '+$XenServerPassword+' '+$XenServerHost+' exit')
$process.StandardInput.WriteLine('y') #Retrieve IP of VM #================= # #Create a script to query a XenServer and ask the networks of the VM #------------------------------------------------------------------- New-Item $strPathTemp -Name $strFileQueryNetworks -type file -Force | Out-Null Add-Content ($strPathTemp + '' + $strFileQueryNetworks) -Value ('xe vm-list '+$strFilterVM+' os-version:distro="windows" params=networks --minimal')
#Run the script on the specified XenServer
#----------------------------------------- $process = StartProcess $strExecutablePLink (' -l '+$XenServerUsername+' -pw '+$XenServerPassword+' '+$XenServerHost+' -m '+($strPathTemp + '' + $strFileQueryNetworks))
$VMNetworks = $process.StandardOutput.ReadLine()
Remove-Item ($strPathTemp+''+$strFileQueryNetworks)
#Determine if the networks of the virtual machine can be found
#-------------------------------------------------------------- if(!$VMNetworks) { Write-Host "The virtual machine '"$VirtualMachineName"' could not be found." Write-Host "" Write-Host "Press any key to continue ..." $x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
break } else {
#Determine the IP address of the NIC can be found foreach ($strVMNetwork in $VMNetworks.Split(";")) { if ($strVMNetwork.Contains($strNICInterface)) { $strVMIPaddress=$strVMNetwork.Substring($strVMNetwork.IndexOf($strNICInterface) + $strNICInterface.Length) } }
#Determine if the IP address of the network ID can be found #-------------------------------------------------------------- if(!$strVMIPaddress) { Write-Host "The IP address of network '"$VirtualMachineNetworkID"' could not be found." Write-Host "" Write-Host "Press any key to continue ..." $x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") break
} else { Write-Host "The virtual machine '"$VirtualMachineName"' is connected via IP "$strVMIPaddress }
}
#Start MSTSC to the VM
#======================
$processMSTSC=StartProcess $strExecutableMSTSC ('/v:'+$strVMIPaddress+' /f')
最后,在Citrix博客中,Ajene' Hall Barrett贴出了一款功能非常强大的脚本,实现了虚拟桌面的自动化部署。这个脚本包括了变量引用,活动目录cmdlets,以及XenServer和PVS(部署服务器)cmdlets。所有的脚本编写良好,而且非常有参考价值。
高级脚本进一步证明了你可以使用XenServer PowerShell cmdlets实现自动化管理。随着Citrix工具集的不断发展,所有的这些功能应该会进一步扩展并增强。
作者
相关推荐
-
时间轴:讲讲思杰近代史
思杰作为报告中销售的领导者的时代已经一去不复返——即使该公司在财务有所回升,但IT市场和合作伙伴也还是不知道如何处理思杰近年的这些交易。
-
VDI环境使用瘦客户端?Citrix HDX SoC是秘密武器
虽然瘦客户端价格低廉并且易于管理,但是相比于笔记本和台式机来说,其在成熟度方面并不占优势,因此企业可以利用Citrix HDX SoC项目将瘦客户端顺利加入到VDI环境。
-
听说思杰XenDesktop与BYOD更配置哦
思杰是最早期的一家VDI厂商,于2000年自主开发的其虚拟化技术。即使这样,该公司的长久历史并不能表明它在任何情况下都是最好的VDI选择。
-
Citrix SCOM管理套件为XenDesktop提供全面监控
Citrix收购了一款适用于微软基础架构的管理套件,这种监控工具能够为XenDesktop Platinum用户提供很大帮助。