Param (
[String] $WorkspaceId,
[String] $WorkspaceKey,
[String] $HybridRunbookWorkerGroupName,
[String] $AutomationAccountEndPointURL,
[String] $AutomationAccountToken
)
# Referencing existing OMS Workspace and Automation Account
# Check for the MMA on the machine
try {
$mma = New-Object -ComObject 'AgentConfigManager.MgmtSvcCfg'
Write-Output "Configuring the MMA..."
$mma.AddCloudWorkspace($WorkspaceID, $WorkspaceKey)
$mma.ReloadConfiguration()
} catch {
# Download the Microsoft monitoring agent
Write-Output "Downloading and installing the Microsoft Monitoring Agent..."
$Source = "http://download.microsoft.com/download/4/C/0/4C0C3A9A-E732-44B6-8955-6BD57B4866AA/MMASetup-AMD64.exe"
$Destination = "$env:temp\MMASetup.exe"
$null = Invoke-WebRequest -uri $Source -OutFile $Destination
$null = Unblock-File $Destination
# Change directory to location of the downloaded MMA
cd $env:temp
# Install the MMA
$Command = "/C:setup.exe /qn ADD_OPINSIGHTS_WORKSPACE=1 OPINSIGHTS_WORKSPACE_ID=$WorkspaceID" + " OPINSIGHTS_WORKSPACE_KEY=$WorkspaceKey " + " AcceptEndUserLicenseAgreement=1"
.\MMASetup.exe $Command
}
# Sleep until the MMA object has been registered
Write-Output "Waiting for agent registration to complete..."
# Timeout = 180 seconds = 3 minutes
$i = 18
do {
# Check for the MMA folders
try {
# Change the directory to the location of the hybrid registration module
cd "$env:ProgramFiles\Microsoft Monitoring Agent\Agent\AzureAutomation"
$version = (ls | Sort-Object LastWriteTime -Descending | Select -First 1).Name
cd "$version\HybridRegistration"
$HybridRegistrationPath = "$env:ProgramFiles\Microsoft Monitoring Agent\Agent\AzureAutomation\$version\HybridRegistration"
# Import the module
Import-Module $HybridRegistrationPath\HybridRegistration.psd1
# Mark the flag as true
$hybrid = $true
} catch{
$hybrid = $false
}
# Sleep for 10 seconds
Start-Sleep -s 10
$i--
} until ($hybrid -or ($i -le 0))
if ($i -le 0) {
Write-output "The HybridRegistration module was not found. Please ensure the Microsoft Monitoring Agent was correctly installed."
}
# Register the hybrid runbook worker
Write-Output "Registering the hybrid runbook worker..."
Add-HybridRunbookWorker -Name $HybridRunbookWorkerGroupName -EndPoint $AutomationAccountEndPointURL -Token $AutomationAccountToken
#Web Platform Installer URL
$WPISource = "https://download.microsoft.com/download/C/F/F/CFF3A0B8-99D4-41A2-AE1A-496C08BEB904/WebPlatformInstaller_amd64_en-US.msi"
#Web Platform Binary Location
$WPIDestination = "$env:temp\WebPlatformInstaller_amd64_en-US.msi"
do
{ Invoke-WebRequest -uri $WPISource -OutFile $WPIDestination
Write-Output "Web Platform Installer is downloaded"
Unblock-File $WPIDestination
#Change directory to location of the downloaded Web Platform Installer
cd $env:temp
#Install Web Platform Installer
$WPICommand = Start-Process $env:temp\WebPlatformInstaller_amd64_en-US.msi '/qn' -PassThru | Wait-Process;
Write-Output "Web Platform Installer is successfully installed"
sleep 5
$WPIPathCheck = Test-Path "C:\Program Files\Microsoft\Web Platform Installer\WebpiCmd-x64.exe"
}while($WPIPathCheck -ne "True")
#Installation of Azure Service Fabric
do
{$WPIPath = "C:\Program Files\Microsoft\Web Platform Installer\"
cd $WPIPath
$AzureSDKCommand = .\WebpiCmd.exe /Install /Products:MicrosoftAzure-ServiceFabric-CoreSDK /AcceptEULA /Log:C:/Packages/Plugins/Microsoft.Compute.CustomScriptExtension/1.9/WebpiCmd.log
Write-Output "Azure Service Fabric Core SDK is successfully installed"
sleep 5
$ServiceFabricPathCheck = Test-Path "C:\Program Files\Microsoft Service Fabric\bin\ServiceFabric\ServiceFabric.psd1"
}while($ServiceFabricPathCheck -ne "True")
#Installation of Azure Service Fabric SDK
$Destination = "$env:temp"
#Service Fabric SDK Installer URL
$ServiceFabricSDKSource = Invoke-WebRequest -uri "https://download.microsoft.com/download/2/9/E/29E129A2-5C20-46A6-83EB-A4958097DC2E/MicrosoftServiceFabricSDK.2.7.198.msi" -OutFile "$Destination\MicrosoftServiceFabricSDK.2.7.198.msi"
Write-Output "Azure Service Fabric SDK is downloaded"
Unblock-File "$Destination\MicrosoftServiceFabricSDK.2.7.198.msi"
do
{
#Install Azure Service Fabric SDK
$AzureSDKCommand = Start-Process $Destination\MicrosoftServiceFabricSDK.2.7.198.msi '/qn' -PassThru | Wait-Process;
$errcheck = $?
if($errcheck){
Write-Output "Azure Service Fabric SDK is successfully installed"
}
sleep 5
$ServiceFabricSDKPathCheck = Test-Path "C:\Program Files\Microsoft SDKs\Service Fabric\Tools\PSModule\ServiceFabricSDK\ServiceFabricSDK.psm1"
}while($ServiceFabricSDKPathCheck -ne "True")
#Installation of Azure Powershell
$Destination = "C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.9"
#Azure Powershell Installer URL
$AzurePSSource = Invoke-WebRequest -uri "http://aka.ms/azure-powershellget" -OutFile "$Destination\azure-powershell.4.3.1.msi"
Write-Output "Azure Powershell is downloaded"
Unblock-File "$Destination\azure-powershell.4.3.1.msi"
#Check Azure RM PS Module Location
$AzurePSPathCheck = Test-Path "C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ResourceManager\AzureResourceManager\AzureRM.Compute\AzureRM.Compute.psd1"
while($AzurePSPathCheck -ne "True"){
#Install Azure Powershell
$AzurePSCommand = Start-Process msiexec.exe '/I C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.9\azure-powershell.4.3.1.msi /quiet /passive /norestart' -WindowStyle Hidden
exit
}
No comments:
Post a Comment