mirror of
https://github.com/Grace-Solutions/PSProxmox.git
synced 2026-08-11 15:46:54 +00:00
d9bd620168
- Added optional -IncludeGuestAgent parameter to Get-ProxmoxVM cmdlet - Guest agent data retrieval is now optional for improved query performance - Default behavior: Fast queries without guest agent data - Use -IncludeGuestAgent switch when detailed network information is needed - Significant performance improvement for normal VM queries - Updated all documentation and examples to use new parameter - Fixed binary module structure by removing unnecessary PSD1 from bin folder - Version bump to 2025.05.30.2323 BREAKING CHANGE: Get-ProxmoxVM no longer fetches guest agent data by default. Existing scripts that rely on guest agent data must add -IncludeGuestAgent parameter.
277 lines
7.0 KiB
Markdown
277 lines
7.0 KiB
Markdown
# Get-ProxmoxVM
|
|
|
|
Gets virtual machines from Proxmox VE with comprehensive information including guest agent data.
|
|
|
|
## Syntax
|
|
|
|
```powershell
|
|
Get-ProxmoxVM
|
|
[-Connection <ProxmoxConnection>]
|
|
[-Node <String>]
|
|
[-VMID <Int32>]
|
|
[-Name <String>]
|
|
[-UseRegex]
|
|
[-RawJson]
|
|
[-IncludeGuestAgent]
|
|
[<CommonParameters>]
|
|
```
|
|
|
|
## Description
|
|
|
|
The `Get-ProxmoxVM` cmdlet retrieves virtual machines from Proxmox VE. You can retrieve all VMs, VMs on a specific node, or a specific VM by ID. Use the `-IncludeGuestAgent` parameter to fetch guest agent information, which provides detailed network interface information from within the guest operating system. Note that including guest agent data may slow down queries as it requires additional API calls.
|
|
|
|
## Parameters
|
|
|
|
### -Connection
|
|
|
|
The connection to the Proxmox VE server.
|
|
|
|
```yaml
|
|
Type: ProxmoxConnection
|
|
Parameter Sets: (All)
|
|
Aliases:
|
|
|
|
Required: False
|
|
Position: 0
|
|
Default value: None
|
|
Accept pipeline input: False
|
|
Accept wildcard characters: False
|
|
```
|
|
|
|
### -Node
|
|
|
|
The node to get VMs from. If not specified, VMs from all nodes will be returned.
|
|
|
|
```yaml
|
|
Type: String
|
|
Parameter Sets: (All)
|
|
Aliases:
|
|
|
|
Required: False
|
|
Position: Named
|
|
Default value: None
|
|
Accept pipeline input: False
|
|
Accept wildcard characters: False
|
|
```
|
|
|
|
### -VMID
|
|
|
|
The ID of the VM to get. If not specified, all VMs will be returned.
|
|
|
|
```yaml
|
|
Type: Int32
|
|
Parameter Sets: (All)
|
|
Aliases:
|
|
|
|
Required: False
|
|
Position: Named
|
|
Default value: None
|
|
Accept pipeline input: False
|
|
Accept wildcard characters: False
|
|
```
|
|
|
|
### -Name
|
|
|
|
The name of the virtual machine to retrieve. Supports wildcards and regex when used with -UseRegex.
|
|
|
|
```yaml
|
|
Type: String
|
|
Parameter Sets: (All)
|
|
Aliases:
|
|
|
|
Required: False
|
|
Position: 2
|
|
Default value: None
|
|
Accept pipeline input: False
|
|
Accept wildcard characters: True
|
|
```
|
|
|
|
### -UseRegex
|
|
|
|
Use regular expressions for filtering.
|
|
|
|
```yaml
|
|
Type: SwitchParameter
|
|
Parameter Sets: (All)
|
|
Aliases:
|
|
|
|
Required: False
|
|
Position: Named
|
|
Default value: False
|
|
Accept pipeline input: False
|
|
Accept wildcard characters: False
|
|
```
|
|
|
|
### -RawJson
|
|
|
|
Whether to return the raw JSON response instead of parsed objects.
|
|
|
|
```yaml
|
|
Type: SwitchParameter
|
|
Parameter Sets: (All)
|
|
Aliases:
|
|
|
|
Required: False
|
|
Position: Named
|
|
Default value: False
|
|
Accept pipeline input: False
|
|
Accept wildcard characters: False
|
|
```
|
|
|
|
### -IncludeGuestAgent
|
|
|
|
Whether to include guest agent information. This may slow down the query as it requires additional API calls.
|
|
|
|
```yaml
|
|
Type: SwitchParameter
|
|
Parameter Sets: (All)
|
|
Aliases:
|
|
|
|
Required: False
|
|
Position: Named
|
|
Default value: False
|
|
Accept pipeline input: False
|
|
Accept wildcard characters: False
|
|
```
|
|
|
|
### CommonParameters
|
|
|
|
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
|
|
|
|
## Inputs
|
|
|
|
### None
|
|
|
|
## Outputs
|
|
|
|
### PSProxmox.Models.ProxmoxVM
|
|
|
|
### System.String
|
|
|
|
## Notes
|
|
|
|
- This cmdlet requires a connection to a Proxmox VE server. Use `Connect-ProxmoxServer` to establish a connection.
|
|
- If no connection is specified, the cmdlet will use the default connection.
|
|
- If the `-RawJson` parameter is specified, the raw JSON response will be returned instead of parsed objects.
|
|
- If the `-VMID` parameter is specified and the VM is not found, an error will be thrown.
|
|
- The `-Name` parameter supports wildcards (e.g., "web*") by default.
|
|
- Use the `-UseRegex` parameter with `-Name` to filter using regular expressions (e.g., "^web[0-9]+$").
|
|
|
|
## Examples
|
|
|
|
### Example 1: Get all VMs
|
|
|
|
```powershell
|
|
Connect-ProxmoxServer -Server "proxmox.example.com" -Credential (Get-Credential)
|
|
$vms = Get-ProxmoxVM
|
|
```
|
|
|
|
This example gets all VMs from all nodes.
|
|
|
|
### Example 2: Get VMs on a specific node
|
|
|
|
```powershell
|
|
Connect-ProxmoxServer -Server "proxmox.example.com" -Credential (Get-Credential)
|
|
$vms = Get-ProxmoxVM -Node "pve1"
|
|
```
|
|
|
|
This example gets all VMs on the node "pve1".
|
|
|
|
### Example 3: Get a specific VM by ID
|
|
|
|
```powershell
|
|
Connect-ProxmoxServer -Server "proxmox.example.com" -Credential (Get-Credential)
|
|
$vm = Get-ProxmoxVM -VMID 100
|
|
```
|
|
|
|
This example gets the VM with ID 100.
|
|
|
|
### Example 4: Get VMs by name using wildcards
|
|
|
|
```powershell
|
|
Connect-ProxmoxServer -Server "proxmox.example.com" -Credential (Get-Credential)
|
|
$vms = Get-ProxmoxVM -Name "web*"
|
|
```
|
|
|
|
This example gets all VMs with names starting with "web".
|
|
|
|
### Example 5: Get VMs by name using regex
|
|
|
|
```powershell
|
|
Connect-ProxmoxServer -Server "proxmox.example.com" -Credential (Get-Credential)
|
|
$vms = Get-ProxmoxVM -Name "^web[0-9]+$" -UseRegex
|
|
```
|
|
|
|
This example gets all VMs with names matching the pattern "web" followed by one or more digits.
|
|
|
|
### Example 6: Get the raw JSON response
|
|
|
|
```powershell
|
|
Connect-ProxmoxServer -Server "proxmox.example.com" -Credential (Get-Credential)
|
|
$json = Get-ProxmoxVM -RawJson
|
|
```
|
|
|
|
This example gets the raw JSON response for all VMs.
|
|
|
|
### Example 7: Get VM with guest agent information
|
|
|
|
```powershell
|
|
Connect-ProxmoxServer -Server "proxmox.example.com" -Credential (Get-Credential)
|
|
$vm = Get-ProxmoxVM -VMID 100 -IncludeGuestAgent
|
|
|
|
# Check if guest agent is available and running
|
|
if ($vm.GuestAgent -and $vm.GuestAgent.Status -eq "running") {
|
|
Write-Host "Guest Agent is running"
|
|
|
|
# Display network interfaces from guest agent
|
|
foreach ($interface in $vm.GuestAgent.NetIf) {
|
|
Write-Host "Interface: $($interface.Name)"
|
|
Write-Host " IPv4 Addresses: $($interface.IPv4Addresses -join ', ')"
|
|
Write-Host " IPv6 Addresses: $($interface.IPv6Addresses -join ', ')"
|
|
Write-Host " MAC Address: $($interface.MacAddress)"
|
|
}
|
|
} else {
|
|
Write-Host "Guest Agent not available or not running"
|
|
}
|
|
```
|
|
|
|
This example gets a VM with guest agent information and displays network interface details.
|
|
|
|
### Example 8: Filter VMs with active guest agents
|
|
|
|
```powershell
|
|
Connect-ProxmoxServer -Server "proxmox.example.com" -Credential (Get-Credential)
|
|
$vmsWithGuestAgent = Get-ProxmoxVM -IncludeGuestAgent | Where-Object {
|
|
$_.GuestAgent -and $_.GuestAgent.Status -eq "running"
|
|
}
|
|
|
|
foreach ($vm in $vmsWithGuestAgent) {
|
|
Write-Host "$($vm.Name): $($vm.GuestAgent.NetIf.Count) network interfaces"
|
|
}
|
|
```
|
|
|
|
This example gets all VMs with guest agent information and filters those with active guest agents.
|
|
|
|
### Example 9: Performance comparison - with and without guest agent
|
|
|
|
```powershell
|
|
Connect-ProxmoxServer -Server "proxmox.example.com" -Credential (Get-Credential)
|
|
|
|
# Fast query without guest agent information
|
|
Measure-Command { $vms = Get-ProxmoxVM }
|
|
|
|
# Slower query with guest agent information
|
|
Measure-Command { $vmsWithGA = Get-ProxmoxVM -IncludeGuestAgent }
|
|
```
|
|
|
|
This example demonstrates the performance difference between queries with and without guest agent information.
|
|
|
|
## Related Links
|
|
|
|
- [Connect-ProxmoxServer](Connect-ProxmoxServer.md)
|
|
- [New-ProxmoxVM](New-ProxmoxVM.md)
|
|
- [Remove-ProxmoxVM](Remove-ProxmoxVM.md)
|
|
- [Start-ProxmoxVM](Start-ProxmoxVM.md)
|
|
- [Stop-ProxmoxVM](Stop-ProxmoxVM.md)
|
|
- [Restart-ProxmoxVM](Restart-ProxmoxVM.md)
|