1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
| 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:CurrentUserMy$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}}
}
}
|