> For the complete documentation index, see [llms.txt](https://docs.parallels.com/landing/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.parallels.com/landing/ras-cpf-integration-guide/custom-provider-framework/initial-configuration.md).

# Initial Configuration

Before running any test, edit CustomProvider.psd1 and configure the following values:

<table data-header-hidden="false" data-header-sticky><thead><tr><th>Value</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td>CommandPath</td><td>Full path to the script executable.</td><td><p>C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe</p><p> </p></td></tr><tr><td>CommandArgs</td><td>Arguments required by the executable.</td><td>-File "C:\Scripts\Proxmox.ps1"</td></tr><tr><td>CustomSettings</td><td>Hashtable containing any custom provider settings required by the script.</td><td>@{ token='secret' }</td></tr></tbody></table>

### Recommended test workflow

A practical way to validate a new custom provider implementation is to use the framework in the following order:

1. Run Test-Connect.ps1 to verify initialization and connectivity.
2. Run Test-GuestsList.ps1 and Test-GuestsGet.ps1 to confirm guest discovery and guest details.
3. Run Test-GuestsControl.ps1 to validate start, stop, reset, restart, suspend, or delete behavior.
4. If template support is implemented, run Test-GuestsConvert.ps1, Test-GuestsClone.ps1, and Test-TasksGet.ps1.
5. If linked clones or versioning support is implemented, validate snapshot create, exists, revert (only for template versioning), and delete operations.
6. Finally, run the high-level workflow tests such as Test-CreateTemplate.ps1, Test-EnterMaintenance.ps1, Test-ExitMaintenance.ps1, and Test-CreateHost.ps1 to simulate how RAS will use the provider in real scenarios.

The tests are grouped into logical categories based on functionality:

* Connection & Session
* Guest Operations
* Template & Clone Operations
* Snapshot Operations
* Task Monitoring
* End-to-End (High-Level) Workflows

### **Connection & Session Tests**

<table data-header-hidden="false" data-header-sticky><thead><tr><th>Script</th><th>Purpose</th><th>Description</th><th>Parameters</th></tr></thead><tbody><tr><td>Test-Connect.ps1</td><td>Initialize connection</td><td>Starts the provider, initializes protocol, validates custom settings</td><td>None</td></tr><tr><td>Test-Disconnect.ps1</td><td>Disconnect session</td><td>Ensures provider cleans up and shuts down properly</td><td>None</td></tr></tbody></table>

### **Guest Operations**

<table data-header-hidden="false" data-header-sticky><thead><tr><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Script</strong></td><td><strong>Purpose</strong></td><td><strong>Description</strong></td><td><strong>Parameters</strong></td></tr><tr><td>Test-GuestsList.ps1</td><td>List VMs</td><td>Retrieves all guest IDs from provider</td><td>None</td></tr><tr><td>Test-GuestsGet.ps1</td><td>Get VM details</td><td>Retrieves detailed information about a specific VM</td><td>GuestID (Required)</td></tr><tr><td>Test-GuestsControl.ps1</td><td>Control VM state</td><td>Executes power/state operations on a VM</td><td>GuestID (Required), Control (Required)</td></tr></tbody></table>

### **Template & Clone Operations**

<table data-header-hidden="false" data-header-sticky><thead><tr><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Script</strong></td><td><strong>Purpose</strong></td><td><strong>Description</strong></td><td><strong>Parameters</strong></td></tr><tr><td>Test-GuestsConvert.ps1</td><td>Convert VM/template</td><td>Converts VM ↔ template</td><td>GuestID (Required), IsTemplate (Optional)</td></tr><tr><td>Test-GuestsClone.ps1</td><td>Clone VM</td><td>Creates a new VM from template</td><td>GuestID (Required), CloneName (Required), SnapshotName (Optional)</td></tr></tbody></table>

### **Snapshot Operations**

<table data-header-hidden="false" data-header-sticky><thead><tr><th>Script</th><th>Purpose</th><th>Description</th><th>Parameters</th></tr></thead><tbody><tr><td>Test-GuestsSnapshotsCreate.ps1</td><td>Create snapshot</td><td>GuestID (Required), SnapshotName (Required)</td><td>Task ID</td></tr><tr><td>Test-GuestsSnapshotsDelete.ps1</td><td>Delete snapshot</td><td>GuestID (Required), SnapshotName (Required)</td><td>Task ID</td></tr><tr><td>Test-GuestsSnapshotsExists.ps1</td><td>Check snapshot</td><td>GuestID (Required), SnapshotName (Required)</td><td>True / False</td></tr><tr><td>Test-GuestsSnapshotsRevert.ps1</td><td>Revert snapshot</td><td>GuestID (Required), SnapshotName (Required)</td><td>Task ID</td></tr></tbody></table>

### **Task Monitoring**

<table data-header-hidden="false" data-header-sticky><thead><tr><th>Script</th><th>Purpose</th><th>Description</th><th>Parameters</th></tr></thead><tbody><tr><td>Test-TasksGet.ps1</td><td>Check task status</td><td>Retrieves status of async operation</td><td>TaskID (Required)</td></tr></tbody></table>

### **End-to-End Workflow Tests**

<table data-header-hidden="false" data-header-sticky><thead><tr><th>Script</th><th>Purpose</th><th>Description</th><th>Parameters</th></tr></thead><tbody><tr><td>Test-CreateTemplate.ps1</td><td>Create template</td><td>Converts VM to template and handles snapshots/versions</td><td>GuestID (Required)</td></tr><tr><td>Test-EnterMaintenance.ps1</td><td>Template → VM</td><td>Converts template to VM, may revert version</td><td>GuestID (Required), TemplateVersionID (Optional)</td></tr><tr><td>Test-ExitMaintenance.ps1</td><td>VM → Template</td><td>Converts VM back to template, may create new version</td><td>GuestID (Required), TemplateVersionID (Optional)</td></tr><tr><td>Test-CreateHost.ps1</td><td>Create host</td><td>Creates VM from template</td><td>GuestID (Required), CloneName (Required), TemplateVersionID (Optional)</td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.parallels.com/landing/ras-cpf-integration-guide/custom-provider-framework/initial-configuration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
