对于IT 专业人员和开发者,可以采用多种方式创建和管理虚拟机(VM),其中主要包括:使用管理门户(Management Portal)、通过PowerShell脚本及通过自己编写程序使用REST API方式等。
对于通过PowerShell脚本,可以采用自动化的方式,大大方便了IT人员的工作量,同时也便于灵活配置及脚本代码复用。
最近在编写一段自动创建Windows Server虚拟机的代码的时候,发现无法运行下去,具体错误界面如下图:
系统提示:“Cannot process command because of one or more missing mandatory parameter”。
查找MSDN看命令格式:New-AzureQuickVM和New-AzureVM:
http://msdn.microsoft.com/en-us/library/windowsazure/jj152839.aspx
Parameter Set: Windows
New-AzureQuickVM -ImageName <String> -Password <String> -ServiceName <String> -Windows [-AffinityGroup <String> ] [-AvailabilitySetName <String> ] [-Certificates <CertificateSettingList> ] [-DnsSettings <DnsServer[]> ] [-HostCaching <String> ] [-InstanceSize <String> ] [-Location <String> ] [-MediaLocation <String> ] [-Name <String> ] [-SubnetNames <String[]> ] [-VNetName <String> ] [ <CommonParameters>]
http://msdn.microsoft.com/en-us/library/windowsazure/jj152815.aspx
Parameter Set: ExistingService
New-AzureVM -ServiceName <String> -VMs <PersistentVM[]> [-DeploymentLabel <String> ] [-DeploymentName <String> ] [-DnsSettings <DnsServer[]> ] [-VNetName <String> ] [ <CommonParameters>]
Parameter Set: CreateService
New-AzureVM -ServiceName <String> -VMs <PersistentVM[]> [-AffinityGroup <String> ] [-DeploymentLabel <String> ] [-DeploymentName <String> ] [-DnsSettings <DnsServer[]> ] [-Location <String> ] [-ServiceDescription <String> ] [-ServiceLabel <String> ] [-VNetName <String> ] [ <CommonParameters>]
好像没有什么不妥;经过进一步排查和搜索,发现原因出在了使用PowerShell创建虚拟机必须提供新参数:-AdminUserName。
MSDN上述两篇文章的内容尚未更新。
具体请见:https://github.com/WindowsAzure/azure-sdk-tools/blob/master/ChangeLog.txt
“BREAKING CHANGE: New-AzureVM and New-AzureQuickVM now require an –AdminUserName parameter when creating Windows based VMs.”
同时需要注意的是,在提供-AdminUserName的时候,不能选择”Administrator”或者”Admin”这样的用户名,从安全性角度而言,一些常用的管理员名称、密码,也不建议使用,以避免被恶意攻击所利用。
虽然是一个小的改变,但值得赞同,毕竟安全性是个非常关键的问题。