PSCumulus
0.2.0
Cross-cloud PowerShell module for Azure, AWS, and GCP. Unified commands (Get-CloudInstance, Get-CloudStorage, etc.) return normalized objects with a consistent output shape across all three providers.
Minimum PowerShell version
5.1
Installation Options
Owners
Copyright
(c) Adil. All rights reserved.
Package Details
Author(s)
- Adil Leghari
Tags
PowerShell Cloud Azure AWS GCP MultiCloud DevOps
Functions
Connect-Cloud Disconnect-Cloud Get-CloudContext Get-CloudInstance Get-CloudStorage Get-CloudTag Get-CloudNetwork Get-CloudDisk Get-CloudFunction Start-CloudInstance Stop-CloudInstance
PSEditions
Dependencies
This module has no dependencies.
Release Notes
0.2.0
- Marked a major architectural step in PSCumulus: the module now follows the corrected Snover direction of a shared base record with vendor subclasses, and normalization owned by subclass factory methods
- Implemented Stage 2 for instance inventory: Get-CloudInstance now returns class-based Azure, AWS, and GCP instance records while preserving the PSCumulus.CloudRecord contract for formatting and pipeline use
- Promoted commonly-needed provider identity fields to first-class properties on instance records, including Azure ResourceGroup and VmId, AWS InstanceId, VpcId, and SubnetId, and GCP Project and Zone
- Retired the old Azure Ready fallback for missing power state and now emit Unknown so public instance status stays aligned with the semantic status model introduced in Stage 1
- Updated the roadmap, strategy, and about/help documentation so the module page and repo docs clearly describe the new object-model direction and the current stage of the evolution plan
0.1.2
- Added scoped Disconnect-Cloud for Azure, AWS, and GCP
- Get-CloudInstance now supports name filtering, detailed output, and richer instance metadata
- Cloud context now reads Current vs Connected, with friendlier Azure VM state handling
- Azure tenant/subscription support, AWS instance parsing, and CI docs/test stability were improved
0.1.1
- Added demo setup and talk materials with simulated multi-cloud data and richer examples
- Added CloudRecord Tags, Connect-Cloud array-provider support, and Get-CloudInstance -All
- Prepared the manifest and docs for PSGallery install flow
- Refined the normalization philosophy and docs to match the cross-cloud design
0.1.0
- Initial release with Connect-Cloud, Get-CloudContext, inventory commands, lifecycle commands, and normalized cross-cloud output
FileList
- PSCumulus.nuspec
- ANALYSIS2.md
- Classes\PSCumulus.Types.ps1
- LICENSE
- PSCumulus.Format.ps1xml
- PSCumulus.psd1
- PSCumulus.psm1
- Private\Assert-CloudTagArgument.ps1
- Private\Assert-CommandAvailable.ps1
- Private\Assert-GCloudAuthenticated.ps1
- Private\Assert-ProviderParameterSet.ps1
- Private\Connect-AWSBackend.ps1
- Private\Connect-AzureBackend.ps1
- Private\Connect-GCPBackend.ps1
- Private\ConvertFrom-AWSInstanceState.ps1
- Private\ConvertFrom-AzurePowerState.ps1
- Private\ConvertFrom-GCPInstanceStatus.ps1
- Private\ConvertTo-CloudRecord.ps1
- Private\Get-AWSDiskData.ps1
- Private\Get-AWSFunctionData.ps1
- Private\Get-AWSInstanceData.ps1
- Private\Get-AWSNetworkData.ps1
- Private\Get-AWSStorageData.ps1
- Private\Get-AWSTagData.ps1
- Private\Get-AzureDiskData.ps1
- Private\Get-AzureFunctionData.ps1
- Private\Get-AzureInstanceAddressData.ps1
- Private\Get-AzureInstanceData.ps1
- Private\Get-AzureNetworkData.ps1
- Private\Get-AzureStorageData.ps1
- Private\Get-AzureTagData.ps1
- Private\Get-CurrentCloudProvider.ps1
- Private\Get-GCPDiskData.ps1
- Private\Get-GCPFunctionData.ps1
- Private\Get-GCPInstanceData.ps1
- Private\Get-GCPNetworkData.ps1
- Private\Get-GCPStorageData.ps1
- Private\Get-GCPTagData.ps1
- Private\Get-GCloudProject.ps1
- Private\Invoke-CloudProvider.ps1
- Private\Invoke-GCloudJson.ps1
- Private\Invoke-GCloudLogin.ps1
- Private\Resolve-CloudInstanceInput.ps1
- Private\Resolve-CloudProvider.ps1
- Private\Resolve-CloudTagProvider.ps1
- Private\Start-AWSInstance.ps1
- Private\Start-AzureInstance.ps1
- Private\Start-GCPInstance.ps1
- Private\Stop-AWSInstance.ps1
- Private\Stop-AzureInstance.ps1
- Private\Stop-GCPInstance.ps1
- Private\Update-CloudContextActiveProvider.ps1
- Public\Connect-Cloud.ps1
- Public\Disconnect-Cloud.ps1
- Public\Get-CloudContext.ps1
- Public\Get-CloudDisk.ps1
- Public\Get-CloudFunction.ps1
- Public\Get-CloudInstance.ps1
- Public\Get-CloudNetwork.ps1
- Public\Get-CloudStorage.ps1
- Public\Get-CloudTag.ps1
- Public\Start-CloudInstance.ps1
- Public\Stop-CloudInstance.ps1
- README.md
- docs\concepts\evolution.md
- docs\concepts\strategy.md
- docs\getting-started.md
- docs\index.md
- docs\reference\about-pscumulus.md
- docs\reference\commands\Connect-Cloud.md
- docs\reference\commands\Disconnect-Cloud.md
- docs\reference\commands\Get-CloudContext.md
- docs\reference\commands\Get-CloudDisk.md
- docs\reference\commands\Get-CloudFunction.md
- docs\reference\commands\Get-CloudInstance.md
- docs\reference\commands\Get-CloudNetwork.md
- docs\reference\commands\Get-CloudStorage.md
- docs\reference\commands\Get-CloudTag.md
- docs\reference\commands\Start-CloudInstance.md
- docs\reference\commands\Stop-CloudInstance.md
- docs\reference\index.md
- docs\reference\module.md
- docs\talk-demo.md
- en-US\about_PSCumulus.help.txt
- mkdocs.yml
- requirements-docs.txt
- scripts\Update-Docs.ps1
- scripts\demo-setup.ps1
- talk\Background.png
- talk\PSHSummit26-Sponsors.png
- talk\cc-by-sa.png
- talk\date.png
- talk\github-qr.png
- talk\notes.md
- talk\powershell-summit-logo-top-left.png
- talk\powershell-summit-logo.png
- talk\presentation.html
- talk\presentation.md
- talk\psgallery-qr.png
- talk\summit-2026.css
- talk\talk-track.md
- tests\PSCumulus.Tests.ps1
- tests\Private\Assert-CloudTagArgument.Tests.ps1
- tests\Private\Assert-CommandAvailable.Tests.ps1
- tests\Private\Assert-GCloudAuthenticated.Tests.ps1
- tests\Private\Assert-ProviderParameterSet.Tests.ps1
- tests\Private\Connect-AWSBackend.Tests.ps1
- tests\Private\Connect-AzureBackend.Tests.ps1
- tests\Private\Connect-GCPBackend.Tests.ps1
- tests\Private\ConvertFrom-AWSInstanceState.Tests.ps1
- tests\Private\ConvertFrom-AzurePowerState.Tests.ps1
- tests\Private\ConvertFrom-GCPInstanceStatus.Tests.ps1
- tests\Private\ConvertTo-CloudRecord.Tests.ps1
- tests\Private\Get-AWSDiskData.Tests.ps1
- tests\Private\Get-AWSFunctionData.Tests.ps1
- tests\Private\Get-AWSInstanceData.Tests.ps1
- tests\Private\Get-AWSNetworkData.Tests.ps1
- tests\Private\Get-AWSStorageData.Tests.ps1
- tests\Private\Get-AWSTagData.Tests.ps1
- tests\Private\Get-AzureDiskData.Tests.ps1
- tests\Private\Get-AzureFunctionData.Tests.ps1
- tests\Private\Get-AzureInstanceData.Tests.ps1
- tests\Private\Get-AzureNetworkData.Tests.ps1
- tests\Private\Get-AzureStorageData.Tests.ps1
- tests\Private\Get-AzureTagData.Tests.ps1
- tests\Private\Get-GCPDiskData.Tests.ps1
- tests\Private\Get-GCPFunctionData.Tests.ps1
- tests\Private\Get-GCPInstanceData.Tests.ps1
- tests\Private\Get-GCPNetworkData.Tests.ps1
- tests\Private\Get-GCPStorageData.Tests.ps1
- tests\Private\Get-GCPTagData.Tests.ps1
- tests\Private\Get-GCloudProject.Tests.ps1
- tests\Private\Invoke-CloudProvider.Tests.ps1
- tests\Private\Invoke-GCloudJson.Tests.ps1
- tests\Private\PSCumulus.Types.Tests.ps1
- tests\Private\Start-AWSInstance.Tests.ps1
- tests\Private\Start-AzureInstance.Tests.ps1
- tests\Private\Start-GCPInstance.Tests.ps1
- tests\Private\Stop-AWSInstance.Tests.ps1
- tests\Private\Stop-AzureInstance.Tests.ps1
- tests\Private\Stop-GCPInstance.Tests.ps1
- tests\Private\StorageAndTagStubs.Tests.ps1
- tests\Public\Connect-Cloud.Tests.ps1
- tests\Public\Disconnect-Cloud.Tests.ps1
- tests\Public\Get-CloudContext.Tests.ps1
- tests\Public\Get-CloudDisk.Tests.ps1
- tests\Public\Get-CloudFunction.Tests.ps1
- tests\Public\Get-CloudInstance.Tests.ps1
- tests\Public\Get-CloudNetwork.Tests.ps1
- tests\Public\Get-CloudStorage.Tests.ps1
- tests\Public\Get-CloudTag.Tests.ps1
- tests\Public\Start-CloudInstance.Tests.ps1
- tests\Public\Stop-CloudInstance.Tests.ps1
- tests\Public\TestHelpers.ps1