{"id":49665153,"url":"https://github.com/azurelocal/azurelocal-vm-hydration","last_synced_at":"2026-05-06T15:08:05.149Z","repository":{"id":346278865,"uuid":"1188545633","full_name":"AzureLocal/azurelocal-vm-hydration","owner":"AzureLocal","description":"Server hydration and VM reconnect tooling for onboarding physical and existing servers into Azure Local","archived":false,"fork":false,"pushed_at":"2026-04-28T21:53:09.000Z","size":63,"stargazers_count":0,"open_issues_count":9,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-28T22:27:41.707Z","etag":null,"topics":["azure-local","azure-stack-hci","azurelocal","hydration","powershell","server-onboarding","vm-reconnect"],"latest_commit_sha":null,"homepage":"http://azurelocal.cloud/azurelocal-vm-hydration/","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AzureLocal.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-22T08:27:04.000Z","updated_at":"2026-04-28T21:52:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/AzureLocal/azurelocal-vm-hydration","commit_stats":null,"previous_names":["azurelocal/azurelocal-hydration","azurelocal/azurelocal-vm-hydration"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AzureLocal/azurelocal-vm-hydration","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzureLocal%2Fazurelocal-vm-hydration","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzureLocal%2Fazurelocal-vm-hydration/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzureLocal%2Fazurelocal-vm-hydration/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzureLocal%2Fazurelocal-vm-hydration/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AzureLocal","download_url":"https://codeload.github.com/AzureLocal/azurelocal-vm-hydration/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzureLocal%2Fazurelocal-vm-hydration/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32699322,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T08:33:17.875Z","status":"ssl_error","status_checked_at":"2026-05-06T08:33:17.221Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure-local","azure-stack-hci","azurelocal","hydration","powershell","server-onboarding","vm-reconnect"],"created_at":"2026-05-06T15:08:03.900Z","updated_at":"2026-05-06T15:08:05.142Z","avatar_url":"https://github.com/AzureLocal.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# azurelocal-vm-hydration\n\n![Azure Local VM Hydration — Revive. Reconnect. Reclaim.](docs/assets/images/azurelocal-vm-hydration-banner.svg)\n\n[![Azure Local](https://img.shields.io/badge/Azure%20Local-azurelocal.cloud-0078D4?logo=microsoft-azure)](https://azurelocal.cloud)\n[![PSGallery](https://img.shields.io/badge/PSGallery-AzureLocalVMHydration-3b82f6?logo=powershell)](https://www.powershellgallery.com/packages/AzureLocalVMHydration)\n[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n[![Docs: MkDocs Material](https://img.shields.io/badge/docs-MkDocs%20Material-0f766e)](https://azurelocal.github.io/azurelocal-vm-hydration/)\n[![PowerShell: 7.x](https://img.shields.io/badge/PowerShell-7.x-3b82f6)](https://github.com/PowerShell/PowerShell)\n\nDocumentation: [azurelocal.github.io/azurelocal-vm-hydration](https://azurelocal.github.io/azurelocal-vm-hydration/) | Solutions: [azurelocal.cloud](https://azurelocal.cloud)\n\n\u003e *Revive. Reconnect. Reclaim.*\n\nPowerShell automation for adopting existing Hyper-V VMs into **Azure Local** management — without re-imaging or Sysprepping.\n\nCovers two scenarios:\n\n- **VM Hydration** — onboard an unmanaged Hyper-V VM *in place* using `az stack-hci-vm disk create-from-local`, registering it as a `Microsoft.AzureStackHCI/virtualMachineInstances` resource in Azure.\n- **VM Reconnect** — restore a VM to a *different* Azure Local cluster and re-project it into Azure using `az stack-hci-vm reconnect-to-azure`.\n\n\u003e **Private Preview**\n\u003e\n\u003e These scripts implement the Microsoft Azure Local VM Reconnect Private Preview procedure. Requirements and CLI commands may change before general availability. Use in production at your own risk.\n\n---\n\n## Prerequisites\n\n- Azure Local cluster running **2602 or later**\n- `az stack-hci-vm` extension **≥ 1.11.9**\n- VMs must reside in a storage path **GUID subfolder** (e.g., `C:\\ClusterStorage\\Volume1\\\u003cguid\u003e\\`)\n- VMs must be configured as **Highly Available** in Failover Cluster Manager\n- **Hyper-V Data Exchange Service (KVP)** and **Guest Service Interface** enabled on the VM\n- Run as **Administrator** on a cluster node\n\n---\n\n## PowerShell Module (recommended)\n\nInstall from PSGallery — works anywhere PowerShell 7 is available:\n\n```powershell\nInstall-Module AzureLocalVMHydration -Scope CurrentUser\n```\n\n### VM Hydration\n\n```powershell\nInvoke-VMHydration `\n    -VMName        'WEBSRV01' `\n    -ResourceGroup 'rg-azlocal-prod' `\n    -CustomLocation '/subscriptions/\u003csub\u003e/resourceGroups/\u003crg\u003e/providers/Microsoft.ExtendedLocation/customLocations/\u003ccl-name\u003e' `\n    -StoragePathId  '/subscriptions/\u003csub\u003e/resourceGroups/\u003crg\u003e/providers/Microsoft.AzureStackHCI/storageContainers/\u003cname\u003e' `\n    -NicName       'WEBSRV01-nic1' `\n    -SubnetId      'lnet-prod-vlan10' `\n    -Location      'eastus'\n```\n\n### VM Reconnect\n\n```powershell\nInvoke-VMReconnect `\n    -VMName        'APPSRV01' `\n    -LocalVMName   'APPSRV01_restored' `\n    -ResourceGroup 'rg-azlocal-prod' `\n    -CustomLocation '/subscriptions/\u003csub\u003e/resourceGroups/\u003crg\u003e/providers/Microsoft.ExtendedLocation/customLocations/\u003cdest-cl-name\u003e' `\n    -NicName       'APPSRV01-nic2' `\n    -SubnetId      'lnet-prod-vlan10' `\n    -Location      'eastus' `\n    -RemoveSourceVM\n```\n\n### Pre-flight Check Only\n\n```powershell\nTest-VMHydrationPrerequisites -VMName 'WEBSRV01'\n# Returns $true if all checks pass, $false if any fail\n```\n\n---\n\n## Standalone Scripts\n\nNo install required — run directly on a cluster node:\n\n```text\nscripts/\n├── helpers/\n│   ├── Common-Functions.ps1             # Shared logging and Azure CLI wrappers\n│   └── Test-HydrationPrerequisites.ps1  # Pre-flight checks (dot-sourced by both scripts)\n├── Invoke-VMHydration.ps1               # Hydrate an unmanaged VM in-place\n└── Invoke-VMReconnect.ps1               # Reconnect a VM after cross-cluster restore\n```\n\nBoth scripts support `-WhatIf` for dry runs. See [Getting Started](https://azurelocal.github.io/azurelocal-vm-hydration/getting-started/) for full parameter reference and examples.\n\n---\n\n## Configuration\n\nCopy `config/variables.example.yml` to `config/variables.yml` and fill in your environment values. `variables.yml` is gitignored — never commit it.\n\n---\n\n## Contributing\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for details.\n\n---\n\n## License\n\nSee [LICENSE](./LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazurelocal%2Fazurelocal-vm-hydration","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fazurelocal%2Fazurelocal-vm-hydration","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazurelocal%2Fazurelocal-vm-hydration/lists"}