Nutanix.Dataprotection.psd1

@{
    # Module manifest for Nutanix Nutanix.Dataprotection PowerShell module
    RootModule = 'Nutanix.Dataprotection.dll'
    
    # Version number of this module.
    ModuleVersion = "1.0.0"

    # ID used to uniquely identify this module
    GUID = '8bd6e99b-a648-4cf6-9165-053036f07717'

    # Author of this module
    Author = 'Nutanix'

    # Company or vendor of this module
    CompanyName = 'Nutanix'

    # Copyright statement for this module
    Copyright = '(c) Nutanix. All rights reserved.'

    # Description of the functionality provided by this module
    Description = 'Business Continuity with full spectrum of Disaster Recovery and Backup solution. Spanning across Single PC, Cross AZ, MultiSite. Configuration of Recovery points, Protection policies, Recovery Plans. Execution and monitoring of back up and recovery orchestrations on OnPrem as well as Cloud.'

    # Minimum version of the Windows PowerShell engine required by this module
    PowerShellVersion = '7.0'

    # Minimum version of the common language runtime (CLR) required by this module
    CLRVersion = '4.0'

    # Processor architecture (None, X86, Amd64) required by this module
    ProcessorArchitecture = 'None'

    # Functions to export from this module
    FunctionsToExport = @()

    # Cmdlets to export from this module
    # Export all cmdlets - use wildcard to include all generated cmdlets
    # This includes cmdlets like Get-VmById, Set-VmById, etc.
    # Connection management: Set-PrismCentralConfig (alias: Set-PcConfig), Clear-NutanixConfig
    CmdletsToExport = @('*')

    # Variables to export from this module
    VariablesToExport = '*'

    # Aliases to export from this module
    AliasesToExport = @()

    # List of all modules packaged with this module
    ModuleList = @()

    # List of all files packaged with this module
    FileList = @('LICENSE.txt')

    # Private data to pass to the module specified in RootModule/ModuleToProcess
    PrivateData = @{
        PSData = @{
            # Tags applied to this module
            Tags = @('Nutanix', 'API', 'REST', 'Cloud', 'Nutanix.Dataprotection')

            # A URL to the license for this module
            # LicenseUri =

            # A URL to the main website for this project
            ProjectUri = ''

            # A URL to an icon representing this module
            IconUri = 'https://www.nutanix.com/favicon-96x96.png'

            # ReleaseNotes of this module
            ReleaseNotes = @'
# Nutanix Nutanix.Dataprotection PowerShell Module v1.0.0

PowerShell module for managing Nutanix Nutanix.Dataprotection resources using the Nutanix.Dataprotection API.

### Features
- **Resource Operations**: Create, read, update, delete, and list operations
- **Device Management**: Manage various device types and configurations
- **Lifecycle Operations**: Power management, migration, cloning, and more
- **Dual Parameter Sets**: All cmdlets support both individual parameters and Request object patterns

### Quick Start

1. **Import the module**:
   ```powershell
   Import-Module Nutanix.Dataprotection
   ```

2. **Configure connection** (via Set-PrismCentralConfig or alias Set-PcConfig):
   ```powershell
   # Password is a mandatory SecureString parameter
   # If not provided, PowerShell will prompt for it securely
   
   # Option 1: Let PowerShell prompt (recommended for interactive use)
   Set-PcConfig -Host "10.46.8.20" -Username "admin" -SkipCertificateCheck
   # PowerShell prompts: Password: *******
   
   # Option 2: Explicitly provide SecureString password
   $password = Read-Host -AsSecureString -Prompt "Enter Password"
   Set-PcConfig -Host "10.46.8.20" -Username "admin" -Password $password -SkipCertificateCheck
   
   # Option 3: From PSCredential
   $credential = Get-Credential -UserName "admin"
   Set-PcConfig -Host "10.46.8.20" -Username $credential.UserName -Password $credential.Password -SkipCertificateCheck
   ```
   
   **Important:** Password is required. Without a valid password, API calls will fail with HTTP 401 Unauthorized.

3. **Use Nutanix.Dataprotection cmdlets**:
   ```powershell
   # Example: List resources
   Get-* -Limit_ 10
   
   # Example: Get resource by ID (Individual parameters)
   Get-*ById -ExtId "resource-uuid"
   
   # Example: Update resource (Individual parameters)
   Set-*ById -ExtId "resource-uuid" -Body $bodyObject -ETag "etag-value"
   
   # Example: Update resource (Request object)
   $request = New-Object Nutanix.Nutanix.DataprotectionSDK.Model.Request.*.*Request
   $request.extId = "resource-uuid"
   $request.body = $bodyObject
   Set-*ById -Request $request -ETag "etag-value"
   ```

4. **Clear configuration when done**:
   ```powershell
   Clear-NutanixConfig
   ```

### Requirements
- PowerShell 7.0 or higher
- .NET 8.0 Runtime
- Access to a Nutanix cluster with Nutanix.Dataprotection API enabled

### Parameter Sets

All cmdlets support two parameter sets:
- **Individual**: Accepts individual parameters (e.g., `-ExtId`, `-Body`)
- **Request**: Accepts a single Request object (e.g., `-Request`)

This provides flexibility for different use cases and enables better integration with other PowerShell workflows.

### Connection Management

- **Set-PrismCentralConfig** (or alias **Set-PcConfig**): Configure connection to Nutanix cluster
- **Clear-NutanixConfig**: Clear stored connection configuration
'@


            # Prerelease string
            Prerelease = ''

            # External dependent modules of this module
            # Nutanix.Dataprotection module is self-contained - connection management is handled via NutanixConfigBaseCmdlet
            ExternalModuleDependencies = @()
        }
    }

    # HelpInfo URI of this module
    HelpInfoURI = ''

    # Default prefix for commands exported from this module
    DefaultCommandPrefix = ''
}