New-AwsVM.ps1
<#PSScriptInfo .VERSION 1.20 .GUID 854b9a68-5718-4836-b04d-077e81d93d63 .AUTHOR Tiander Turpijn .COMPANYNAME .COPYRIGHT .TAGS .LICENSEURI .PROJECTURI .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES #> <# .DESCRIPTION Provisions a new Amazon Web Services (AWS) Virtual Machine #> #ToDO: #Change the default values for the following parameters if they do not match with yours: #AWSRegion, EC2ImageName, MinCount, MaxCount,InstanceType #Create an Azure Automation Asset called "AwsCred" #Turn on Log verbose records and optionally Log progress records under the runbook settings to see verbose messages and progress param ( [Parameter(Mandatory=$true)] [string]$VMname, [ValidateNotNullOrEmpty()] [string]$AWSRegion = "us-west-2", [ValidateNotNullOrEmpty()] [string]$EC2ImageName = "WINDOWS_2012R2_BASE", [ValidateNotNullOrEmpty()] [string]$MinCount = 1, [ValidateNotNullOrEmpty()] [string]$MaxCount = 1, [ValidateNotNullOrEmpty()] [string]$InstanceType = "t2.micro" ) # Get credentials to authenticate against AWS $AwsCred = Get-AutomationPSCredential -Name "AwsCred" $AwsAccessKeyId = $AwsCred.UserName $AwsSecretKey = $AwsCred.GetNetworkCredential().Password # Set up the AWS environment Write-Verbose "Authenticating against AWS..." Set-AWSCredentials -AccessKey $AwsAccessKeyId -SecretKey $AwsSecretKey -StoreAs AWSProfile Set-DefaultAWSRegion -Region $AWSRegion Write-Verbose "Getting AWS Image..." $ami = Get-EC2ImageByName $EC2ImageName -ProfileName AWSProfile -ErrorAction Stop #Check if our AWS image is valid If([string]::IsNullOrEmpty($ami)) { throw "No Image has been found!" } else { Write-Verbose ("The following image has been found: " + $ami.Name) } #Creating new VM Write-Verbose "Creating new AWS Instance..." $NewVM = New-EC2Instance ` -ImageId $ami.ImageId ` -MinCount $MinCount ` -MaxCount $MaxCount ` -InstanceType $InstanceType ` -ProfileName AWSProfile ` -ErrorAction Stop $InstanceID = $NewVM.Instances.InstanceID $NewVM #Applying VMName - also known as an AWS Tag Write-Verbose "Applying new VM Name...." New-EC2Tag -Resource $InstanceID -Tag @( @{ Key = "Name" ; Value = $VMname}) -ProfileName AWSProfile Write-Verbose ("Successfully created AWS VM: " + $VMname) |