A PowerShell wrapper for the Xen Orchestra API.
This module provides PowerShell cmdlets for interacting with Xen Orchestra. It primarily uses the JSON-RPC API, with some cmdlets also utilizing the REST API where appropriate.
Install-Module InvokeBuild,PSDepend,Sampler -SkipPublisherCheckThe built module will be in the
otuputfolder
./build.ps1The session object needs to be passed to all cmdlets.
$Session = New-XoSession -Uri "https://xo.example.com" -Token "<Your Token>"Get-XoSessionGet-XoSession | Remove-XoSessionRemove-XoSession -Session $SessionGet-XoHost -Session $SessionGet-XoHost -Session $Session -Name "MyHost"Get-XoHost -Session $Session -Id "7d5550g5-527e-445b-1f7a-34d9ca0b7242"Enable-XoHost -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111"Disable-XoHost -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111"Disconnect-XoHost -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111"Invoke-XoHostEmergencyShutdown -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111"Remove-XoHost -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111"Get-XoHostBiosInfo -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111"Get-XoHostBlockDevice -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111"Get-XoHostIpmiSensor -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111"Get-XoHostMdadmHealth -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111"Get-XoHostSchedulerGranularity -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111"Get-XoHostSmartCtlHealth -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111"Restart-XoHost -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111"Restart-XoHostAgent -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111"Update-XoHost -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111" -NameDescription "Primary Host"Invoke-XoHostMaintenanceMode -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111"Start-XoHost -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111"Stop-XoHost -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111"This cmdlet returns the Type
VMby default.
Get-XoVirtualMachine -Session $SessionGet-XoVirtualMachine -Session $Session -Name "My VM"Get-XoVirtualMachine -Session $Session -Id "7d5550g5-527e-445b-1f7a-34d9ca0b7242"New-XoVirtualMachine -Session $Session -NameLabel "My New VM" -Template "4fb83780-2a39-2c1a-b185-734740d2962d" -Tag "VeryImportantTag"You can use
2GB,1MB,1TB,etc.. as powershell converts the value for you.
Update-XoVirtualMachine -Session $Session -Id "7d5550g5-527e-445b-1f7a-34d9ca0b7242" -NameDescription "Updated Vm Name" -Cpus 2 -Memory 2GBConvertTo-XoVirtualMachineTemplate -Session $Session -Id "06754190-adbf-46a9-ab00-558ffcc9a22f"Copy-XoVirtualMachine -Session $Session -Id "7d5550g5-527e-445b-1f7a-34d9ca0b7242" -Name "My New VM" -FullCopy:$true -WaitMount-XoVirtualMachineCD -Session $Session -Id "06754190-adbf-46a9-ab00-558ffcc9a22f" -CdId "21054190-afgt-14b6-ac10-558fgrc9b34g"Dismount-XoVirtualMachineCD -Session $Session -Id "06754190-adbf-46a9-ab00-558ffcc9a22f"Remove-XoVirtualMachine -Session $Session -Id "06754190-adbf-46a9-ab00-558ffcc9a22f" -DeleteDisks:$trueRestart-XoVirtualMachine -Session $Session -Id "06754190-adbf-46a9-ab00-558ffcc9a22f"Restore-XoVirtualMachineFromSnapshot -Session $Session -SnapshotId "06754190-adbf-46a9-ab00-558ffcc9a22f"Start-XoVirtualMachine -Session $Session -Id "06754190-adbf-46a9-ab00-558ffcc9a22f"Start-XoVirtualMachine -Session $Session -Id "06754190-adbf-46a9-ab00-558ffcc9a22f" -HostId "1235a452-84c6-4191-af66-3bc6e484ae09"Stop-XoVirtualMachine -Session $Session -Id "06754190-adbf-46a9-ab00-558ffcc9a22f"Suspend-XoVirtualMachine -Session $Session -Id "06754190-adbf-46a9-ab00-558ffcc9a22f"Resume-XoVirtualMachine -Session $Session -Id "06754190-adbf-46a9-ab00-558ffcc9a22f"
Idis the target VM Id
New-XoSnapshot -Session $Session -Id "06754190-adbf-46a9-ab00-558ffcc9a22f"Get-XoSnapshot -Session $SessionRemove-XoSnapshot -Session $Session -SnapshotId "06754190-adbf-46a9-ab00-558ffcc9a22f"Get-XoUser -Session $SessionGet-XoUser -Session $Session -Email "admin@admin.com"$password = $(ConvertTo-SecureString -String "MySecurePassword" -Force -AsPlainText)
New-XoUser -Session $Session -Email "admin@admin.com" -Password $password$password = $(ConvertTo-SecureString -String "MySecurePassword" -Force -AsPlainText)
New-XoUser -Session $Session -Email "admin@admin.com" -IsAdmin -Password $password$password = $(ConvertTo-SecureString -String "MySecurePassword" -Force -AsPlainText)
Update-XoUser -Session $Session -Email "admin@admin.com" -Password $passwordUpdate-XoUser -Session $Session -Email "admin@admin.com" -IsAdminRemove-XoUser -Session $Session-Id "06754190-adbf-46a9-ab00-558ffcc9a22f"Get-XoUser -Session $Session -Email "admin@admin.com" | Remove-XoUser -Session $SessionAdd-XoTag -Session $Session -Tag "Critical" -Id "06754190-adbf-46a9-ab00-558ffcc9a22f" -Color "#000000"$Color = $(Get-XoTagColor -TagColorId black).Color
Add-XoTag -Session $Session -Tag "Critical" -Id "06754190-adbf-46a9-ab00-558ffcc9a22f" -Color "$($Color)"Get-XoTag -Session $SessionGet-XoTag -Session $Session -Tag "Critical"Update-XoTag -Session $Session-Tag "Critical" -Color "#0000ff"$Color = $(Get-XoTagColor -TagColorId black).Color
Update-XoTag -Session $Session -Tag "Critical" -Color "$($Color)"Remove-XoTag -Session $Session -Tag"Critical" -Id "06754190-adbf-46a9-ab00-558ffcc9a22f"Get-XoTagColorGet-XoTask -Session $SessionNew-XoGroup -Session $Session -Name "MyGroup"Remove-XoGroup -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111"Get-XoGroup -Session $SessionGet-XoGroup -Session $Session -Name "MyGroup"Get-XoGroup -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111"Update-XoGroup -Session $Session -Name "MyNewGroupName"Add-XoGroupUser -Session $Session$ -Id "9ace51e1-dfbd-4617-8db3-88f28974e111" -UserId "06754190-adbf-46a9-ab00-558ffcc9a22f"
Add-XoGroupUser -Session $Session$ -Id "9ace51e1-dfbd-4617-8db3-88f28974e111" -UserId "06754190-adbf-46a9-ab00-558ffcc9a22f","12354190-adbf-46a9-ab00-558ffcc9a21g"Remove-XoGroupUser -Session $Session -Id "9ace51e1-dfbd-4617-8db3-88f28974e111" -UserId "06754190-adbf-46a9-ab00-558ffcc9a22f"Get-XoAcl -Session $SessionWhere object is te target object (VM, Network, Storage,Etc...) and subject is the user or group
New-XoAcl -Session $Session -Subject "8054b324-3c01-4g6a-5b0a-3e8ccdb8c454" -Object "cbdb27va-0ad1-972d-9532-dcg6b7rf95fd" -Action "admin"Remove-XoAcl -Session $Session -Subject "8054b336-3c07-4f6f-8b0a-3e8ccdb8c454" -Object "cbdb37be-0ad2-972a-9537-ccc6a7ff95fd" -Action "admin"Get-XoRemote -Session $SessionTest-XoRemote -Session $Session -Id "85eccfa2-5657-4709-9feb-391aaab5c6dd"New-XoRemote -Session $Session -Name "test" -Url "nfs://10.0.0.99:/mnt/MyShares/test"Update-XoRemote -Session $Session -Name "New Remote Name"Remove-XoRemote -Session $Session -Id "8054b336-3c07-4f6f-8b0a-3e8ccdb8c454"Get-XoServer -Session $SessionEnable-XoServer -Session $Session -Id "8054b336-3c07-4f6f-8b0a-3e8ccdb8c454"Disable-XoServer -Session $Session -Id "8054b336-3c07-4f6f-8b0a-3e8ccdb8c454"Remove-XoServer -Session $Session -Id "8054b336-3c07-4f6f-8b0a-3e8ccdb8c454"$secure = ConvertTo-SecureString -String "password" -AsPlainText -Force
$Creds = [pscredential]::new("username",$secure)
Add-XoServer -Session $Session -Server 10.0.1.10 -Credential $Creds -LabelName "Xen01" -AllowUnauthorizedCerts:$trueUpdate-XoServer -Session $Session -Id "19ee9e08-75a3-4aa0-a21b-208e6d779a92" -LabelName "Xen03"Get-XoRole -Session $SessionGet-XoSr -Session $SessionGet-XoSr -Session $Session -Name "MySR"Get-XoSr -Session $Session -Id "19ee9e08-75a3-4aa0-a21b-208e6d779a92"$MyHost = Get-XoHost -Session $Session -Name "xen01"
Register-XoSrNfs -Session $Session -HostId $MyHost.Id -Name "MyShare Test" -Descritpion "Test File Share" -Server "10.0.0.9" -ServerPath "/mnt/FileShares/test"Unregister-XoSr -Session $Session -Id "19ee9e08-75a3-4aa0-a21b-208e6d779a92" -Confirm:$falseRemove-XoSr -Session $Session -Id "19ee9e08-75a3-4aa0-a21b-208e6d779a92"Enable-XoSrMaintenanceMode -Session $Session -Id "a933cb47-fbf7-42a5-af39-abac9fc3feca"Disable-XoSrMaintenanceMode -Session $Session -Id "a933cb47-fbf7-42a5-af39-abac9fc3feca"Start-XoSrScan -Session $Session -Id "a933cb47-fbf7-42a5-af39-abac9fc3feca"Rename-XoSr -Session $Session Id "a933cb47-fbf7-42a5-af39-abac9fc3feca" -Name "MySR Test" -Descritpion "Test SR"Get-XoSchedule -Session $SessionGet-XoSchedule -Session $Session -Name "Daily"New-XoSchedule -Session $Session -Cron "0 0 * * *" -Name "Test"Remove-XoSchedule -Session $Session -Id "a933cb47-fbf7-42a5-af39-abac9fc3feca"Update-XoSchedule -Session $Session Id "a933cb47-fbf7-42a5-af39-abac9fc3feca" -Name "New Name"Get-XoPoolMissingPatch -Session $Session -HostId "9ace51e1-dfbd-4617-8db3-88f28974e111"Set-XoPoolDefaultSr -Session $Session -SrId "83c69122-1efc-8224-f7d4-c645e86936bc"Set-XoPoolMaster -Session $Session -HostId "9ace51e1-dfbd-4617-8db3-88f28974e111"