通过Powershell远程管理Windows Azure上的虚拟机

Windows Azure上连接虚拟机想必不是件难事尤其是连接Windows操作系统简单点几下鼠标通过远程桌面RDPWindows Azure虚拟机会帮助你自动创建远程连接RDP的Profile你就能体验到公有云带来的便利。由于虚拟机外部连接都是通过端口映射连接的。当然基于区域网络目前Azure.CN中新创建的虚拟网络已经都是区域网络了当然你目前仍然可以创建基于地缘组的虚拟网络虽然并不推荐后可以创建虚拟机实例级别的公共IP地址所以你也可以跳过通过"云服务"端口映射的RDP而直接连接虚拟机公共IP的3389端口。好吧说了这么多都是通过远程桌面对远程虚拟机进行管理的如果需要批量对虚拟机进行管理有什么方法呢在全球运营的Microsoft Azure上已经提供了自动化as a Service的自动化云服务 通过Powershell工作流运行手册批量定时管理虚拟机服务当然听上去很酷不过目前国内的自动化服务还要等等呢。

可是如果我们希望通过Powershell脚本批量管理在国内Azure公有云上的虚拟机该如何操作呢这里把我用于演示的脚本和大家分享一下。

首先下载并安装最新的 Azure Powershell 注意本脚本只是在Powershell 4.0环境测试通过Azure中创建的Windows服务器虚拟机自动provision部署的时候后台会自动帮助启用Powershell基于https的WINRM访问而用到的证书正是"云服务FQDN"证书这个可以通过以下方式验证在Azure管理门户云服务证书中查看

来到Azure虚拟机中查看配置的Powershell已经启用了基于https的访问并且配置了访问证书的指纹就是"云服务"配置的证书指纹因此想通过Powershell远程访问云中的Windows 服务器虚拟机则需要再访问客户端安装相应的证书文件到本地受信任证书列表 CurrentUser\My下面脚本中就是将该证书安装到远程管理客户机的该位置。

(*注意* 这里的脚本没有做"云服务"下的虚拟机操作系统判断因为演示环境中所有虚拟机均为Windows Server 2012 R2的虚拟机。)

演示脚本远程执行脚本Invoke-command 的scriptblock中主要用于在Azure虚拟机中添加配置用户体验服务可以根据需要进行修改,另外如果需要交互式的环境也可以通过Enter-PSSession URI连接虚拟机的URI管理。

实际演示中需要指定参数订阅名称云服务名称 Remote-configAzVM.ps -Subscriptionname "订阅名"-Servicename "云服务名"

Param
(
    [Parameter(Mandatory=$false,Position=0)]
    [String]$SubscriptionName,
    [Parameter(Mandatory=$false)]
    [String]$Servicename,
     [Parameter(Mandatory=$false)]
    [String]$Path = (Get-Location)
)
 
 
# Elevate to admin
Write-Host "Checking for elevation... " -NoNewline
$CurrentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
if (($CurrentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)) -eq$false) {
    $ArgumentList= "-noprofile-noexit -file `"{0}`" -Path `"$Path`""
    If($DeploymentOnly) {$ArgumentList = $ArgumentList +" -DeploymentOnly"}
    Write-Host"elevating"
    Start-Processpowershell.exe -VerbRunAs -ArgumentList($ArgumentList -f($myinvocation.MyCommand.Definition))
    Exit
}
 
 
Select-AzureSubscription -SubscriptionName $SubscriptionName -Current
$Validate = $true
 
# Check Current PS Version
If ($PSVersionTable.PSVersion.Major -lt 4) {Write-Error "Only Supports PowerShell Version 4 or Higher!";$Validate =$false} 
 
if ($Validate)
{
function Install-WinRmCertificate($ServiceName, $VMName)
{
    $vm= Get-AzureVM-ServiceName $ServiceName-Name $VMName
    $winRmCertificateThumbprint= $vm.VM.DefaultWinRMCertificateThumbprint
    
    $winRmCertificate= Get-AzureCertificate-ServiceName $ServiceName`
        -Thumbprint$winRmCertificateThumbprint -ThumbprintAlgorithm sha1
    
    $installedCert= Get-Item Cert:\CurrentUser\My\$winRmCertificateThumbprint-ErrorAction SilentlyContinue
    
    if($installedCert -eq$null)
    {
        $certBytes= [System.Convert]::FromBase64String($winRmCertificate.Data)
        $x509Cert= New-ObjectSystem.Security.Cryptography.X509Certificates.X509Certificate
        $x509Cert.Import($certBytes)
        
        $store= New-ObjectSystem.Security.Cryptography.X509Certificates.X509Store"Root","LocalMachine"
        $store.Open("ReadWrite")
        $store.Add($x509Cert)
        $store.Close()
    }
}
 
$VMnames = (Get-AzureVM -ServiceName $ServiceName).HostName
foreach ($VMname in $VMnames)
    {
    Install-WinRmCertificate-ServiceName $ServiceName-VMName $VMname
    $VMwinRmUri= Get-AzureWinRMUri-ServiceName $ServiceName-Name $VMname
    $credential= Get-Credential
 
    Start-Job-ScriptBlock{
            Invoke-Command-URI $VMwinRmUri-Credential $credential-ScriptBlock {
                    Install-WindowsFeature -nameDesktop-Experience -IncludeAllSubFeature -Restart-Force}} 
    }
}
时间: 2024-10-09 03:54:54

通过Powershell远程管理Windows Azure上的虚拟机的相关文章

使用Windows Azure PowerShell远程管理Windows Azure虚拟机

对于Windows Azure,如果你还在使用windowsazure.com门户来管理虚拟机,那就显得不怎么高上大了.Windows Azure PowerShell 是一个功能强大的脚本环境,可用于在 Windows Azure 中控制和自动执行工作负荷的部署和管理.   安  装   通过Microsoft Web Platform Installer一键搞定安装.   登录Azure账户   启动安装好的Windows Azure PowerShell,使用“Add-AzureAccou

通过本地的SQL Manage sutudio管理windows azure上的SQL Server

通过SQL Manage sutudio管理windows azure上的SQL Server 说到windows azure上的SQL创建,我们在上一篇文章上有介绍了,那今天主要介绍什么呢,我们发现在windows azure上创建的sql数据库下没有SQL Server代理选项功能.我相信大家都用过SQL Server代理相关的功能,具体功能就不用多说了.拿我来说,因为我们有个服务的数据是写入到SQL Server上的,我们在本地通过计划人物实现对数据保留60天,然后通过web方式查询,这样

PowerShell远程管理Windows Server(3):工作组环境

一.实验环境 二.操作步骤 (1)在server端输入"Enable-PSRometing",启用远程连接:(具体操作参考:http://281816327.blog.51cto.com/907015/1397239) (2)在client端输入set-item wsman:\localhost\client\trustehosts –value "192.168.11.53",将server设置为client的信任主机. 以避免一下的错误: ( 错误内容为Ente

Windows 上的 SSH?使用 PowerShell Remoting 远程管理 Windows 服务器

Windows 上的 SSH?使用 PowerShell Remoting 远程管理 Windows 服务器 2018-07-01 Windows 约 2202 字 预计阅读 5 分钟 文章目录 Windows 世界的远程管理 基于 WinRM 的 PowerShell Remoting 配置无密码 的 PowerShell Remoting 体验 在 Linux/Unix 世界里 SSH 是个好东西,SSH 是 Secure Shell 的缩写,用它可以很容易连接到指定的服务器,并执行特定命令

Powershell管理系列(三十二)PowerShell操作之开启终端Powershell远程管理

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 步骤1.windows server 2012以上的操作系统,默认是启用远程管理的,但是在windows 2008 R2操作系统之 上,运行invoke-command后报错,如下图,在需要远程连接的电脑上,运行enable-psremoting –force后,即 打开了远程管理,在运行invoke-command,即可成功 步

16. PowerShell -- 远程管理(2)

PowerShell2.0 远程管理之启用和执行命令 本文涉及的内容: 如何启用和禁用PowerShell的远程管理. 如何在工作组和混合域环境下配置计算机. 如何使用Invoke-Command cmdlet用于在远程主机上执行命令,创建持久线程,在多个命令间同一线程传递的变量和参数. 如何以后台任务的形式实现,用户可以在执行较费时的命令时使用它,并在执行完毕后使用命令回调执行结果. 1 启用和禁用远程管理 PowerShell2.0中能通过在PowerShell提示符下执行下列的cmdlet

15. PowerShell -- 远程管理

·         PowerShell中的远程管理:通过远程管理计算机,通过WinRM (Windows Remote Management) 起作用,它是基于微软的WS-Management协议的. ·         PowerShell 2.0远程管理的条件,必须安装以下软件(默认在windows 7, 2008 R2上安装),并且能够在XP SP3, Server 2003 SP2,Vista,2008 SP1-SP3上安装: 1. Windows PowerShell 2.0 2.

Microsoft Azure Web Sites应用与实践【2】—— 通过本地IIS 远程管理Microsoft Azure Web Site

Microsoft Azure Web Sites应用与实践 系列: [1]—— 打造你的第一个Microsoft Azure Website [2]—— 通过本地IIS 远程管理Microsoft Azure Web Site [3]—— 通过Visual Studio Online在线编辑Microsoft Azure 网站 通过本地IIS 远程管理Microsoft Azure Web Site 在上一篇博文中,我们介绍了Microsoft Azure Web Site的快速生成.假如您之

Powershell远程管理服务器&客户端(非mstsc远程连接)

Powershell远程管理采用一种新的通信协议,Web Services for Management,简称WS-MAN它通过http或者https进行工作,WS-WAN的实现主要基于一个后台服务:Windows远程管理(WinRM).Server2008R2中默认开启该服务,从Server2012开始,该服务便集成在系统中默认开启,Win7默认安装此服务,但是默认为禁用状态,Win8,Win10默认开启.这种远程连接不会被客户端察觉到,也不会占用远程连接数! 我们需要两台计算机进行测试,并且