在安装完成Hyper-v以后,默认情况下,只有管理员组的成员才有权限去管理Hyper-v,做一些诸如管理网络,管理虚拟机,管理磁盘等等的操作,普通用户没这个权限,从应用角度来说,如果公司所有的服务器都丢进了Hyper-v,有WEB服务器,有Exchange服务器,还有域控,还有终端服务器等等很多,一般来说,各个管理员各司其职,IIS高手就去管WEB服务器,Exchange高手就去管Exchange服务器,softice就自告奋勇地自荐下当个终端服务管理员,大家都有得玩,但是Hyper-v管理员可能不希望每个人都用管理员登录,希望他们各管各的,互不影响。
1、开始----运行----输入azman.msc,打开授权管理器
 
委派用户管理Hyper-v_第1张图片
 
2、右点授权管理器,选择打开授权存储,选择XML文件,浏览到路径 C:\ProgramData\Microsoft\Windows\Hyper-V,找到下面的InitialStore.xml文件,打开它,这里可能有一点小问题,这个ProgramData文件夹默认是隐藏的,你得设置显示所有文件和文件夹,把它挖出来
 
委派用户管理Hyper-v_第2张图片
 
3、打开以后,展开Hyper-v Services,展开定义,右键角色定义,选择新建角色定义,填上名称和描述
 
委派用户管理Hyper-v_第3张图片
 
4、选择添加,出来添加定义的对话框,选择操作,勾选上Read Services Configuration和View Virtual Switch Management Service这两个,确定
 
委派用户管理Hyper-v_第4张图片
 
5、再确定关闭对话框,我们便可以在右边看到刚才定义的角色了,右点角色分配,选择分配新角色,在添加角色对话框中,选择刚才创建的Hyper-v Virtual Machine Managers
 
委派用户管理Hyper-v_第5张图片
 
6、再确定关闭对话框,我们就可以在角色分配列表中看到这个Hyper-v Virtual Machine Managers角色了,再次右点这个角色,选择分配用户和组,选择从Windows和Active Directory,添加一个组,比如Terminal Servers Admins这个组,添加完成,我们在右边也可以看到这个添加的组了,这样下来,配置只算做了一步,接下来的一步,我们还要去新建一个作用域,要新建作用域,我们可以右键选择Hyper-v Services,选择新建作用域,取个名字,写个描述
 
委派用户管理Hyper-v_第6张图片
 
7、确定以后,我们就可以在授权管理器中看到这个Terminal Servers Admin Scope了,展开它,同样找到角色,展开角色,右键选择新建角色定义,写个名称,填上描述,再继续选择添加按钮,选择操作,这一次我们要选择上6个角色,
Allow Input to Virtual Machine
Allow Output From Virtual Machine
Pause and Restart Virtual Machine
Start Virtual Machine
Stop Virtual Machine
View Virtual Machine Configration
 
 
委派用户管理Hyper-v_第7张图片
 
8、接下来要做的,同样是在Terminal Servers Admin Scope的角色分配中,将Terminal Server Admin Roles添加进来,并且为这个角色添加上Terminal Servers Admins这个组
 
委派用户管理Hyper-v_第8张图片
 
9、第二步的操作与第一步相比,算是大同小异了,应该说还是比较轻松的,但事情还没有结束,还得继续往下走,走第三步,运行一个脚本
 
Option Explicit

Dim WMIService
Dim VM
Dim VMManagementService
Dim VMSystemGlobalSettingData
Dim VMName
Dim VMScope
Dim Result

'Enter the VM name and the name of the scope to assign it to
VMName = InputBox( "Specify the virtual machine to change scope on:")
VMScope = InputBox( "Specify the new scope to be used:")

'Get an instance of the WMI Service in the virtualization namespace
Set WMIService=GetObject( "winmgmts:\\.\root\virtualization")

'Get a VMManagementService object
Set VMManagementService = WMIService.ExecQuery( "SELECT * FROM Msvm_VirtualSystemManagementService").ItemIndex(0)

'Get the VM object that we want to modify
Set VM=(WMIService.ExecQuery( "SELECT * FROM Msvm_ComputerSystem WHERE ElementName='" & VMName & "'")).ItemIndex(0)

'Get the VirtualSystemGlobalSettingsData of the VM to be modified
Set VMSystemGlobalSettingData = (VM.Associators_( "MSVM_ElementSettingData", "Msvm_VirtualSystemGlobalSettingData")).ItemIndex(0)

'Change the ScopeOfResidence property
VMSystemGlobalSettingData.ScopeOfResidence = VMScope

'Update the VM with ModifyVirtualSystem
Result = VMManagementService.ModifyVirtualSystem(VM.Path_.Path, VMSystemGlobalSettingData.GetText_(1))
 
把这个脚本保存VMScope.vbs,在命令行下执行 cscript VMScope.vbs,他会提示你输入要更改Scope的虚拟机的名称
 
委派用户管理Hyper-v_第9张图片
 
输入完成以后,确定,他又出来一个窗口,让你输入Scope的名称,这里我们就输入第二步中创建的Terminal Server Admin Scope
 
委派用户管理Hyper-v_第10张图片
 
这样,整个三步操作就算完成了,如果你有三台终端服务器运行在虚拟机里面,分别为SRV-TS-01,SRV-TS-02,SRV-TS-03,那么你把这个脚本按照上面的操作运行三遍
 
最后,总算到了Terminal Servers Admins大显身手的时候了,作为验证,你可以使用该用户组中的成员登录,打开Hyper-v管理器,连接到这台Hyper-v服务器,验证一下效果,看它是不是具有
Allow Input to Virtual Machine
Allow Output From Virtual Machine
Pause and Restart Virtual Machine
Start Virtual Machine
Stop Virtual Machine
View Virtual Machine Configration
这六个权限,当然,你还可以定义更多的操作权限,以满足你的应用场景