68 lines
3.1 KiB
PowerShell
68 lines
3.1 KiB
PowerShell
|
function ConvertTo-Instance {
|
||
|
<#
|
||
|
.SYNOPSIS
|
||
|
Convert the Instance to something that displays neatly
|
||
|
|
||
|
.OUTPUTS
|
||
|
Returns a [object[]] of instances.
|
||
|
#>
|
||
|
[CmdletBinding()]
|
||
|
[OutputType([string[]])]
|
||
|
param (
|
||
|
[Parameter(Mandatory = $true, ValueFromPipeline = $true, Position = 0)]
|
||
|
[object]$Instance
|
||
|
)
|
||
|
begin {
|
||
|
$logLead = (Get-LogLeadName)
|
||
|
|
||
|
# Define the defaults for the DriveObject response to add some custom display information
|
||
|
$defaultTypeName = 'Instance'
|
||
|
$defaultKeys = @('InstanceId')
|
||
|
$defaultDisplaySet = @('InstanceId', 'Hostname', 'PrivateIpAddress', 'Designation', 'InstanceType', 'CaptureState', 'Region')
|
||
|
$defaultDisplayPropertySet = New-Object System.Management.Automation.PSPropertySet('DefaultDisplayPropertySet',[string[]]$defaultDisplaySet)
|
||
|
$defaultKeyPropertySet = New-Object System.Management.Automation.PSPropertySet('DefaultKeyPropertySet',[string[]]$defaultKeys)
|
||
|
$PSStandardMembers = [System.Management.Automation.PSMemberInfo[]]@($defaultDisplayPropertySet,$defaultKeyPropertySet)
|
||
|
|
||
|
$liveStateScript = { (Get-EC2Instance -InstanceId $this.InstanceId -ProfileName (Get-LocalCachedAWSProfile) -Region $this.Region).Instances.State.Name }
|
||
|
}
|
||
|
process {
|
||
|
try {
|
||
|
$instanceObject = New-Object PSCustomObject -Property @{
|
||
|
AvailabilityZone = $Instance.AvailabilityZone
|
||
|
CaptureState = $Instance.CaptureState.Value
|
||
|
CpuOptions = $Instance.CpuOptions
|
||
|
EnaSupport = $Instance.EnaSupport
|
||
|
IamInstanceProfile = $Instance.IamInstanceProfile
|
||
|
ImageId = $Instance.ImageId
|
||
|
InstanceId = $Instance.InstanceId
|
||
|
InstanceType = $Instance.InstanceType
|
||
|
NetworkInterfaces = $Instance.NetworkInterfaces
|
||
|
PrivateDnsName = $Instance.PrivateDnsName
|
||
|
PrivateIpAddress = $Instance.PrivateIpAddress
|
||
|
PublicDnsName = $Instance.PublicDnsName
|
||
|
PublicIpAddress = $Instance.PublicIpAddress
|
||
|
Region = $Instance.Region
|
||
|
SecurityGroups = $Instance.SecurityGroups
|
||
|
SubnetId = $Instance.SubnetId
|
||
|
VpcId = $Instance.VpcId
|
||
|
Tags = $Instance.Tags
|
||
|
Hostname = $Instance.Hostname
|
||
|
Designation = $Instance.Designation
|
||
|
DesignationTag = $Instance.DesignationTag
|
||
|
Role = $Instance.Role
|
||
|
Service = $Instance.Service
|
||
|
}
|
||
|
|
||
|
#Give this object a unique typename
|
||
|
$instanceObject.PSObject.TypeNames.Insert(0,$defaultTypeName)
|
||
|
$instanceObject | Add-Member -MemberType MemberSet -Name PSStandardMembers -Value $PSStandardMembers
|
||
|
$instanceObject | Add-Member -MemberType ScriptProperty -Name LiveState -Value $liveStateScript
|
||
|
|
||
|
return $instanceObject
|
||
|
} catch {
|
||
|
Write-Warning "$logLead : Could not convert item to Instance object. Check error below. Returning `$null"
|
||
|
Write-ErrorObject -ErrorItem $PSItem
|
||
|
return $null
|
||
|
}
|
||
|
}
|
||
|
}
|