├── CODEOWNERS.md
├── .idea
├── .gitignore
├── misc.xml
├── vcs.xml
├── markdown.xml
├── modules.xml
└── xoap-powershell-dsc-module-template.iml
├── .gitattributes
├── CONTRIBUTING.md
├── .github
├── reviewers.yml
├── ISSUE_TEMPLATE
│ ├── config.yml
│ ├── General.md
│ ├── Resource_proposal.yml
│ └── Problem_with_resource.yml
├── workflows
│ ├── commit-message-validator.yaml
│ ├── megalinter.yaml
│ ├── dependabot.yaml
│ ├── labelling.yaml
│ └── tagging.yaml
├── dependabot.yml
├── labeler.yml
└── PULL_REQUEST_TEMPLATE.md
├── docs
└── img
│ ├── 1.png
│ ├── 2.png
│ ├── 3.png
│ ├── 4.png
│ ├── 5.png
│ └── 6.png
├── .markdownlint.json
├── test
├── integration
│ └── default
│ │ ├── XOAPModuleTemplateDSC.Tests.ps1
│ │ └── XOAPRemoteDesktopServicesDSC.Tests.ps1
├── module.test.ps1
└── Boilerplate.Tests.ps1
├── Examples
├── DSCResources
│ ├── XOAP_NewRDSDeployment
│ │ └── XOAP_NewRDSDeployment.ps1
│ ├── XOAP_AddServerToCollection
│ │ └── XOAP_AddServerToCollection.ps1
│ ├── XOAP_AddServerToDeployment
│ │ └── XOAP_AddServerToDeployment.ps1
│ ├── XOAP_QuickStartConfiguration
│ │ └── XOAP_QuickStartConfiguration.ps1
│ ├── XOAP_ConfigureLicenseServer
│ │ └── XOAP_ConfigureLicenseServer.ps1
│ ├── XOAP_NewSessionHostCollection
│ │ └── XOAP_NewSessionHostCollection.ps1
│ ├── XOAP_ConfigureCertificateConfiguration
│ │ └── XOAP_ConfigureCertificateConfiguration.ps1
│ ├── XOAP_NewRemoteApp
│ │ └── XOAP_NewRemoteApp.ps1
│ └── XOAP_ConfigureSessionHostCollection
│ │ └── XOAP_ConfigureSessionHostCollection.ps1
└── XOAPRemoteDesktopServicesDSC.ps1
├── DSCResources
├── XOAP_NewRDSDeployment
│ ├── XOAP_NewRDSDeployment.schema.psm1
│ └── XOAP_NewRDSDeployment.psd1
├── XOAP_ConfigureLicenseServer
│ ├── XOAP_ConfigureLicenseServer.schema.psm1
│ └── XOAP_ConfigureLicenseServer.psd1
├── XOAP_ConfigureCertificateConfiguration
│ ├── XOAP_ConfigureCertificateConfiguration.schema.psm1
│ └── XOAP_ConfigureCertificateConfiguration.psd1
├── XOAP_AddServerToCollection
│ ├── XOAP_AddServerToCollection.schema.psm1
│ └── XOAP_AddServerToCollection.psd1
├── XOAP_AddServerToDeployment
│ ├── XOAP_AddServerToDeployment.schema.psm1
│ └── XOAP_AddServerToDeployment.psd1
├── XOAP_NewSessionHostCollection
│ ├── XOAP_NewSessionHostCollection.schema.psm1
│ └── XOAP_NewSessionHostCollection.psd1
├── XOAP_NewRemoteApp
│ ├── XOAP_NewRemoteApp.schema.psm1
│ └── XOAP_NewRemoteApp.psd1
├── XOAP_ConfigureSessionHostCollection
│ ├── XOAP_ConfigureSessionHostCollection.schema.psm1
│ └── XOAP_ConfigureSessionHostCollection.psd1
└── XOAP_RDSQuickStartConfiguration
│ ├── XOAP_RDSQuickStartConfiguration.psd1
│ └── XOAP_RDSQuickStartConfiguration.schema.psm1
├── LICENSE
├── .pre-commit-config.yaml
├── SECURITY.md
├── .vscode
├── settings.json
└── tasks.json
├── New-CompositeResource.ps1
├── templates
├── composite_resource
│ └── plasterManifest.xml
└── shared_module
│ └── plasterManifest.xml
├── .gitignore
├── XOAPRemoteDesktopServicesDSC.psd1
├── CODE_OF_CONDUCT.md
└── Readme.md
/CODEOWNERS.md:
--------------------------------------------------------------------------------
1 | @ssokolic
2 | @xoap_io
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | tbd
4 |
5 | ## Running the Tests
6 |
7 | tbd
8 |
--------------------------------------------------------------------------------
/.github/reviewers.yml:
--------------------------------------------------------------------------------
1 | reviewers:
2 | defaults:
3 | - repository-owners
4 | - bbrauneck
--------------------------------------------------------------------------------
/docs/img/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xoap-io/XOAPRemoteDesktopServicesDSC/HEAD/docs/img/1.png
--------------------------------------------------------------------------------
/docs/img/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xoap-io/XOAPRemoteDesktopServicesDSC/HEAD/docs/img/2.png
--------------------------------------------------------------------------------
/docs/img/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xoap-io/XOAPRemoteDesktopServicesDSC/HEAD/docs/img/3.png
--------------------------------------------------------------------------------
/docs/img/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xoap-io/XOAPRemoteDesktopServicesDSC/HEAD/docs/img/4.png
--------------------------------------------------------------------------------
/docs/img/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xoap-io/XOAPRemoteDesktopServicesDSC/HEAD/docs/img/5.png
--------------------------------------------------------------------------------
/docs/img/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xoap-io/XOAPRemoteDesktopServicesDSC/HEAD/docs/img/6.png
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.markdownlint.json:
--------------------------------------------------------------------------------
1 | {
2 | "default": true,
3 | "MD029": {
4 | "style": "one"
5 | },
6 | "MD013": true,
7 | "MD024": false,
8 | "MD034": false,
9 | "no-hard-tabs": true
10 | }
11 |
--------------------------------------------------------------------------------
/.idea/markdown.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 | contact_links:
3 | - name: "Virtual PowerShell User Group #DSC channel"
4 | url: https://dsccommunity.org/community/contact/
5 | about: "To talk to the community and maintainers of DSC Community, please visit the #DSC channel."
6 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/General.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: General question or documentation update
3 | about: If you have a general question or documentation update suggestion around the resource module.
4 | ---
5 |
6 |
9 |
--------------------------------------------------------------------------------
/.github/workflows/commit-message-validator.yaml:
--------------------------------------------------------------------------------
1 | name: Commit linter
2 | on:
3 | pull_request:
4 | branches: [main, master]
5 | jobs:
6 | commitlint:
7 | runs-on: ubuntu-latest
8 | steps:
9 | - uses: actions/checkout@v4
10 | with:
11 | fetch-depth: 0
12 | - uses: wagoid/commitlint-github-action@v5
13 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/xoap-powershell-dsc-module-template.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/test/integration/default/XOAPModuleTemplateDSC.Tests.ps1:
--------------------------------------------------------------------------------
1 | Describe 'When setting up a webserver' {
2 | Context 'to start the default website' {
3 |
4 | It 'verifies IIS is installed' {
5 | (Get-WindowsFeature web-server).installed | should be $true
6 | }
7 |
8 | It 'installs a default website' {
9 | Get-Website 'Default Web Site' | should not be $null
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/test/integration/default/XOAPRemoteDesktopServicesDSC.Tests.ps1:
--------------------------------------------------------------------------------
1 | Describe 'When setting up a webserver' {
2 | Context 'to start the default website' {
3 |
4 | It 'verifies IIS is installed' {
5 | (Get-WindowsFeature web-server).installed | should be $true
6 | }
7 |
8 | It 'installs a default website' {
9 | Get-Website 'Default Web Site' | should not be $null
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | ---
2 | version: 2
3 | updates:
4 | - package-ecosystem: github-actions
5 | directory: /
6 | target-branch: dev
7 | schedule:
8 | interval: daily
9 | labels:
10 | - github-actions
11 | - dependencies
12 | - package-ecosystem: terraform
13 | directory: /
14 | target-branch: dev
15 | schedule:
16 | interval: daily
17 | labels:
18 | - terraform
19 | - dependencies
20 |
--------------------------------------------------------------------------------
/.github/labeler.yml:
--------------------------------------------------------------------------------
1 | Feature:
2 | - head-branch: ['^feature', 'feature']
3 | Hotfix:
4 | - head-branch: ['^hotfix', 'hotfix']
5 | Documentation:
6 | - changed-files:
7 | - any-glob-to-any-file: '**/*.md'
8 | CICD:
9 | - changed-files:
10 | - any-glob-to-any-file: '.github/**'
11 |
12 | typescript:
13 | - changed-files:
14 | - any-glob-to-any-file: '**/*.ts'
15 | css:
16 | - changed-files:
17 | - any-glob-to-any-file: '**/*.css'
18 |
19 |
20 |
--------------------------------------------------------------------------------
/.github/workflows/megalinter.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | name: Linting files
3 | on:
4 | pull_request:
5 | branches: [main, master]
6 | concurrency:
7 | group: ${{ github.ref }}-${{ github.workflow }}
8 | cancel-in-progress: true
9 | jobs:
10 | build:
11 | name: MegaLinter
12 | runs-on: ubuntu-latest
13 | steps:
14 | - name: Checkout Code
15 | uses: actions/checkout@v4
16 | with:
17 | token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}
18 | fetch-depth: 0
19 |
--------------------------------------------------------------------------------
/Examples/DSCResources/XOAP_NewRDSDeployment/XOAP_NewRDSDeployment.ps1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAP_NewRDSDeployment'
2 | {
3 | Import-DscResource -ModuleName 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_NewRDSDeployment' -ModuleVersion '0.0.1'
4 |
5 | XOAP_NewRDSDeployment 'Example'
6 | {
7 | XOAP_NewRDSDeployment = 'Example'
8 | SessionHostName = 'hostname.domain.com'
9 | WebAccessServerName = 'webaccess.domain.com'
10 | }
11 | }
12 | XOAP_NewRDSDeployment -OutputPath 'C:\XOAP_NewRDSDeployment'
13 |
--------------------------------------------------------------------------------
/Examples/DSCResources/XOAP_AddServerToCollection/XOAP_AddServerToCollection.ps1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAP_AddServerToCollection'
2 | {
3 | Import-DSCResource -Module 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_QuickStartConfiguration' -ModuleVersion '0.0.1'
4 |
5 | XOAP_AddServerToCollection 'Example'
6 | {
7 | ConnectionBrokerName [String]= 'connectionbroker.domain.com'
8 | CollectionName [String]= 'Example'
9 | ServerName [String]= 'hostname.domain.com'
10 | }
11 | }
12 | XOAP_AddServerToCollection -OutputPath 'C:\XOAP_AddServerToCollection'
13 |
--------------------------------------------------------------------------------
/Examples/DSCResources/XOAP_AddServerToDeployment/XOAP_AddServerToDeployment.ps1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAP_AddServerToDeployment'
2 | {
3 | Import-DscResource -ModuleName 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_AddServerToDeployment' -ModuleVersion '0.0.1'
4 |
5 | XOAP_AddServerToDeployment 'Example'
6 | {
7 | ConnectionBrokerName [String]= 'connectionbroker.domain.com'
8 | Servername [String]= 'hostname.domain.com'
9 | ServerRole [String]= 'RDS-Virtualization'
10 | }
11 | }
12 | XOAP_AddServerToDeployment -OutputPath 'C:\XOAP_AddServerToDeployment'
13 |
--------------------------------------------------------------------------------
/Examples/DSCResources/XOAP_QuickStartConfiguration/XOAP_QuickStartConfiguration.ps1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAP_QuickConfiguration'
2 | {
3 | Import-DSCResource -Module 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_QuickStartConfiguration' -ModuleVersion '0.0.1'
4 |
5 | XOAP_QuickStartConfiguration 'Example'
6 | {
7 | ConnectionBrokerServerName = 'connectionbroker.domain.com'
8 | SessionHostServerName = 'hostname.domain.com'
9 | AllowedUserGroup = 'domain\group'
10 | }
11 | }
12 | XOAP_QuickStartConfiguration -OutputPath 'C:\XOAP_QuickStartConfiguration'
13 |
--------------------------------------------------------------------------------
/Examples/DSCResources/XOAP_ConfigureLicenseServer/XOAP_ConfigureLicenseServer.ps1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAP_ConfigureLicenseServer'
2 | {
3 | Import-DscResource -ModuleName 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_ConfigureLicenseServer' -ModuleVersion '0.0.1'
4 |
5 | XOAP_ConfigureLicenseServer 'Example'
6 | {
7 | ConnectionBrokerName [String]= 'connectionbroker.domain.com'
8 | LicenseServer [String]= 'licenseserver.domain.com'
9 | LicenseMode [String]= 'PerUser'
10 | }
11 | }
12 | XOAP_ConfigureLicenseServer -OutputPath 'C:\XOAP_ConfigureLicenseServer'
13 |
--------------------------------------------------------------------------------
/Examples/DSCResources/XOAP_NewSessionHostCollection/XOAP_NewSessionHostCollection.ps1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAP_NewSessionHostCollection'
2 | {
3 | Import-DscResource -ModuleName 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_NewSessionHostCollection' -ModuleVersion '0.0.1'
4 |
5 | XOAP_NewSessionHostCollection 'Example'
6 | {
7 | CollectionName = 'Example'
8 | SessionHosts = 'hostname.domain.com'
9 | CollectionDescription = 'Example'
10 | ConnectionBrokerName = 'connectionbroker.domain.com'
11 | }
12 | }
13 | XOAP_NewSessionHostCollection -OutputPath 'C:\XOAP_NewSessionHostCollection'
14 |
--------------------------------------------------------------------------------
/Examples/DSCResources/XOAP_ConfigureCertificateConfiguration/XOAP_ConfigureCertificateConfiguration.ps1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAP_ConfigureCertificateConfiguration'
2 | {
3 | Import-DscResource -ModuleName 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_ConfigureCertificateConfiguration' -ModuleVersion '0.0.1'
4 |
5 | XOAP_ConfigureCertificateConfiguration 'Example'
6 | {
7 | ConnectionBrokerName [String]= 'connectionbroker.domain.com'
8 | ImportPath [String]= 'hostname.domain.com'
9 | Role [String]= 'RDWebAccess'
10 | }
11 | }
12 | XOAP_ConfigureCertificateConfiguration -OutputPath 'C:\XOAP_ConfigureCertificateConfiguration'
13 |
--------------------------------------------------------------------------------
/Examples/DSCResources/XOAP_NewRemoteApp/XOAP_NewRemoteApp.ps1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAP_NewRemoteApp'
2 | {
3 | Import-DscResource -ModuleName 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_NewRemoteApp' -ModuleVersion '0.0.1'
4 |
5 | XOAP_NewRemoteApp 'Example'
6 | {
7 | Alias = 'Example'
8 | CollectionName = 'Example'
9 | Ensure = 'Present'
10 | DisplayName = 'Example'
11 | FilePath = 'C:\'
12 | FileVirtualPath = 'C:\'
13 | FolderName = 'Example'
14 | CommandLineSetting = 'Allow'
15 | RequiredCommandLine = 'C:\'
16 | IconIndex = '0'
17 | IconPath = 'C:\'
18 | UserGroups = 'domain\group'
19 | ShowInWebAccess = $true
20 | }
21 | }
22 | XOAP_NewRemoteApp -OutputPath 'C:\XOAP_NewRemoteApp'
23 |
--------------------------------------------------------------------------------
/DSCResources/XOAP_NewRDSDeployment/XOAP_NewRDSDeployment.schema.psm1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAP_NewRDSDeployment'
2 | {
3 | Import-DSCResource -ModuleName 'PSDesiredStateConfiguration'
4 | Import-DscResource -ModuleName 'xRemoteDesktopSessionHost' -ModuleVersion '2.1.0'
5 |
6 | param
7 | (
8 | [Parameter(Mandatory = $true)]
9 | [System.String]$ConnectionBrokerName,
10 | [Parameter(Mandatory = $true)]
11 | [System.String]$SessionHostName,
12 | [Parameter(Mandatory = $true)]
13 | [System.String]$WebAccessServerName
14 | )
15 |
16 | xRDSessionDeployment 'SessionDeployment'
17 | {
18 | SessionHost = $SessionHostName
19 | ConnectionBroker = $ConnectionBrokerName
20 | WebAccessServer = $WebAccessServerName
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/DSCResources/XOAP_ConfigureLicenseServer/XOAP_ConfigureLicenseServer.schema.psm1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAP_ConfigureLicenseServer'
2 | {
3 | Import-DSCResource -ModuleName 'PSDesiredStateConfiguration'
4 | Import-DscResource -ModuleName 'xRemoteDesktopSessionHost' -ModuleVersion '2.1.0'
5 |
6 | param
7 | (
8 | [Parameter(Mandatory = $true)]
9 | [System.String]$ConnectionBrokerName,
10 | [Parameter(Mandatory = $true)]
11 | [System.String]$LicenseServer,
12 | [Parameter(Mandatory = $true)]
13 | [ValidateSet('PerUser', 'PerDevice','NotConfigured')]
14 | [System.String]$LicenseMode
15 | )
16 |
17 | xRDLicenseConfiguration 'LicenseServerConfiguration'
18 | {
19 | ConnectionBroker = $ConnectionBrokerName
20 | LicenseServer = $LicenseServer
21 | LicenseMode = $LicenseMode
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Examples/XOAPRemoteDesktopServicesDSC.ps1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAPRemoteDesktopServicesDSC'
2 | {
3 | Import-DSCResource -Module 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_RDSQuickStartConfiguration' -ModuleVersion '0.0.1'
4 |
5 | param
6 | (
7 | [string[]]$ConnectionBrokerServerName = 'connectionbroker.domain.com'
8 | [string[]]$SessionHostServerName = 'sessionhost.domain.com'
9 | [string[]]$AllowedUserGroup = 'domain\group'
10 | )
11 |
12 | Node 'XOAPRemoteDesktopServicesDSC'
13 | {
14 | XOAP_RDSQuickStartConfiguration 'Example'
15 | {
16 | ConnectionBrokerServerName = $ConnectionBrokerServerName
17 | SessionHostServerName = $$SessionHostServerName
18 | AllowedUserGroup = $$AllowedUserGroup
19 | }
20 | }
21 | }
22 | XOAPRemoteDesktopServicesDSC -OutputPath 'C:\XOAPRemoteDesktopServicesDSC'
23 |
--------------------------------------------------------------------------------
/DSCResources/XOAP_ConfigureCertificateConfiguration/XOAP_ConfigureCertificateConfiguration.schema.psm1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAP_ConfigureCertificateConfiguration'
2 | {
3 | Import-DSCResource -ModuleName 'PSDesiredStateConfiguration'
4 | Import-DscResource -ModuleName 'xRemoteDesktopSessionHost' -ModuleVersion '2.1.0'
5 |
6 | param
7 | (
8 | [Parameter(Mandatory = $true)]
9 | [System.String]$ConnectionBrokerName,
10 | [Parameter(Mandatory = $true)]
11 | [System.String]$ImportPath,
12 | [Parameter(Mandatory = $true)]
13 | [ValidateSet('RDRedirector', 'RDPublishing', 'RDWebAccess', 'RDGateway')]
14 | [System.String]$role,
15 | [Parameter(Mandatory = $false)]
16 | [PSCredential]$Credential
17 | )
18 |
19 | xRDCertificateConfiguration 'XOAP_CertificateConfiguration'
20 | {
21 | ConnectionBroker = $ConnectionBrokerName
22 | Role = $role
23 | ImportPath = $ImportPath
24 | Credential = $Credential
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/.github/workflows/dependabot.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | name: Dependabot Pull Request Approve and Merge
3 | on: pull_request_target
4 | permissions:
5 | pull-requests: write
6 | contents: write
7 | jobs:
8 | dependabot:
9 | runs-on: ubuntu-latest
10 | if: ${{ github.actor == 'dependabot[bot]' }}
11 | steps:
12 | - name: Dependabot metadata
13 | id: dependabot-metadata
14 | uses: dependabot/fetch-metadata@v1.6.0
15 | with:
16 | github-token: ${{ secrets.GITHUB_TOKEN }}
17 | - name: Approve a PR
18 | run: gh pr review --approve "$PR_URL"
19 | env:
20 | PR_URL: ${{ github.event.pull_request.html_url }}
21 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
22 | - name: Enable auto-merge for Dependabot PRs
23 | if: ${{ steps.dependabot-metadata.outputs.update-type != 'version-update:semver-major' }}
24 | run: gh pr merge --auto --squash "$PR_URL"
25 | env:
26 | PR_URL: ${{ github.event.pull_request.html_url }}
27 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
28 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 XOAP.io
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/DSCResources/XOAP_AddServerToCollection/XOAP_AddServerToCollection.schema.psm1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAP_AddServerToCollection'
2 | {
3 | Import-DSCResource -ModuleName 'PSDesiredStateConfiguration'
4 |
5 | param
6 | (
7 | [Parameter(Mandatory = $true)]
8 | [System.String]$ConnectionBrokerName,
9 | [Parameter(Mandatory = $true)]
10 | [System.String]$CollectionName,
11 | [Parameter(Mandatory = $true)]
12 | [System.String]$ServerName
13 | )
14 |
15 | Script 'AddServerToCollection'
16 | {
17 | SetScript = {
18 | Import-Module -name 'RemoteDesktop'
19 | Add-RDSessionHost -SessionHost $using:ServerName -CollectionName $using:CollectionName -ConnectionBroker $using:ConnectionBrokerName
20 | }
21 | TestScript = {
22 | Import-Module -Name 'RemoteDesktop'
23 |
24 | if(!(Get-RDSessionHost -CollectionName $using:CollectionName | where-object {$_.SessionHost -eq $using:ServerName}))
25 | {
26 | return $false
27 | }
28 | else {return $true}
29 | }
30 | GetScript = {
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/.pre-commit-config.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | repos:
3 | - repo: https://github.com/compilerla/conventional-pre-commit
4 | rev: v2.4.0
5 | hooks:
6 | - id: conventional-pre-commit
7 | stages: [commit-msg]
8 | args: []
9 | - repo: https://github.com/pre-commit/pre-commit-hooks
10 | rev: v4.4.0
11 | hooks:
12 | - id: trailing-whitespace
13 | - id: end-of-file-fixer
14 | - id: check-yaml
15 | - id: check-added-large-files
16 | - id: check-builtin-literals
17 | - id: fix-byte-order-marker
18 | - id: check-json
19 | - id: check-xml
20 | - id: check-yaml
21 | - id: check-merge-conflict
22 | - id: check-shebang-scripts-are-executable
23 | - id: check-symlinks
24 | - id: mixed-line-ending
25 | - id: detect-private-key
26 | - id: no-commit-to-branch
27 | args:
28 | - -b master
29 | - id: no-commit-to-branch
30 | args:
31 | - -b main
32 | - repo: https://github.com/sirosen/check-jsonschema
33 | rev: 0.27.0
34 | hooks:
35 | - id: check-github-workflows
36 | - repo: https://github.com/pre-commit/mirrors-prettier
37 | rev: v3.0.3
38 | hooks:
39 | - id: prettier
40 | stages: [commit]
41 |
--------------------------------------------------------------------------------
/DSCResources/XOAP_AddServerToDeployment/XOAP_AddServerToDeployment.schema.psm1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAP_AddServerToDeployment'
2 | {
3 | Import-DSCResource -ModuleName 'PSDesiredStateConfiguration'
4 |
5 | param
6 | (
7 | [Parameter(Mandatory = $true)]
8 | [System.String]$ConnectionBrokerName,
9 | [Parameter(Mandatory = $true)]
10 | [System.String]$ServerName,
11 | [Parameter(Mandatory = $true)]
12 | [ValidateSet('RDS-Virtualization','RDS-RD-Server','RDS-Connection-Broker','RDS-Web-Access','RDS-Gateway','RDS-Licensing')]
13 | [System.String]$ServerRole
14 | )
15 |
16 | Script 'AddServerToTheDeployment'
17 | {
18 | SetScript =
19 | {
20 | Import-Module -name 'RemoteDesktop'
21 | Add-RDServer -Server $using:ServerName -Role $using:ServerRole -ConnectionBroker $using:ConnectionBrokerName
22 | }
23 | TestScript =
24 | {
25 | Import-Module -Name 'RemoteDesktop'
26 |
27 | if(!(Get-RDServer | where-object {$_.Server -eq $using:ServerName}))
28 | {
29 | return $false
30 | }
31 | else {return $true}
32 | }
33 | GetScript = {
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/.github/workflows/labelling.yaml:
--------------------------------------------------------------------------------
1 | name: label PRs
2 | on:
3 | pull_request:
4 | branches: [dev, master]
5 | jobs:
6 | size-label:
7 | needs: pr-reviewer
8 | permissions:
9 | contents: read
10 | pull-requests: write
11 | runs-on: ubuntu-latest
12 | steps:
13 | - name: size-label
14 | uses: "pascalgn/size-label-action@v0.5.0"
15 | env:
16 | GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
17 | with:
18 | sizes: >
19 | {
20 | "0": "XS",
21 | "20": "S",
22 | "50": "M",
23 | "200": "L",
24 | "800": "XL",
25 | "2000": "XXL"
26 | }
27 | - name: general-labels
28 | uses: actions/labeler@v5
29 | with:
30 | sync-labels: true
31 | pr-reviewer:
32 | permissions:
33 | contents: read
34 | pull-requests: write
35 | runs-on: ubuntu-latest
36 | steps:
37 | - name: Checkout
38 | uses: actions/checkout@v3
39 | with:
40 | token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}
41 | fetch-depth: 0
42 | - name: Request review and assign
43 | uses: necojackarc/auto-request-review@v0.13.0
44 | with:
45 | token: ${{ secrets.GITHUB_TOKEN }}
46 | config: .github/reviewers.yml
47 | use_local: true
48 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | # Description
2 |
3 | Please include a summary of the changes and the related issue. Please also include relevant motivation and context. List any dependencies that are required for this change.
4 |
5 | Fixes # (issue)
6 |
7 | ## Type of change
8 |
9 | Please delete options that are not relevant.
10 |
11 | - [ ] Bug fix (non-breaking change which fixes an issue)
12 | - [ ] New feature (non-breaking change which adds functionality)
13 | - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
14 | - [ ] This change requires a documentation update
15 |
16 | # How Has This Been Tested?
17 |
18 | Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration
19 |
20 | - [ ] Test A
21 | - [ ] Test B
22 |
23 |
24 | # Checklist:
25 |
26 | - [ ] My code follows the style guidelines of this project
27 | - [ ] I have performed a self-review of my code
28 | - [ ] I have commented my code, particularly in hard-to-understand areas
29 | - [ ] I have made corresponding changes to the documentation
30 | - [ ] My changes generate no new warnings
31 | - [ ] I have added tests or screenshots that prove my fix is effective or that my feature works
32 | - [ ] Any dependent changes have been merged and published in downstream modules
33 |
34 |
--------------------------------------------------------------------------------
/DSCResources/XOAP_NewSessionHostCollection/XOAP_NewSessionHostCollection.schema.psm1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAP_NewSessionHostCollection'
2 | {
3 | Import-DSCResource -ModuleName 'PSDesiredStateConfiguration'
4 | Import-DscResource -ModuleName 'xRemoteDesktopSessionHost' -ModuleVersion '2.1.0'
5 |
6 | param
7 | (
8 | [Parameter(Mandatory = $true)]
9 | [System.String]$CollectionName,
10 | [Parameter(Mandatory = $true)]
11 | [System.String]$SessionHosts,
12 | [Parameter(Mandatory = $false)]
13 | [System.String]$CollectionDescription,
14 | [Parameter(Mandatory = $false)]
15 | [System.String]$ConnectionBrokerName
16 | )
17 |
18 | Script 'CreateNewCollection'
19 | {
20 | SetScript =
21 | {
22 | Import-Module -name 'RemoteDesktop'
23 | New-RDSessionCollection -CollectionName $using:CollectionName -CollectionDescription $using:CollectionDescription -SessionHost $using:SessionHosts
24 | }
25 | TestScript = {
26 | Import-Module -Name 'RemoteDesktop'
27 |
28 | if(!(Get-RDSessionCollection | Where-Object {$_.CollectionName -eq $using:CollectionName}))
29 | {
30 | return $false
31 | }
32 | else {return $true}
33 | }
34 | GetScript = {
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 | ## Security
2 |
3 | XOAP takes the security of our modules seriously, which includes all source code repositories managed through our GitHub organization.
4 |
5 | If you believe you have found a security vulnerability in any XOAP owned repository, please report it to us as described below.
6 |
7 | ## Reporting Security Issues
8 |
9 | **Please do not report security vulnerabilities through public GitHub issues.**
10 |
11 | Instead, please report them to one or several members of the XOAP organization.
12 | The easiest way to do so is to send us a direct message via Twitter.
13 |
14 | You should receive a response within 48 hours. If for some reason you do not, please follow up to other members of the community.
15 |
16 | Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
17 |
18 | - Type of issue
19 | - Full paths of source file(s) related to the manifestation of the issue
20 | - The location of the affected source code (tag/branch/commit or direct URL)
21 | - Any special configuration required to reproduce the issue
22 | - Step-by-step instructions to reproduce the issue
23 | - Proof-of-concept or exploit code (if possible)
24 | - Impact of the issue, including how an attacker might exploit the issue
25 |
26 | This information will help us triage your report more quickly.
27 |
28 | ## Preferred Languages
29 |
30 | We prefer all communications to be in English.
31 |
--------------------------------------------------------------------------------
/Examples/DSCResources/XOAP_ConfigureSessionHostCollection/XOAP_ConfigureSessionHostCollection.ps1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAP_ConfigureSessionHostCollection'
2 | {
3 | Import-DscResource -ModuleName 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_ConfigureSessionHostCollection' -ModuleVersion '0.0.1'
4 |
5 | XOAP_ConfigureSessionHostCollection 'Example'
6 | {
7 | CollectionName = 'Example'
8 | AuthenticateUsingNLA = $true
9 | ActiveSessionLimit = 0
10 | AutomaticReconnectionEnabled = $true
11 | BrokenConnectionAction = 'None'
12 | ClientDeviceRedirectionOptions = 'None'
13 | ClientPrinterAsDefault = $true
14 | ClientPrinterRedirected = $true
15 | CollectionDescription = 'Example'
16 | ConnectionBroker = 'connectionbroker.domain.com'
17 | DisconnectedSessionLimit = 0
18 | EncryptionLevel = 'High'
19 | IdleSessionLimit = 0
20 | MaxRedirectedMonitors = 1
21 | RDEasyPrintDriverEnabled = $true
22 | SecurityLayer = 'SSL'
23 | TemporaryFoldersDeletedOnExit = $true
24 | UserGroup = 'domain\group'
25 | DiskPath = 'C:\'
26 | EnableUserProfileDisk = $true
27 | ExcludeFilePath = 'C:\'
28 | ExcludeFolderPath = 'C:\'
29 | IncludeFilePath = 'C:\'
30 | IncludeFolderPath = 'C:\'
31 | MaxUserProfileDiskSizeGB = 10
32 | }
33 | }
34 | XOAP_ConfigureSessionHostCollection -OutputPath 'C:\XOAP_ConfigureSessionHostCollection'
35 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "powershell.codeFormatting.openBraceOnSameLine": false,
3 | "powershell.codeFormatting.newLineAfterOpenBrace": true,
4 | "powershell.codeFormatting.newLineAfterCloseBrace": true,
5 | "powershell.codeFormatting.whitespaceBeforeOpenBrace": true,
6 | "powershell.codeFormatting.whitespaceBeforeOpenParen": true,
7 | "powershell.codeFormatting.whitespaceAroundOperator": true,
8 | "powershell.codeFormatting.whitespaceAfterSeparator": true,
9 | "powershell.codeFormatting.ignoreOneLineBlock": false,
10 | "powershell.codeFormatting.pipelineIndentationStyle": "IncreaseIndentationAfterEveryPipeline",
11 | "powershell.codeFormatting.preset": "Custom",
12 | "powershell.codeFormatting.alignPropertyValuePairs": true,
13 | "powershell.developer.bundledModulesPath": "${cwd}/output/RequiredModules",
14 | "powershell.scriptAnalysis.settingsPath": ".vscode\\analyzersettings.psd1",
15 | "powershell.scriptAnalysis.enable": true,
16 | "files.trimTrailingWhitespace": true,
17 | "files.trimFinalNewlines": true,
18 | "files.insertFinalNewline": true,
19 | "files.associations": {
20 | "*.ps1xml": "xml"
21 | },
22 | "cSpell.words": [
23 | "COMPANYNAME",
24 | "ICONURI",
25 | "LICENSEURI",
26 | "PROJECTURI",
27 | "RELEASENOTES",
28 | "buildhelpers",
29 | "endregion",
30 | "gitversion",
31 | "icontains",
32 | "keepachangelog",
33 | "notin",
34 | "pscmdlet",
35 | "steppable"
36 | ],
37 | "[markdown]": {
38 | "files.trimTrailingWhitespace": false,
39 | "files.encoding": "utf8"
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/.github/workflows/tagging.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | name: Create tag and release
3 |
4 | on:
5 | push:
6 | branches:
7 | - master
8 | - main
9 |
10 | jobs:
11 | tag:
12 | runs-on: ubuntu-latest
13 | steps:
14 | - name: Checkout
15 | uses: actions/checkout@v4
16 | with:
17 | token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}
18 | fetch-depth: 0
19 | - name: Github Tag with semantic versioning
20 | # You may pin to the exact commit or the version.
21 | # uses: hennejg/github-tag-action@2cd21a8413aa58e36a69cb22e64d5ad20aeb9b99
22 | id: tag_version
23 | uses: hennejg/github-tag-action@v4.4.0
24 | with:
25 | tag_prefix: ""
26 | # Required for permission to tag the repo.
27 | github_token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}
28 | - name: Zip Release
29 | # You may pin to the exact commit or the version.
30 | # uses: TheDoctor0/zip-release@09336613be18a8208dfa66bd57efafd9e2685657
31 | id: zip
32 | uses: TheDoctor0/zip-release@0.7.1
33 | with:
34 | type: 'zip'
35 | filename: 'XOAPRemoteDesktopServicesDSC_${{ steps.tag_version.outputs.new_tag }}.zip'
36 | exclusions: '*.git* /*License/* CONTRIBUTING.md CODEOWNERS.md CODE_OF_CONDUCT.md .pre-commit.yaml .gitignore .gitattributes .github /templates/* New-CompositeResource.ps1 /test/*'
37 | - name: Create a GitHub release
38 | uses: ncipollo/release-action@v1
39 | with:
40 | artifacts: 'XOAPRemoteDesktopServicesDSC_${{ steps.tag_version.outputs.new_tag }}.zip'
41 | tag: ${{ steps.tag_version.outputs.new_tag }}
42 | name: ${{ steps.tag_version.outputs.new_tag }}
43 | body: ${{ steps.tag_version.outputs.changelog }}
44 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/Resource_proposal.yml:
--------------------------------------------------------------------------------
1 | name: New resource proposal
2 | description: If you have a new resource proposal that you think should be added to this resource module.
3 | title: "NewResourceName: New resource proposal"
4 | labels: []
5 | assignees: []
6 | body:
7 | - type: markdown
8 | attributes:
9 | value: |
10 | Please replace `NewResourceName` in the issue title (above) with your proposed resource name.
11 |
12 | Thank you for contributing and making this resource module better!
13 | - type: textarea
14 | id: description
15 | attributes:
16 | label: Resource proposal
17 | description: Provide information how this resource will/should work and how it will help users.
18 | validations:
19 | required: true
20 | - type: textarea
21 | id: proposedProperties
22 | attributes:
23 | label: Proposed properties
24 | description: |
25 | List all the proposed properties that the resource should have (key, required, write, and/or read). For each property provide a detailed description, the data type, if a default value should be used, and if the property is limited to a set of values.
26 | value: |
27 | Property | Type qualifier | Data type | Description | Default value | Allowed values
28 | --- | --- | --- | --- | --- | ---
29 | PropertyName | Key | String | Detailed description | None | None
30 | validations:
31 | required: true
32 | - type: textarea
33 | id: considerations
34 | attributes:
35 | label: Special considerations or limitations
36 | description: |
37 | Provide any considerations or limitations you can think of that a contributor should take in account when coding the proposed resource, and or what limitations a user will encounter or should consider when using the proposed resource.
38 | validations:
39 | required: true
40 |
--------------------------------------------------------------------------------
/DSCResources/XOAP_NewRemoteApp/XOAP_NewRemoteApp.schema.psm1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAP_NewRemoteApp'
2 | {
3 | Import-DSCResource -ModuleName 'PSDesiredStateConfiguration'
4 | Import-DscResource -ModuleName 'xRemoteDesktopSessionHost' -ModuleVersion '2.1.0'
5 |
6 | param
7 | (
8 | [Parameter(Mandatory = $true)]
9 | [System.String]$Alias,
10 | [Parameter(Mandatory = $true)]
11 | [System.String]$CollectionName,
12 | [Parameter(Mandatory = $true)]
13 | [ValidateSet('Present','Absent')]
14 | [System.String]$Ensure,
15 | [Parameter(Mandatory = $true)]
16 | [System.String]$DisplayName,
17 | [Parameter(Mandatory = $true)]
18 | [System.String]$FilePath,
19 | [Parameter(Mandatory = $true)]
20 | [System.String]$FileVirtualPath,
21 | [Parameter(Mandatory = $false)]
22 | [System.String]$FolderName,
23 | [Parameter(Mandatory = $true)]
24 | [ValidateSet('Allow','DoNotAllow','Require')]
25 | [System.String]$CommandLineSetting,
26 | [Parameter(Mandatory = $false)]
27 | [System.String]$RequiredCommandLine,
28 | [Parameter(Mandatory = $false)]
29 | [System.String]$IconIndex,
30 | [Parameter(Mandatory = $false)]
31 | [System.String]$IconPath,
32 | [Parameter(Mandatory = $true)]
33 | [System.String]$UserGroups,
34 | [Parameter(Mandatory = $false)]
35 | [System.Boolean]$ShowInWebAccess
36 | )
37 |
38 | xRDRemoteApp 'RemoteApp'
39 | {
40 | Alias = $Alias
41 | CollectionName = $CollectionName
42 | Ensure = $Ensure
43 | DisplayName = $DisplayName
44 | FilePath = $FilePath
45 | FileVirtualPath = $FileVirtualPath
46 | FolderName = $FolderName
47 | CommandLineSetting = $CommandLineSetting
48 | RequiredCommandLine = $RequiredCommandLine
49 | IconIndex = $IconIndex
50 | UserGroups = $UserGroups
51 | ShowInWebAccess = $ShowInWebAccess
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/test/module.test.ps1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAPRemoteDesktopServicesDSC'
2 | {
3 | Import-DSCResource -Module 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_AddServerToCollection' -ModuleVersion '0.0.1'
4 | Import-DSCResource -Module 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_AddServerToDeployment' -ModuleVersion '0.0.1'
5 | Import-DSCResource -Module 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_ConfigureCertificateConfiguration' -ModuleVersion '0.0.1'
6 | Import-DSCResource -Module 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_ConfigureLicenseServer' -ModuleVersion '0.0.1'
7 | Import-DSCResource -Module 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_ConfigureSesseionHostCollection' -ModuleVersion '0.0.1'
8 | Import-DSCResource -Module 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_NewRDSDeployment' -ModuleVersion '0.0.1'
9 | Import-DSCResource -Module 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_NewRemoteApp' -ModuleVersion '0.0.1'
10 | Import-DSCResource -Module 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_NewSessionHostCollection' -ModuleVersion '0.0.1'
11 | Import-DSCResource -Module 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_QuickStartConfiguration' -ModuleVersion '0.0.1'
12 |
13 | Node 'XOAPRemoteDesktopServicesDSC'
14 | {
15 | XOAP_AddServerToCollection 'AddServerToCollection'
16 | {
17 | }
18 | XOAP_AddServerToDeployment 'AddServerToDeployment'
19 | {
20 | }
21 | XOAP_ConfigureCertificateConfiguration 'ConfigureCertificateConfiguration'
22 | {
23 | }
24 | XOAP_ConfigureLicenseServer 'ConfigureLicenseServer'
25 | {
26 | }
27 | XOAP_ConfigureSesseionHostCollection 'ConfigureSesseionHostCollection'
28 | {
29 | }
30 | XOAP_NewRDSDeployment 'NewRDSDeployment'
31 | {
32 | }
33 | XOAP_NewRemoteApp 'NewRemoteApp'
34 | {
35 | }
36 | XOAP_NewSessionHostCollection 'NewSessionHostCollection'
37 | {
38 | }
39 | XOAP_QuickStartConfiguration 'QuickStartConfiguration'
40 | {
41 | }
42 | }
43 | }
44 | XOAPRemoteDesktopServicesDSC -OutputPath 'C:\XOAPRemoteDesktopServicesDSC'
45 |
--------------------------------------------------------------------------------
/New-CompositeResource.ps1:
--------------------------------------------------------------------------------
1 | #Requires -Modules @{ ModuleName="Plaster"; ModuleVersion="1.1.3" }
2 |
3 | [CmdletBinding()]
4 | param (
5 | [Parameter(Mandatory=$true)]
6 | [ValidateNotNullOrEmpty()]
7 | [string]
8 | $Module,
9 | [Parameter(Mandatory=$true)]
10 | [ValidateNotNullOrEmpty()]
11 | [string]
12 | $Version,
13 | [Parameter(Mandatory=$true)]
14 | [ValidateNotNullOrEmpty()]
15 | [string]
16 | $Ressource,
17 | [Parameter()]
18 | [ValidateNotNullOrEmpty()]
19 | [string]
20 | $Company = "RIS AG"
21 | )
22 |
23 | $globalPrefix = "XOAP"
24 | $curDirectory = Resolve-Path .\
25 | $templatePath = Join-Path $curDirectory "templates"
26 | $rootModulePath = Resolve-Path .\source
27 | $Module = "${globalPrefix}${Module}DSC"
28 | $modulePath = Join-Path $rootModulePath "$Module"
29 | $moduleVersionPath = Join-Path $modulePath $Version
30 | $moduleRessources = Join-Path $moduleVersionPath "DSCResources"
31 | $ressourcePath = Join-Path $moduleRessources $Ressource
32 |
33 |
34 | Write-Output "Checking if module $Module already exists under $moduleVersionPath"
35 |
36 | if(Test-Path "$moduleVersionPath")
37 | {
38 | Write-Output "Module $Module with version $Version already exists. Continuing."
39 | }
40 | else
41 | {
42 | Write-Warning "Module $Module with version $Version does not exist. Creating new module. Please provide missing data."
43 | $template = Join-Path $templatePath "shared_module"
44 | $moduleData = @{
45 | project_name = $Module
46 | version = $Version
47 | company = $Company
48 | TemplatePath = "$template"
49 | DestinationPath = "$moduleVersionPath"
50 | }
51 |
52 | Invoke-Plaster @moduleData
53 | }
54 |
55 |
56 | Write-Output "Going to check if ressource $Ressource exists under $ressourcePath"
57 |
58 | if(Test-Path "$ressourcePath")
59 | {
60 | Write-Error "Ressource $Ressource already exists. Aborting"
61 | }
62 | else
63 | {
64 | Write-Output "Creating new ressource $Ressource for module $Module"
65 | $template = Join-Path $templatePath "composite_resource"
66 | $moduleData = @{
67 | project_name = "${Ressource}"
68 | version = "0.0.1"
69 | company = $Company
70 | TemplatePath = "$template"
71 | DestinationPath = "$ressourcePath"
72 | }
73 |
74 | Invoke-Plaster @moduleData
75 | }
76 |
--------------------------------------------------------------------------------
/test/Boilerplate.Tests.ps1:
--------------------------------------------------------------------------------
1 | $Global:DSCResourceName = 'My_DSCResource' #<----- Just change this
2 |
3 | Import-Module "$($PSScriptRoot)\..\..\DSCResources\$($Global:DSCResourceName)\$($Global:DSCResourceName).psm1" -Force
4 |
5 | # Helper function to list the names of mandatory parameters of *-TargetResource functions
6 | Function Get-MandatoryParameter {
7 | [CmdletBinding()]
8 | Param(
9 | [Parameter(Mandatory=$True)]
10 | [string]$CommandName
11 | )
12 | $GetCommandData = Get-Command "$($Global:DSCResourceName)\$CommandName"
13 | $MandatoryParameters = $GetCommandData.Parameters.Values | Where-Object { $_.Attributes.Mandatory -eq $True }
14 | return $MandatoryParameters.Name
15 | }
16 |
17 | # Getting the names of mandatory parameters for each *-TargetResource function
18 | $GetMandatoryParameter = Get-MandatoryParameter -CommandName "Get-TargetResource"
19 | $TestMandatoryParameter = Get-MandatoryParameter -CommandName "Test-TargetResource"
20 | $SetMandatoryParameter = Get-MandatoryParameter -CommandName "Set-TargetResource"
21 |
22 | # Splatting parameters values for Get, Test and Set-TargetResource functions
23 | $GetParams = @{
24 |
25 | }
26 | $TestParams = @{
27 |
28 | }
29 | $SetParams = @{
30 |
31 | }
32 |
33 | Describe "$($Global:DSCResourceName)\Get-TargetResource" {
34 |
35 | $GetReturn = & "$($Global:DSCResourceName)\Get-TargetResource" @GetParams
36 |
37 | It "Should return a hashtable" {
38 | $GetReturn | Should BeOfType System.Collections.Hashtable
39 | }
40 | Foreach ($MandatoryParameter in $GetMandatoryParameter) {
41 |
42 | It "Should return a hashtable with key named $MandatoryParameter" {
43 | $GetReturn.ContainsKey($MandatoryParameter) | Should Be $True
44 | }
45 | }
46 | }
47 |
48 | Describe "$($Global:DSCResourceName)\Test-TargetResource" {
49 |
50 | $TestReturn = & "$($Global:DSCResourceName)\Test-TargetResource" @TestParams
51 |
52 | It "Should have the same mandatory parameters as Get-TargetResource" {
53 | # Does not check for $True or $False but uses the output of Compare-Object.
54 | # That way, if this test fails Pester will show us the actual difference(s).
55 | (Compare-Object $GetMandatoryParameter $TestMandatoryParameter).InputObject | Should Be $Null
56 | }
57 | It "Should return a boolean" {
58 | $TestReturn | Should BeOfType System.Boolean
59 | }
60 | }
61 |
62 | Describe "$($Global:DSCResourceName)\Set-TargetResource" {
63 |
64 | $SetReturn = & "$($Global:DSCResourceName)\Set-TargetResource" @SetParams
65 |
66 | It "Should have the same mandatory parameters as Test-TargetResource" {
67 | (Compare-Object $TestMandatoryParameter $SetMandatoryParameter).InputObject | Should Be $Null
68 | }
69 | It "Should not return anything" {
70 | $SetReturn | Should Be $Null
71 | }
72 |
--------------------------------------------------------------------------------
/templates/composite_resource/plasterManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 | PowershellDSCResource
6 | 14f99429-b25c-45e0-be57-e43666652ab5
7 | <<<<<<< HEAD
8 | 0.0.1
9 | PowershellDSCResource
10 |
11 | XOAP.io
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | =======
21 | 1.0.0
22 | PowershellDSCResource
23 |
24 | XOAP
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 | >>>>>>> 4399465de143dea55a2d64c24e8e4a6ef018f740
34 |
35 |
36 | Creating new module manifest for ${PLASTER_PARAM_project_name}
37 |
44 | <<<<<<< HEAD
45 | =======
46 | Copying schema template
47 |
48 | >>>>>>> 4399465de143dea55a2d64c24e8e4a6ef018f740
49 |
50 |
--------------------------------------------------------------------------------
/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0.0",
3 | "_runner": "terminal",
4 | "windows": {
5 | "options": {
6 | "shell": {
7 | "executable": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
8 | "args": ["-NoProfile", "-ExecutionPolicy", "Bypass", "-Command"]
9 | }
10 | }
11 | },
12 | "linux": {
13 | "options": {
14 | "shell": {
15 | "executable": "/usr/bin/pwsh",
16 | "args": ["-NoProfile", "-Command"]
17 | }
18 | }
19 | },
20 | "osx": {
21 | "options": {
22 | "shell": {
23 | "executable": "/usr/local/bin/pwsh",
24 | "args": ["-NoProfile", "-Command"]
25 | }
26 | }
27 | },
28 | "tasks": [
29 | {
30 | "label": "build",
31 | "type": "shell",
32 | "command": "&${cwd}/build.ps1",
33 | "args": [],
34 | "presentation": {
35 | "echo": true,
36 | "reveal": "always",
37 | "focus": true,
38 | "panel": "new",
39 | "clear": false
40 | },
41 | "runOptions": {
42 | "runOn": "default"
43 | },
44 | "problemMatcher": [
45 | {
46 | "owner": "powershell",
47 | "fileLocation": ["absolute"],
48 | "severity": "error",
49 | "pattern": [
50 | {
51 | "regexp": "^\\s*(\\[-\\]\\s*.*?)(\\d+)ms\\s*$",
52 | "message": 1
53 | },
54 | {
55 | "regexp": "(.*)",
56 | "code": 1
57 | },
58 | {
59 | "regexp": ""
60 | },
61 | {
62 | "regexp": "^.*,\\s*(.*):\\s*line\\s*(\\d+).*",
63 | "file": 1,
64 | "line": 2
65 | }
66 | ]
67 | }
68 | ]
69 | },
70 | {
71 | "label": "test",
72 | "type": "shell",
73 | "command": "&${cwd}/build.ps1",
74 | "args": ["-AutoRestore", "-Tasks", "test"],
75 | "presentation": {
76 | "echo": true,
77 | "reveal": "always",
78 | "focus": true,
79 | "panel": "dedicated",
80 | "showReuseMessage": true,
81 | "clear": false
82 | },
83 | "problemMatcher": [
84 | {
85 | "owner": "powershell",
86 | "fileLocation": ["absolute"],
87 | "severity": "error",
88 | "pattern": [
89 | {
90 | "regexp": "^\\s*(\\[-\\]\\s*.*?)(\\d+)ms\\s*$",
91 | "message": 1
92 | },
93 | {
94 | "regexp": "(.*)",
95 | "code": 1
96 | },
97 | {
98 | "regexp": ""
99 | },
100 | {
101 | "regexp": "^.*,\\s*(.*):\\s*line\\s*(\\d+).*",
102 | "file": 1,
103 | "line": 2
104 | }
105 | ]
106 | }
107 | ]
108 | }
109 | ]
110 | }
111 |
--------------------------------------------------------------------------------
/templates/shared_module/plasterManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 | PowershellDSCModule
6 | 76d2fef8-679c-44d8-8d99-1d35c77f9c0d
7 | <<<<<<< HEAD
8 | 0.0.1
9 | PowershellDSCModule
10 |
11 | XOAP.io
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | =======
21 | 1.0.0
22 | PowershellDSCModule
23 |
24 | XOAP
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 | >>>>>>> 4399465de143dea55a2d64c24e8e4a6ef018f740
34 |
35 |
36 |
37 | Scaffold a PowerShell Module with the files required to run Pester tests.
38 |
39 |
40 |
46 | <<<<<<< HEAD
47 | =======
48 |
49 |
50 |
51 |
52 |
53 | >>>>>>> 4399465de143dea55a2d64c24e8e4a6ef018f740
54 |
55 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
2 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
3 |
4 | # User-specific stuff
5 | .idea/**/workspace.xml
6 | .idea/**/tasks.xml
7 | .idea/**/usage.statistics.xml
8 | .idea/**/dictionaries
9 | .idea/**/shelf
10 |
11 | # AWS User-specific
12 | .idea/**/aws.xml
13 |
14 | # Generated files
15 | .idea/**/contentModel.xml
16 |
17 | # Sensitive or high-churn files
18 | .idea/**/dataSources/
19 | .idea/**/dataSources.ids
20 | .idea/**/dataSources.local.xml
21 | .idea/**/sqlDataSources.xml
22 | .idea/**/dynamic.xml
23 | .idea/**/uiDesigner.xml
24 | .idea/**/dbnavigator.xml
25 |
26 | # Gradle
27 | .idea/**/gradle.xml
28 | .idea/**/libraries
29 |
30 | # Gradle and Maven with auto-import
31 | # When using Gradle or Maven with auto-import, you should exclude module files,
32 | # since they will be recreated, and may cause churn. Uncomment if using
33 | # auto-import.
34 | # .idea/artifacts
35 | # .idea/compiler.xml
36 | # .idea/jarRepositories.xml
37 | # .idea/modules.xml
38 | # .idea/*.iml
39 | # .idea/modules
40 | # *.iml
41 | # *.ipr
42 |
43 | # CMake
44 | cmake-build-*/
45 |
46 | # Mongo Explorer plugin
47 | .idea/**/mongoSettings.xml
48 |
49 | # File-based project format
50 | *.iws
51 |
52 | # IntelliJ
53 | out/
54 |
55 | # mpeltonen/sbt-idea plugin
56 | .idea_modules/
57 |
58 | # JIRA plugin
59 | atlassian-ide-plugin.xml
60 |
61 | # Cursive Clojure plugin
62 | .idea/replstate.xml
63 |
64 | # SonarLint plugin
65 | .idea/sonarlint/
66 |
67 | # Crashlytics plugin (for Android Studio and IntelliJ)
68 | com_crashlytics_export_strings.xml
69 | crashlytics.properties
70 | crashlytics-build.properties
71 | fabric.properties
72 |
73 | # Editor-based Rest Client
74 | .idea/httpRequests
75 |
76 | # Android studio 3.1+ serialized cache file
77 | .idea/caches/build_file_checksums.ser
78 |
79 | # VSCode -----------------------------------------------------------
80 |
81 | .vscode/*
82 | !.vscode/settings.json
83 | !.vscode/tasks.json
84 | !.vscode/launch.json
85 | !.vscode/extensions.json
86 | !.vscode/*.code-snippets
87 |
88 | # Local History for Visual Studio Code
89 | .history/
90 |
91 | # Built Visual Studio Code Extensions
92 | *.vsix
93 |
94 | # Windows -----------------------------------------------------------
95 |
96 | # Windows thumbnail cache files
97 | Thumbs.db
98 | Thumbs.db:encryptable
99 | ehthumbs.db
100 | ehthumbs_vista.db
101 |
102 | # Dump file
103 | *.stackdump
104 |
105 | # Folder config file
106 | [Dd]esktop.ini
107 |
108 | # Recycle Bin used on file shares
109 | $RECYCLE.BIN/
110 |
111 | # Windows Installer files
112 | *.cab
113 | *.msi
114 | *.msix
115 | *.msm
116 | *.msp
117 |
118 | # Windows shortcuts
119 | *.lnk
120 |
121 | # macOS -----------------------------------------------------------
122 |
123 | # General
124 | .DS_Store
125 | .AppleDouble
126 | .LSOverride
127 |
128 | # Icon must end with two \r
129 | Icon
130 |
131 | # Thumbnails
132 | ._*
133 |
134 | # Files that might appear in the root of a volume
135 | .DocumentRevisions-V100
136 | .fseventsd
137 | .Spotlight-V100
138 | .TemporaryItems
139 | .Trashes
140 | .VolumeIcon.icns
141 | .com.apple.timemachine.donotpresent
142 |
143 | # Directories potentially created on remote AFP share
144 | .AppleDB
145 | .AppleDesktop
146 | Network Trash Folder
147 | Temporary Items
148 | .apdisk
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/Problem_with_resource.yml:
--------------------------------------------------------------------------------
1 | name: Problem with a resource
2 | description: If you have a problem, bug, or enhancement with a resource in this resource module.
3 | labels: []
4 | assignees: []
5 | body:
6 | - type: markdown
7 | attributes:
8 | value: |
9 | Please prefix the issue title (above) with the resource name, e.g. 'ResourceName: Short description of my issue'!
10 |
11 | Your feedback and support is greatly appreciated, thanks for contributing!
12 | - type: textarea
13 | id: description
14 | attributes:
15 | label: Problem description
16 | description: Details of the scenario you tried and the problem that is occurring.
17 | validations:
18 | required: true
19 | - type: textarea
20 | id: logs
21 | attributes:
22 | label: Verbose logs
23 | description: |
24 | Verbose logs showing the problem. **NOTE! Sensitive information should be obfuscated.** _Will be automatically formatted as plain text._
25 | placeholder: |
26 | Paste verbose logs here
27 | render: text
28 | validations:
29 | required: true
30 | - type: textarea
31 | id: configuration
32 | attributes:
33 | label: DSC configuration
34 | description: |
35 | The DSC configuration that is used to reproduce the issue (as detailed as possible). **NOTE! Sensitive information should be obfuscated.** _Will be automatically formatted as PowerShell code._
36 | placeholder: |
37 | Paste DSC configuration here
38 | render: powershell
39 | validations:
40 | required: true
41 | - type: textarea
42 | id: suggestedSolution
43 | attributes:
44 | label: Suggested solution
45 | description: Do you have any suggestions how to solve the issue?
46 | validations:
47 | required: true
48 | - type: textarea
49 | id: targetNodeOS
50 | attributes:
51 | label: Operating system the target node is running
52 | description: |
53 | Please provide as much as possible about the target node, for example edition, version, build, and language. _Will be automatically formatted as plain text._
54 |
55 | On OS with WMF 5.1 the following command can help get this information: `Get-ComputerInfo -Property @('OsName','OsOperatingSystemSKU','OSArchitecture','WindowsVersion','WindowsBuildLabEx','OsLanguage','OsMuiLanguages')`
56 | placeholder: |
57 | Add operating system information here
58 | render: text
59 | validations:
60 | required: true
61 | - type: textarea
62 | id: targetNodePS
63 | attributes:
64 | label: PowerShell version and build the target node is running
65 | description: |
66 | Please provide the version and build of PowerShell the target node is running. _Will be automatically formatted as plain text._
67 |
68 | To help with this information, please run this command: `$PSVersionTable`
69 | placeholder: |
70 | Add PowerShell information here
71 | render: text
72 | validations:
73 | required: true
74 | - type: textarea
75 | id: moduleVersion
76 | attributes:
77 | label: xoap-application-packaging-dsc version
78 | description: |
79 | Please provide the version of the xoap-application-packaging-dsc module that was used. _Will be automatically formatted as plain text._
80 |
81 | To help with this information, please run this command: `Get-Module -Name 'xoap-application-packaging-dsc' -ListAvailable | ft Name,Version,Path`
82 | placeholder: |
83 | Add module information here
84 | render: text
85 | validations:
86 | required: true
87 |
--------------------------------------------------------------------------------
/DSCResources/XOAP_ConfigureSessionHostCollection/XOAP_ConfigureSessionHostCollection.schema.psm1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAP_ConfigureSessionHostCollection'
2 | {
3 | Import-DSCResource -ModuleName 'PSDesiredStateConfiguration'
4 | Import-DscResource -ModuleName 'xRemoteDesktopSessionHost' -ModuleVersion '2.1.0'
5 |
6 | param
7 | (
8 | [Parameter(Mandatory = $true)]
9 | [System.String]$CollectionName,
10 | [Parameter(Mandatory = $false)]
11 | [System.Int32]$ActiveSessionLimitMin,
12 | [Parameter(Mandatory = $false)]
13 | [System.Boolean]$AuthenticateUsingNLA,
14 | [Parameter(Mandatory = $false)]
15 | [System.Boolean]$AutomaticReconnectionEnabled,
16 | [Parameter(Mandatory = $true)]
17 | [ValidateSet('None', 'Disconnect', 'LogOff')]
18 | [System.String]$BrokenConnectionAction,
19 | [Parameter(Mandatory = $true)]
20 | [ValidateSet('None','AudioVideoPlayBack', 'AudioRecording', 'COMPort', 'PlugAndPlayDevice', 'SmartCard', 'Clipboard', 'LPTPort', 'Drive', 'TimeZone')]
21 | [System.String]$ClientDeviceRedirectionOptions,
22 | [Parameter(Mandatory = $false)]
23 | [System.Boolean]$ClientPrinterAsDefault,
24 | [Parameter(Mandatory = $false)]
25 | [System.Boolean]$ClientPrinterRedirected,
26 | [Parameter(Mandatory = $false)]
27 | [System.String]$CollectionDescription,
28 | [Parameter(Mandatory = $true)]
29 | [System.String]$ConnectionBroker,
30 | [Parameter(Mandatory = $false)]
31 | [System.Int32]$DisconnectedSessionLimitMin,
32 | [Parameter(Mandatory = $true)]
33 | [ValidateSet('None', 'Low', 'ClientCompatible', 'High', 'FipsCompliant')]
34 | [System.String]$EncryptionLevel,
35 | [Parameter(Mandatory = $false)]
36 | [System.Int32]$IdleSessionLimitMin,
37 | [Parameter(Mandatory = $true)]
38 | [ValidateRange(1,16)]
39 | [System.Int32]$MaxRedirectedMonitors,
40 | [Parameter(Mandatory = $false)]
41 | [System.Boolean]$RDEasyPrintDriverEnabled,
42 | [Parameter(Mandatory = $true)]
43 | [ValidateSet('RDP', 'Negotiate', 'SSL')]
44 | [System.String]$SecurityLayer,
45 | [Parameter(Mandatory = $false)]
46 | [System.Boolean]$TemporaryFoldersDeletedOnExit,
47 | [Parameter(Mandatory = $true)]
48 | [System.String]$UserGroup,
49 | [Parameter(Mandatory = $false)]
50 | [System.String]$DiskPath,
51 | [Parameter(Mandatory = $false)]
52 | [System.Boolean]$EnableUserProfileDisk,
53 | [Parameter(Mandatory = $false)]
54 | [System.String]$ExcludeFilePath,
55 | [Parameter(Mandatory = $false)]
56 | [System.String]$ExcludeFolderPath,
57 | [Parameter(Mandatory = $false)]
58 | [System.String]$IncludeFilePath,
59 | [Parameter(Mandatory = $false)]
60 | [System.String]$IncludeFolderPath,
61 | [Parameter(Mandatory = $false)]
62 | [System.Int32]$MaxUserProfileDiskSizeGB
63 | )
64 |
65 | xRDSessionCollectionConfiguration 'CollectionConfiguration'
66 | {
67 | CollectionName = $CollectionName
68 | ActiveSessionLimitMin = $ActiveSessionLimitMin
69 | AuthenticateUsingNLA = $AuthenticateUsingNLA
70 | AutomaticReconnectionEnabled = $AutomaticReconnectionEnabled
71 | BrokenConnectionAction = $BrokenConnectionAction
72 | ClientDeviceRedirectionOptions = $ClientDeviceRedirectionOptions
73 | ClientPrinterAsDefault = $ClientPrinterAsDefault
74 | ClientPrinterRedirected = $ClientPrinterRedirected
75 | CollectionDescription = $CollectionDescription
76 | ConnectionBroker = $ConnectionBroker
77 | DisconnectedSessionLimitMin = $DisconnectedSessionLimitMin
78 | EncryptionLevel = $EncryptionLevel
79 | IdleSessionLimitMin = $IdleSessionLimitMin
80 | MaxRedirectedMonitors = $MaxRedirectedMonitors
81 | RDEasyPrintDriverEnabled = $RDEasyPrintDriverEnabled
82 | SecurityLayer = $SecurityLayer
83 | TemporaryFoldersDeletedOnExit = $TemporaryFoldersDeletedOnExit
84 | UserGroup = $UserGroup
85 | DiskPath = $DiskPath
86 | EnableUserProfileDisk = $EnableUserProfileDisk
87 | ExcludeFilePath = $ExcludeFilePath
88 | ExcludeFolderPath = $ExcludeFolderPath
89 | IncludeFilePath = $IncludeFilePath
90 | IncludeFolderPath = $IncludeFolderPath
91 | MaxUserProfileDiskSizeGB = $MaxUserProfileDiskSizeGB
92 | }
93 | }
94 |
--------------------------------------------------------------------------------
/XOAPRemoteDesktopServicesDSC.psd1:
--------------------------------------------------------------------------------
1 | #
2 | # Module manifest for module 'XOAPRemoteDesktopServicesDSC'
3 | #
4 | # Generated by: XOAP.io
5 | #
6 | # Generated on: 09/10/2023
7 | #
8 |
9 | @{
10 |
11 | # Script module or binary module file associated with this manifest.
12 | # RootModule = ''
13 |
14 | # Version number of this module.
15 | ModuleVersion = '0.0.1'
16 |
17 | # Supported PSEditions
18 | # CompatiblePSEditions = @()
19 |
20 | # ID used to uniquely identify this module
21 | GUID = '3993a000-4852-494c-8d5a-7edb608693c0'
22 |
23 | # Author of this module
24 | Author = 'XOAP.io'
25 |
26 | # Company or vendor of this module
27 | CompanyName = 'RIS AG'
28 |
29 | # Copyright statement for this module
30 | Copyright = '(c) XOAP.io. All rights reserved.'
31 |
32 | # Description of the functionality provided by this module
33 | Description = 'DSC module to deploy a complete RDS environment.'
34 |
35 | # Minimum version of the PowerShell engine required by this module
36 | # PowerShellVersion = ''
37 |
38 | # Name of the PowerShell host required by this module
39 | # PowerShellHostName = ''
40 |
41 | # Minimum version of the PowerShell host required by this module
42 | # PowerShellHostVersion = ''
43 |
44 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
45 | # DotNetFrameworkVersion = ''
46 |
47 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
48 | # ClrVersion = ''
49 |
50 | # Processor architecture (None, X86, Amd64) required by this module
51 | # ProcessorArchitecture = ''
52 |
53 | # Modules that must be imported into the global environment prior to importing this module
54 | # RequiredModules = @()
55 |
56 | # Assemblies that must be loaded prior to importing this module
57 | # RequiredAssemblies = @()
58 |
59 | # Script files (.ps1) that are run in the caller's environment prior to importing this module.
60 | # ScriptsToProcess = @()
61 |
62 | # Type files (.ps1xml) to be loaded when importing this module
63 | # TypesToProcess = @()
64 |
65 | # Format files (.ps1xml) to be loaded when importing this module
66 | # FormatsToProcess = @()
67 |
68 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
69 | # NestedModules = @()
70 |
71 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
72 | FunctionsToExport = @()
73 |
74 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
75 | CmdletsToExport = @()
76 |
77 | # Variables to export from this module
78 | VariablesToExport = '*'
79 |
80 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
81 | AliasesToExport = @()
82 |
83 | # DSC resources to export from this module
84 | # DscResourcesToExport = @()
85 |
86 | # List of all modules packaged with this module
87 | # ModuleList = @()
88 |
89 | # List of all files packaged with this module
90 | # FileList = @()
91 |
92 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
93 | PrivateData = @{
94 |
95 | PSData = @{
96 |
97 | # Tags applied to this module. These help with module discovery in online galleries.
98 | # Tags = @()
99 |
100 | # A URL to the license for this module.
101 | # LicenseUri = ''
102 |
103 | # A URL to the main website for this project.
104 | # ProjectUri = ''
105 |
106 | # A URL to an icon representing this module.
107 | # IconUri = ''
108 |
109 | # ReleaseNotes of this module
110 | # ReleaseNotes = ''
111 |
112 | # Prerelease string of this module
113 | # Prerelease = ''
114 |
115 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save
116 | # RequireLicenseAcceptance = $false
117 |
118 | # External dependent modules of this module
119 | # ExternalModuleDependencies = @()
120 |
121 | } # End of PSData hashtable
122 |
123 | } # End of PrivateData hashtable
124 |
125 | # HelpInfo URI of this module
126 | # HelpInfoURI = ''
127 |
128 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
129 | # DefaultCommandPrefix = ''
130 |
131 | }
132 |
133 |
134 |
--------------------------------------------------------------------------------
/DSCResources/XOAP_NewRemoteApp/XOAP_NewRemoteApp.psd1:
--------------------------------------------------------------------------------
1 | #
2 | # Module manifest for module 'XOAP_NewRemoteApp'
3 | #
4 | # Generated by: XOAP.io
5 | #
6 | # Generated on: 14/08/2023
7 | #
8 |
9 | @{
10 |
11 | # Script module or binary module file associated with this manifest.
12 | RootModule = 'XOAP_NewRemoteApp.schema.psm1'
13 |
14 | # Version number of this module.
15 | ModuleVersion = '0.0.1'
16 |
17 | # Supported PSEditions
18 | # CompatiblePSEditions = @()
19 |
20 | # ID used to uniquely identify this module
21 | GUID = '923336fe-9dfa-4ace-afc1-7eec392c0df3'
22 |
23 | # Author of this module
24 | Author = 'XOAP.io'
25 |
26 | # Company or vendor of this module
27 | CompanyName = 'RIS AG'
28 |
29 | # Copyright statement for this module
30 | Copyright = '(c) XOAP.io. All rights reserved.'
31 |
32 | # Description of the functionality provided by this module
33 | Description = 'Publishes a new Remote App'
34 |
35 | # Minimum version of the PowerShell engine required by this module
36 | # PowerShellVersion = ''
37 |
38 | # Name of the PowerShell host required by this module
39 | # PowerShellHostName = ''
40 |
41 | # Minimum version of the PowerShell host required by this module
42 | # PowerShellHostVersion = ''
43 |
44 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
45 | # DotNetFrameworkVersion = ''
46 |
47 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
48 | # ClrVersion = ''
49 |
50 | # Processor architecture (None, X86, Amd64) required by this module
51 | # ProcessorArchitecture = ''
52 |
53 | # Modules that must be imported into the global environment prior to importing this module
54 | # RequiredModules = @()
55 |
56 | # Assemblies that must be loaded prior to importing this module
57 | # RequiredAssemblies = @()
58 |
59 | # Script files (.ps1) that are run in the caller's environment prior to importing this module.
60 | # ScriptsToProcess = @()
61 |
62 | # Type files (.ps1xml) to be loaded when importing this module
63 | # TypesToProcess = @()
64 |
65 | # Format files (.ps1xml) to be loaded when importing this module
66 | # FormatsToProcess = @()
67 |
68 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
69 | # NestedModules = @()
70 |
71 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
72 | FunctionsToExport = '*'
73 |
74 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
75 | CmdletsToExport = '*'
76 |
77 | # Variables to export from this module
78 | VariablesToExport = '*'
79 |
80 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
81 | AliasesToExport = '*'
82 |
83 | # DSC resources to export from this module
84 | # DscResourcesToExport = @()
85 |
86 | # List of all modules packaged with this module
87 | # ModuleList = @()
88 |
89 | # List of all files packaged with this module
90 | # FileList = @()
91 |
92 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
93 | PrivateData = @{
94 |
95 | PSData = @{
96 |
97 | # Tags applied to this module. These help with module discovery in online galleries.
98 | # Tags = @()
99 |
100 | # A URL to the license for this module.
101 | # LicenseUri = ''
102 |
103 | # A URL to the main website for this project.
104 | # ProjectUri = ''
105 |
106 | # A URL to an icon representing this module.
107 | # IconUri = ''
108 |
109 | # ReleaseNotes of this module
110 | # ReleaseNotes = ''
111 |
112 | # Prerelease string of this module
113 | # Prerelease = ''
114 |
115 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save
116 | # RequireLicenseAcceptance = $false
117 |
118 | # External dependent modules of this module
119 | # ExternalModuleDependencies = @()
120 |
121 | } # End of PSData hashtable
122 |
123 | } # End of PrivateData hashtable
124 |
125 | # HelpInfo URI of this module
126 | # HelpInfoURI = ''
127 |
128 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
129 | # DefaultCommandPrefix = ''
130 |
131 | }
132 |
133 |
134 |
--------------------------------------------------------------------------------
/DSCResources/XOAP_NewRDSDeployment/XOAP_NewRDSDeployment.psd1:
--------------------------------------------------------------------------------
1 | #
2 | # Module manifest for module 'XOAP_NewRDSDeployment'
3 | #
4 | # Generated by: XOAP.io
5 | #
6 | # Generated on: 09/10/2023
7 | #
8 |
9 | @{
10 |
11 | # Script module or binary module file associated with this manifest.
12 | RootModule = 'XOAP_NewRDSDeployment.schema.psm1'
13 |
14 | # Version number of this module.
15 | ModuleVersion = '0.0.1'
16 |
17 | # Supported PSEditions
18 | # CompatiblePSEditions = @()
19 |
20 | # ID used to uniquely identify this module
21 | GUID = '54766d1c-9016-4e7d-9449-922460ccce66'
22 |
23 | # Author of this module
24 | Author = 'XOAP.io'
25 |
26 | # Company or vendor of this module
27 | CompanyName = 'RIS AG'
28 |
29 | # Copyright statement for this module
30 | Copyright = '(c) XOAP.io. All rights reserved.'
31 |
32 | # Description of the functionality provided by this module
33 | Description = 'Creates a Remote Desktop Session (RDS) deployment'
34 |
35 | # Minimum version of the PowerShell engine required by this module
36 | # PowerShellVersion = ''
37 |
38 | # Name of the PowerShell host required by this module
39 | # PowerShellHostName = ''
40 |
41 | # Minimum version of the PowerShell host required by this module
42 | # PowerShellHostVersion = ''
43 |
44 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
45 | # DotNetFrameworkVersion = ''
46 |
47 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
48 | # ClrVersion = ''
49 |
50 | # Processor architecture (None, X86, Amd64) required by this module
51 | # ProcessorArchitecture = ''
52 |
53 | # Modules that must be imported into the global environment prior to importing this module
54 | # RequiredModules = @()
55 |
56 | # Assemblies that must be loaded prior to importing this module
57 | # RequiredAssemblies = @()
58 |
59 | # Script files (.ps1) that are run in the caller's environment prior to importing this module.
60 | # ScriptsToProcess = @()
61 |
62 | # Type files (.ps1xml) to be loaded when importing this module
63 | # TypesToProcess = @()
64 |
65 | # Format files (.ps1xml) to be loaded when importing this module
66 | # FormatsToProcess = @()
67 |
68 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
69 | # NestedModules = @()
70 |
71 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
72 | FunctionsToExport = '*'
73 |
74 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
75 | CmdletsToExport = '*'
76 |
77 | # Variables to export from this module
78 | VariablesToExport = '*'
79 |
80 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
81 | AliasesToExport = '*'
82 |
83 | # DSC resources to export from this module
84 | # DscResourcesToExport = @()
85 |
86 | # List of all modules packaged with this module
87 | # ModuleList = @()
88 |
89 | # List of all files packaged with this module
90 | # FileList = @()
91 |
92 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
93 | PrivateData = @{
94 |
95 | PSData = @{
96 |
97 | # Tags applied to this module. These help with module discovery in online galleries.
98 | # Tags = @()
99 |
100 | # A URL to the license for this module.
101 | # LicenseUri = ''
102 |
103 | # A URL to the main website for this project.
104 | # ProjectUri = ''
105 |
106 | # A URL to an icon representing this module.
107 | # IconUri = ''
108 |
109 | # ReleaseNotes of this module
110 | # ReleaseNotes = ''
111 |
112 | # Prerelease string of this module
113 | # Prerelease = ''
114 |
115 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save
116 | # RequireLicenseAcceptance = $false
117 |
118 | # External dependent modules of this module
119 | # ExternalModuleDependencies = @()
120 |
121 | } # End of PSData hashtable
122 |
123 | } # End of PrivateData hashtable
124 |
125 | # HelpInfo URI of this module
126 | # HelpInfoURI = ''
127 |
128 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
129 | # DefaultCommandPrefix = ''
130 |
131 | }
132 |
133 |
134 |
--------------------------------------------------------------------------------
/DSCResources/XOAP_AddServerToDeployment/XOAP_AddServerToDeployment.psd1:
--------------------------------------------------------------------------------
1 | #
2 | # Module manifest for module 'XOAP_AddServerToDeployment'
3 | #
4 | # Generated by: XOAP.io
5 | #
6 | # Generated on: 09/10/2023
7 | #
8 |
9 | @{
10 |
11 | # Script module or binary module file associated with this manifest.
12 | RootModule = 'XOAP_AddServerToDeployment.schema.psm1'
13 |
14 | # Version number of this module.
15 | ModuleVersion = '0.0.1'
16 |
17 | # Supported PSEditions
18 | # CompatiblePSEditions = @()
19 |
20 | # ID used to uniquely identify this module
21 | GUID = 'dacf1c51-b1bc-4137-9d0d-c834ed4077ae'
22 |
23 | # Author of this module
24 | Author = 'XOAP.io'
25 |
26 | # Company or vendor of this module
27 | CompanyName = 'RIS AG'
28 |
29 | # Copyright statement for this module
30 | Copyright = '(c) XOAP.io. All rights reserved.'
31 |
32 | # Description of the functionality provided by this module
33 | Description = 'Adds a server to the RDS deployment'
34 |
35 | # Minimum version of the PowerShell engine required by this module
36 | # PowerShellVersion = ''
37 |
38 | # Name of the PowerShell host required by this module
39 | # PowerShellHostName = ''
40 |
41 | # Minimum version of the PowerShell host required by this module
42 | # PowerShellHostVersion = ''
43 |
44 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
45 | # DotNetFrameworkVersion = ''
46 |
47 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
48 | # ClrVersion = ''
49 |
50 | # Processor architecture (None, X86, Amd64) required by this module
51 | # ProcessorArchitecture = ''
52 |
53 | # Modules that must be imported into the global environment prior to importing this module
54 | # RequiredModules = @()
55 |
56 | # Assemblies that must be loaded prior to importing this module
57 | # RequiredAssemblies = @()
58 |
59 | # Script files (.ps1) that are run in the caller's environment prior to importing this module.
60 | # ScriptsToProcess = @()
61 |
62 | # Type files (.ps1xml) to be loaded when importing this module
63 | # TypesToProcess = @()
64 |
65 | # Format files (.ps1xml) to be loaded when importing this module
66 | # FormatsToProcess = @()
67 |
68 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
69 | # NestedModules = @()
70 |
71 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
72 | FunctionsToExport = '*'
73 |
74 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
75 | CmdletsToExport = '*'
76 |
77 | # Variables to export from this module
78 | VariablesToExport = '*'
79 |
80 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
81 | AliasesToExport = '*'
82 |
83 | # DSC resources to export from this module
84 | # DscResourcesToExport = @()
85 |
86 | # List of all modules packaged with this module
87 | # ModuleList = @()
88 |
89 | # List of all files packaged with this module
90 | # FileList = @()
91 |
92 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
93 | PrivateData = @{
94 |
95 | PSData = @{
96 |
97 | # Tags applied to this module. These help with module discovery in online galleries.
98 | # Tags = @()
99 |
100 | # A URL to the license for this module.
101 | # LicenseUri = ''
102 |
103 | # A URL to the main website for this project.
104 | # ProjectUri = ''
105 |
106 | # A URL to an icon representing this module.
107 | # IconUri = ''
108 |
109 | # ReleaseNotes of this module
110 | # ReleaseNotes = ''
111 |
112 | # Prerelease string of this module
113 | # Prerelease = ''
114 |
115 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save
116 | # RequireLicenseAcceptance = $false
117 |
118 | # External dependent modules of this module
119 | # ExternalModuleDependencies = @()
120 |
121 | } # End of PSData hashtable
122 |
123 | } # End of PrivateData hashtable
124 |
125 | # HelpInfo URI of this module
126 | # HelpInfoURI = ''
127 |
128 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
129 | # DefaultCommandPrefix = ''
130 |
131 | }
132 |
133 |
134 |
--------------------------------------------------------------------------------
/DSCResources/XOAP_AddServerToCollection/XOAP_AddServerToCollection.psd1:
--------------------------------------------------------------------------------
1 | #
2 | # Module manifest for module 'XOAP_AddServerToCollection'
3 | #
4 | # Generated by: XOAP.io
5 | #
6 | # Generated on: 09/10/2023
7 | #
8 |
9 | @{
10 |
11 | # Script module or binary module file associated with this manifest.
12 | RootModule = 'XOAP_AddServerToCollection.schema.psm1'
13 |
14 | # Version number of this module.
15 | ModuleVersion = '0.0.1'
16 |
17 | # Supported PSEditions
18 | # CompatiblePSEditions = @()
19 |
20 | # ID used to uniquely identify this module
21 | GUID = '6b8a0121-2030-40e7-aaec-bad1f4f4631d'
22 |
23 | # Author of this module
24 | Author = 'XOAP.io'
25 |
26 | # Company or vendor of this module
27 | CompanyName = 'RIS AG'
28 |
29 | # Copyright statement for this module
30 | Copyright = '(c) XOAP.io. All rights reserved.'
31 |
32 | # Description of the functionality provided by this module
33 | Description = 'Adds a server to session host collection'
34 |
35 | # Minimum version of the PowerShell engine required by this module
36 | # PowerShellVersion = ''
37 |
38 | # Name of the PowerShell host required by this module
39 | # PowerShellHostName = ''
40 |
41 | # Minimum version of the PowerShell host required by this module
42 | # PowerShellHostVersion = ''
43 |
44 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
45 | # DotNetFrameworkVersion = ''
46 |
47 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
48 | # ClrVersion = ''
49 |
50 | # Processor architecture (None, X86, Amd64) required by this module
51 | # ProcessorArchitecture = ''
52 |
53 | # Modules that must be imported into the global environment prior to importing this module
54 | # RequiredModules = @()
55 |
56 | # Assemblies that must be loaded prior to importing this module
57 | # RequiredAssemblies = @()
58 |
59 | # Script files (.ps1) that are run in the caller's environment prior to importing this module.
60 | # ScriptsToProcess = @()
61 |
62 | # Type files (.ps1xml) to be loaded when importing this module
63 | # TypesToProcess = @()
64 |
65 | # Format files (.ps1xml) to be loaded when importing this module
66 | # FormatsToProcess = @()
67 |
68 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
69 | # NestedModules = @()
70 |
71 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
72 | FunctionsToExport = '*'
73 |
74 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
75 | CmdletsToExport = '*'
76 |
77 | # Variables to export from this module
78 | VariablesToExport = '*'
79 |
80 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
81 | AliasesToExport = '*'
82 |
83 | # DSC resources to export from this module
84 | # DscResourcesToExport = @()
85 |
86 | # List of all modules packaged with this module
87 | # ModuleList = @()
88 |
89 | # List of all files packaged with this module
90 | # FileList = @()
91 |
92 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
93 | PrivateData = @{
94 |
95 | PSData = @{
96 |
97 | # Tags applied to this module. These help with module discovery in online galleries.
98 | # Tags = @()
99 |
100 | # A URL to the license for this module.
101 | # LicenseUri = ''
102 |
103 | # A URL to the main website for this project.
104 | # ProjectUri = ''
105 |
106 | # A URL to an icon representing this module.
107 | # IconUri = ''
108 |
109 | # ReleaseNotes of this module
110 | # ReleaseNotes = ''
111 |
112 | # Prerelease string of this module
113 | # Prerelease = ''
114 |
115 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save
116 | # RequireLicenseAcceptance = $false
117 |
118 | # External dependent modules of this module
119 | # ExternalModuleDependencies = @()
120 |
121 | } # End of PSData hashtable
122 |
123 | } # End of PrivateData hashtable
124 |
125 | # HelpInfo URI of this module
126 | # HelpInfoURI = ''
127 |
128 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
129 | # DefaultCommandPrefix = ''
130 |
131 | }
132 |
133 |
134 |
--------------------------------------------------------------------------------
/DSCResources/XOAP_ConfigureLicenseServer/XOAP_ConfigureLicenseServer.psd1:
--------------------------------------------------------------------------------
1 | #
2 | # Module manifest for module 'XOAP_ConfigureLicenseServer'
3 | #
4 | # Generated by: XOAP.io
5 | #
6 | # Generated on: 14/08/2023
7 | #
8 |
9 | @{
10 |
11 | # Script module or binary module file associated with this manifest.
12 | RootModule = 'XOAP_ConfigureLicenseServer.schema.psm1'
13 |
14 | # Version number of this module.
15 | ModuleVersion = '0.0.1'
16 |
17 | # Supported PSEditions
18 | # CompatiblePSEditions = @()
19 |
20 | # ID used to uniquely identify this module
21 | GUID = '72363868-3244-4d56-9ad6-cc5055d8066b'
22 |
23 | # Author of this module
24 | Author = 'XOAP.io'
25 |
26 | # Company or vendor of this module
27 | CompanyName = 'RIS AG'
28 |
29 | # Copyright statement for this module
30 | Copyright = '(c) XOAP.io. All rights reserved.'
31 |
32 | # Description of the functionality provided by this module
33 | Description = 'Configures the RD licensing server'
34 |
35 | # Minimum version of the PowerShell engine required by this module
36 | # PowerShellVersion = ''
37 |
38 | # Name of the PowerShell host required by this module
39 | # PowerShellHostName = ''
40 |
41 | # Minimum version of the PowerShell host required by this module
42 | # PowerShellHostVersion = ''
43 |
44 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
45 | # DotNetFrameworkVersion = ''
46 |
47 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
48 | # ClrVersion = ''
49 |
50 | # Processor architecture (None, X86, Amd64) required by this module
51 | # ProcessorArchitecture = ''
52 |
53 | # Modules that must be imported into the global environment prior to importing this module
54 | # RequiredModules = @()
55 |
56 | # Assemblies that must be loaded prior to importing this module
57 | # RequiredAssemblies = @()
58 |
59 | # Script files (.ps1) that are run in the caller's environment prior to importing this module.
60 | # ScriptsToProcess = @()
61 |
62 | # Type files (.ps1xml) to be loaded when importing this module
63 | # TypesToProcess = @()
64 |
65 | # Format files (.ps1xml) to be loaded when importing this module
66 | # FormatsToProcess = @()
67 |
68 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
69 | # NestedModules = @()
70 |
71 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
72 | FunctionsToExport = '*'
73 |
74 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
75 | CmdletsToExport = '*'
76 |
77 | # Variables to export from this module
78 | VariablesToExport = '*'
79 |
80 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
81 | AliasesToExport = '*'
82 |
83 | # DSC resources to export from this module
84 | # DscResourcesToExport = @()
85 |
86 | # List of all modules packaged with this module
87 | # ModuleList = @()
88 |
89 | # List of all files packaged with this module
90 | # FileList = @()
91 |
92 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
93 | PrivateData = @{
94 |
95 | PSData = @{
96 |
97 | # Tags applied to this module. These help with module discovery in online galleries.
98 | # Tags = @()
99 |
100 | # A URL to the license for this module.
101 | # LicenseUri = ''
102 |
103 | # A URL to the main website for this project.
104 | # ProjectUri = ''
105 |
106 | # A URL to an icon representing this module.
107 | # IconUri = ''
108 |
109 | # ReleaseNotes of this module
110 | # ReleaseNotes = ''
111 |
112 | # Prerelease string of this module
113 | # Prerelease = ''
114 |
115 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save
116 | # RequireLicenseAcceptance = $false
117 |
118 | # External dependent modules of this module
119 | # ExternalModuleDependencies = @()
120 |
121 | } # End of PSData hashtable
122 |
123 | } # End of PrivateData hashtable
124 |
125 | # HelpInfo URI of this module
126 | # HelpInfoURI = ''
127 |
128 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
129 | # DefaultCommandPrefix = ''
130 |
131 | }
132 |
133 |
134 |
--------------------------------------------------------------------------------
/DSCResources/XOAP_NewSessionHostCollection/XOAP_NewSessionHostCollection.psd1:
--------------------------------------------------------------------------------
1 | #
2 | # Module manifest for module 'XOAP_NewSessionHostCollection'
3 | #
4 | # Generated by: XOAP.io
5 | #
6 | # Generated on: 09/10/2023
7 | #
8 |
9 | @{
10 |
11 | # Script module or binary module file associated with this manifest.
12 | RootModule = 'XOAP_NewSessionHostCollection.schema.psm1'
13 |
14 | # Version number of this module.
15 | ModuleVersion = '0.0.1'
16 |
17 | # Supported PSEditions
18 | # CompatiblePSEditions = @()
19 |
20 | # ID used to uniquely identify this module
21 | GUID = '62b7b6d2-2769-4471-afe1-d83b5efb29a6'
22 |
23 | # Author of this module
24 | Author = 'XOAP.io'
25 |
26 | # Company or vendor of this module
27 | CompanyName = 'RIS AG'
28 |
29 | # Copyright statement for this module
30 | Copyright = '(c) XOAP.io. All rights reserved.'
31 |
32 | # Description of the functionality provided by this module
33 | Description = 'Creates a new RDSH collection'
34 |
35 | # Minimum version of the PowerShell engine required by this module
36 | # PowerShellVersion = ''
37 |
38 | # Name of the PowerShell host required by this module
39 | # PowerShellHostName = ''
40 |
41 | # Minimum version of the PowerShell host required by this module
42 | # PowerShellHostVersion = ''
43 |
44 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
45 | # DotNetFrameworkVersion = ''
46 |
47 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
48 | # ClrVersion = ''
49 |
50 | # Processor architecture (None, X86, Amd64) required by this module
51 | # ProcessorArchitecture = ''
52 |
53 | # Modules that must be imported into the global environment prior to importing this module
54 | # RequiredModules = @()
55 |
56 | # Assemblies that must be loaded prior to importing this module
57 | # RequiredAssemblies = @()
58 |
59 | # Script files (.ps1) that are run in the caller's environment prior to importing this module.
60 | # ScriptsToProcess = @()
61 |
62 | # Type files (.ps1xml) to be loaded when importing this module
63 | # TypesToProcess = @()
64 |
65 | # Format files (.ps1xml) to be loaded when importing this module
66 | # FormatsToProcess = @()
67 |
68 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
69 | # NestedModules = @()
70 |
71 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
72 | FunctionsToExport = '*'
73 |
74 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
75 | CmdletsToExport = '*'
76 |
77 | # Variables to export from this module
78 | VariablesToExport = '*'
79 |
80 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
81 | AliasesToExport = '*'
82 |
83 | # DSC resources to export from this module
84 | # DscResourcesToExport = @()
85 |
86 | # List of all modules packaged with this module
87 | # ModuleList = @()
88 |
89 | # List of all files packaged with this module
90 | # FileList = @()
91 |
92 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
93 | PrivateData = @{
94 |
95 | PSData = @{
96 |
97 | # Tags applied to this module. These help with module discovery in online galleries.
98 | # Tags = @()
99 |
100 | # A URL to the license for this module.
101 | # LicenseUri = ''
102 |
103 | # A URL to the main website for this project.
104 | # ProjectUri = ''
105 |
106 | # A URL to an icon representing this module.
107 | # IconUri = ''
108 |
109 | # ReleaseNotes of this module
110 | # ReleaseNotes = ''
111 |
112 | # Prerelease string of this module
113 | # Prerelease = ''
114 |
115 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save
116 | # RequireLicenseAcceptance = $false
117 |
118 | # External dependent modules of this module
119 | # ExternalModuleDependencies = @()
120 |
121 | } # End of PSData hashtable
122 |
123 | } # End of PrivateData hashtable
124 |
125 | # HelpInfo URI of this module
126 | # HelpInfoURI = ''
127 |
128 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
129 | # DefaultCommandPrefix = ''
130 |
131 | }
132 |
133 |
134 |
--------------------------------------------------------------------------------
/DSCResources/XOAP_ConfigureCertificateConfiguration/XOAP_ConfigureCertificateConfiguration.psd1:
--------------------------------------------------------------------------------
1 | #
2 | # Module manifest for module 'XOAP_ConfigureCertificateConfiguration'
3 | #
4 | # Generated by: XOAP.io
5 | #
6 | # Generated on: 14/08/2023
7 | #
8 |
9 | @{
10 |
11 | # Script module or binary module file associated with this manifest.
12 | RootModule = 'XOAP_ConfigureCertificateConfiguration.schema.psm1'
13 |
14 | # Version number of this module.
15 | ModuleVersion = '0.0.1'
16 |
17 | # Supported PSEditions
18 | # CompatiblePSEditions = @()
19 |
20 | # ID used to uniquely identify this module
21 | GUID = 'a284fdd8-dd5b-4771-ad4a-0f8aa2a6a083'
22 |
23 | # Author of this module
24 | Author = 'XOAP.io'
25 |
26 | # Company or vendor of this module
27 | CompanyName = 'RIS AG'
28 |
29 | # Copyright statement for this module
30 | Copyright = '(c) XOAP.io. All rights reserved.'
31 |
32 | # Description of the functionality provided by this module
33 | Description = 'Configures certification settings'
34 |
35 | # Minimum version of the PowerShell engine required by this module
36 | # PowerShellVersion = ''
37 |
38 | # Name of the PowerShell host required by this module
39 | # PowerShellHostName = ''
40 |
41 | # Minimum version of the PowerShell host required by this module
42 | # PowerShellHostVersion = ''
43 |
44 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
45 | # DotNetFrameworkVersion = ''
46 |
47 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
48 | # ClrVersion = ''
49 |
50 | # Processor architecture (None, X86, Amd64) required by this module
51 | # ProcessorArchitecture = ''
52 |
53 | # Modules that must be imported into the global environment prior to importing this module
54 | # RequiredModules = @()
55 |
56 | # Assemblies that must be loaded prior to importing this module
57 | # RequiredAssemblies = @()
58 |
59 | # Script files (.ps1) that are run in the caller's environment prior to importing this module.
60 | # ScriptsToProcess = @()
61 |
62 | # Type files (.ps1xml) to be loaded when importing this module
63 | # TypesToProcess = @()
64 |
65 | # Format files (.ps1xml) to be loaded when importing this module
66 | # FormatsToProcess = @()
67 |
68 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
69 | # NestedModules = @()
70 |
71 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
72 | FunctionsToExport = '*'
73 |
74 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
75 | CmdletsToExport = '*'
76 |
77 | # Variables to export from this module
78 | VariablesToExport = '*'
79 |
80 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
81 | AliasesToExport = '*'
82 |
83 | # DSC resources to export from this module
84 | # DscResourcesToExport = @()
85 |
86 | # List of all modules packaged with this module
87 | # ModuleList = @()
88 |
89 | # List of all files packaged with this module
90 | # FileList = @()
91 |
92 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
93 | PrivateData = @{
94 |
95 | PSData = @{
96 |
97 | # Tags applied to this module. These help with module discovery in online galleries.
98 | # Tags = @()
99 |
100 | # A URL to the license for this module.
101 | # LicenseUri = ''
102 |
103 | # A URL to the main website for this project.
104 | # ProjectUri = ''
105 |
106 | # A URL to an icon representing this module.
107 | # IconUri = ''
108 |
109 | # ReleaseNotes of this module
110 | # ReleaseNotes = ''
111 |
112 | # Prerelease string of this module
113 | # Prerelease = ''
114 |
115 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save
116 | # RequireLicenseAcceptance = $false
117 |
118 | # External dependent modules of this module
119 | # ExternalModuleDependencies = @()
120 |
121 | } # End of PSData hashtable
122 |
123 | } # End of PrivateData hashtable
124 |
125 | # HelpInfo URI of this module
126 | # HelpInfoURI = ''
127 |
128 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
129 | # DefaultCommandPrefix = ''
130 |
131 | }
132 |
133 |
134 |
--------------------------------------------------------------------------------
/DSCResources/XOAP_ConfigureSessionHostCollection/XOAP_ConfigureSessionHostCollection.psd1:
--------------------------------------------------------------------------------
1 | #
2 | # Module manifest for module 'XOAP_ConfigureSessionHostCollection'
3 | #
4 | # Generated by: XOAP.io
5 | #
6 | # Generated on: 14/08/2023
7 | #
8 |
9 | @{
10 |
11 | # Script module or binary module file associated with this manifest.
12 | RootModule = 'XOAP_ConfigureSessionHostCollection.schema.psm1'
13 |
14 | # Version number of this module.
15 | ModuleVersion = '0.0.1'
16 |
17 | # Supported PSEditions
18 | # CompatiblePSEditions = @()
19 |
20 | # ID used to uniquely identify this module
21 | GUID = '9d8bb17b-b39e-4f2f-82b2-a4b54b6f9ebb'
22 |
23 | # Author of this module
24 | Author = 'XOAP.io'
25 |
26 | # Company or vendor of this module
27 | CompanyName = 'RIS AG'
28 |
29 | # Copyright statement for this module
30 | Copyright = '(c) XOAP.io. All rights reserved.'
31 |
32 | # Description of the functionality provided by this module
33 | Description = 'Configures an existing session host collection'
34 |
35 | # Minimum version of the PowerShell engine required by this module
36 | # PowerShellVersion = ''
37 |
38 | # Name of the PowerShell host required by this module
39 | # PowerShellHostName = ''
40 |
41 | # Minimum version of the PowerShell host required by this module
42 | # PowerShellHostVersion = ''
43 |
44 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
45 | # DotNetFrameworkVersion = ''
46 |
47 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
48 | # ClrVersion = ''
49 |
50 | # Processor architecture (None, X86, Amd64) required by this module
51 | # ProcessorArchitecture = ''
52 |
53 | # Modules that must be imported into the global environment prior to importing this module
54 | # RequiredModules = @()
55 |
56 | # Assemblies that must be loaded prior to importing this module
57 | # RequiredAssemblies = @()
58 |
59 | # Script files (.ps1) that are run in the caller's environment prior to importing this module.
60 | # ScriptsToProcess = @()
61 |
62 | # Type files (.ps1xml) to be loaded when importing this module
63 | # TypesToProcess = @()
64 |
65 | # Format files (.ps1xml) to be loaded when importing this module
66 | # FormatsToProcess = @()
67 |
68 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
69 | # NestedModules = @()
70 |
71 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
72 | FunctionsToExport = '*'
73 |
74 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
75 | CmdletsToExport = '*'
76 |
77 | # Variables to export from this module
78 | VariablesToExport = '*'
79 |
80 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
81 | AliasesToExport = '*'
82 |
83 | # DSC resources to export from this module
84 | # DscResourcesToExport = @()
85 |
86 | # List of all modules packaged with this module
87 | # ModuleList = @()
88 |
89 | # List of all files packaged with this module
90 | # FileList = @()
91 |
92 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
93 | PrivateData = @{
94 |
95 | PSData = @{
96 |
97 | # Tags applied to this module. These help with module discovery in online galleries.
98 | # Tags = @()
99 |
100 | # A URL to the license for this module.
101 | # LicenseUri = ''
102 |
103 | # A URL to the main website for this project.
104 | # ProjectUri = ''
105 |
106 | # A URL to an icon representing this module.
107 | # IconUri = ''
108 |
109 | # ReleaseNotes of this module
110 | # ReleaseNotes = ''
111 |
112 | # Prerelease string of this module
113 | # Prerelease = ''
114 |
115 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save
116 | # RequireLicenseAcceptance = $false
117 |
118 | # External dependent modules of this module
119 | # ExternalModuleDependencies = @()
120 |
121 | } # End of PSData hashtable
122 |
123 | } # End of PrivateData hashtable
124 |
125 | # HelpInfo URI of this module
126 | # HelpInfoURI = ''
127 |
128 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
129 | # DefaultCommandPrefix = ''
130 |
131 | }
132 |
133 |
134 |
--------------------------------------------------------------------------------
/DSCResources/XOAP_RDSQuickStartConfiguration/XOAP_RDSQuickStartConfiguration.psd1:
--------------------------------------------------------------------------------
1 | #
2 | # Module manifest for module 'XOAP_RDSQuickStartConfiguration'
3 | #
4 | # Generated by: XOAP.io
5 | #
6 | # Generated on: 19/09/2023
7 | #
8 |
9 | @{
10 |
11 | # Script module or binary module file associated with this manifest.
12 | RootModule = 'XOAP_RDSQuickStartConfiguration.schema.psm1'
13 |
14 | # Version number of this module.
15 | ModuleVersion = '0.0.1'
16 |
17 | # Supported PSEditions
18 | # CompatiblePSEditions = @()
19 |
20 | # ID used to uniquely identify this module
21 | GUID = 'cf61c586-ebd1-40ea-bdb0-e3d55b3a10eb'
22 |
23 | # Author of this module
24 | Author = 'XOAP.io'
25 |
26 | # Company or vendor of this module
27 | CompanyName = 'RIS AG'
28 |
29 | # Copyright statement for this module
30 | Copyright = '(c) XOAP.io. All rights reserved.'
31 |
32 | # Description of the functionality provided by this module
33 | Description = 'Resource which can be used to quickly configure an RDS deployment by providing only basic info'
34 |
35 | # Minimum version of the PowerShell engine required by this module
36 | # PowerShellVersion = ''
37 |
38 | # Name of the PowerShell host required by this module
39 | # PowerShellHostName = ''
40 |
41 | # Minimum version of the PowerShell host required by this module
42 | # PowerShellHostVersion = ''
43 |
44 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
45 | # DotNetFrameworkVersion = ''
46 |
47 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
48 | # ClrVersion = ''
49 |
50 | # Processor architecture (None, X86, Amd64) required by this module
51 | # ProcessorArchitecture = ''
52 |
53 | # Modules that must be imported into the global environment prior to importing this module
54 | # RequiredModules = @()
55 |
56 | # Assemblies that must be loaded prior to importing this module
57 | # RequiredAssemblies = @()
58 |
59 | # Script files (.ps1) that are run in the caller's environment prior to importing this module.
60 | # ScriptsToProcess = @()
61 |
62 | # Type files (.ps1xml) to be loaded when importing this module
63 | # TypesToProcess = @()
64 |
65 | # Format files (.ps1xml) to be loaded when importing this module
66 | # FormatsToProcess = @()
67 |
68 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
69 | # NestedModules = @()
70 |
71 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
72 | FunctionsToExport = '*'
73 |
74 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
75 | CmdletsToExport = '*'
76 |
77 | # Variables to export from this module
78 | VariablesToExport = '*'
79 |
80 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
81 | AliasesToExport = '*'
82 |
83 | # DSC resources to export from this module
84 | # DscResourcesToExport = @()
85 |
86 | # List of all modules packaged with this module
87 | # ModuleList = @()
88 |
89 | # List of all files packaged with this module
90 | # FileList = @()
91 |
92 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
93 | PrivateData = @{
94 |
95 | PSData = @{
96 |
97 | # Tags applied to this module. These help with module discovery in online galleries.
98 | # Tags = @()
99 |
100 | # A URL to the license for this module.
101 | # LicenseUri = ''
102 |
103 | # A URL to the main website for this project.
104 | # ProjectUri = ''
105 |
106 | # A URL to an icon representing this module.
107 | # IconUri = ''
108 |
109 | # ReleaseNotes of this module
110 | # ReleaseNotes = ''
111 |
112 | # Prerelease string of this module
113 | # Prerelease = ''
114 |
115 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save
116 | # RequireLicenseAcceptance = $false
117 |
118 | # External dependent modules of this module
119 | # ExternalModuleDependencies = @()
120 |
121 | } # End of PSData hashtable
122 |
123 | } # End of PrivateData hashtable
124 |
125 | # HelpInfo URI of this module
126 | # HelpInfoURI = ''
127 |
128 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
129 | # DefaultCommandPrefix = ''
130 |
131 | }
132 |
133 |
134 |
--------------------------------------------------------------------------------
/DSCResources/XOAP_RDSQuickStartConfiguration/XOAP_RDSQuickStartConfiguration.schema.psm1:
--------------------------------------------------------------------------------
1 | Configuration 'XOAP_RDSQuickStartConfiguration'
2 | {
3 | Import-DSCResource -ModuleName 'PSDesiredStateConfiguration'
4 | Import-DscResource -ModuleName 'xRemoteDesktopSessionHost' -ModuleVersion '2.1.0'
5 |
6 | param
7 | (
8 | [Parameter(Mandatory = $true)]
9 | [System.String]$ConnectionBrokerServerName,
10 | [Parameter(Mandatory = $true)]
11 | [System.String]$SessionHostServerName,
12 | [Parameter(Mandatory = $true)]
13 | [System.String]$AllowedUserGroup
14 | )
15 |
16 | WindowsFeature 'XOAP_ConnectionBrokerFeatureInstallation'
17 | {
18 | Ensure = 'Present'
19 | Name = 'RDS-Connection-Broker'
20 | }
21 |
22 | WindowsFeature 'XOAP_LicenseServerFeatureInstallation'
23 | {
24 | Ensure = 'Present'
25 | Name = 'RDS-Licensing'
26 | }
27 |
28 | WindowsFeature 'XOAP_WebAccessFeatureInstallation'
29 | {
30 | Ensure = 'Present'
31 | Name = 'RDS-Web-Access'
32 | }
33 |
34 | xRDSessionDeployment 'XOAP_SessionDeployment'
35 | {
36 | SessionHost = $SessionHostServerName
37 | ConnectionBroker = $ConnectionBrokerServerName
38 | WebAccessServer = $ConnectionBrokerServerName
39 | }
40 |
41 | Script 'XOAP_AddLicenseServerToDeployment'
42 | {
43 | SetScript =
44 | {
45 | Import-Module -name 'RemoteDesktop'
46 | Add-RDServer -Server $using:ConnectionBrokerServerName -Role "RDS-Licensing" -ConnectionBroker $using:ConnectionBrokerServerName
47 | }
48 | TestScript = {
49 | Import-Module -Name 'RemoteDesktop'
50 |
51 | if(!(Get-RDServer | where-object {$_.Server -eq $using:ConnectionBrokerServerName}))
52 | {
53 | return $false
54 | }
55 | else {return $true}
56 | }
57 | GetScript = {
58 | }
59 | }
60 |
61 | xRDLicenseConfiguration 'XOAP_MyLicenseServer'
62 | {
63 | ConnectionBroker = $ConnectionBrokerServerName
64 | LicenseMode = 'PerUser'
65 | LicenseServer = $ConnectionBrokerServerName
66 | }
67 |
68 | xRDSessionCollection 'XOAP_SessionCollection'
69 | {
70 | CollectionName = "RemoteApplications"
71 | SessionHost = $SessionHostServerName
72 | ConnectionBroker = $ConnectionBrokerServerName
73 | CollectionDescription = "Collection for publishing applications"
74 | }
75 |
76 | xRDSessionCollectionConfiguration 'XOAP_SessionCollectionConfiguration'
77 | {
78 | CollectionName = "RemoteApplications"
79 | CollectionDescription = "Collection for publishing applications"
80 | ConnectionBroker = $ConnectionBrokerServerName
81 | UserGroup = $AllowedUserGroup
82 | ActiveSessionLimitMin = 0
83 | BrokenConnectionAction = 'Disconnect'
84 | AutomaticReconnectionEnabled = $True
85 | DisconnectedSessionLimitMin = 30
86 | IdleSessionLimitMin = 1440 # One day
87 | TemporaryFoldersDeletedOnExit = $True
88 | RDEasyPrintDriverEnabled = 0
89 | MaxRedirectedMonitors = 2
90 | ClientPrinterRedirected = 0
91 | ClientDeviceRedirectionOptions = 'AudioVideoPlayBack, AudioRecording, Clipboard'
92 | ClientPrinterAsDefault = 0
93 | AuthenticateUsingNLA = $True
94 | EncryptionLevel = 'Low'
95 | SecurityLayer = 'RDP'
96 | }
97 |
98 | xRDRemoteApp 'XOAP_Notepad++' {
99 | Alias = 'Notepad++'
100 | CollectionName = 'RemoteApplications'
101 | CommandLineSetting = 'DoNotAllow'
102 | DisplayName = 'Notepad++'
103 | FilePath = 'C:\Program Files\Notepad++\notepad++.exe'
104 | IconPath = 'C:\Program Files\Notepad++\notepad++.exe'
105 | ShowInWebAccess = $True
106 | UserGroups = $AllowedUserGroup
107 | FileVirtualPath = 'C:\Program Files\Notepad++\notepad++.exe'
108 | }
109 |
110 | xRDRemoteApp 'XOAP_AdobeAcrobadReader' {
111 | Alias = 'AdobeAcrobatReader'
112 | CollectionName = 'RemoteApplications'
113 | CommandLineSetting = 'DoNotAllow'
114 | DisplayName = 'AdobeAcrobatReader'
115 | FilePath = 'C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe'
116 | IconPath = 'C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe'
117 | ShowInWebAccess = $True
118 | UserGroups = $AllowedUserGroup
119 | FileVirtualPath = 'C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe'
120 | }
121 | }
122 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | We as members, contributors, and leaders pledge to make participation in our
6 | community a harassment-free experience for everyone, regardless of age, body
7 | size, visible or invisible disability, ethnicity, sex characteristics, gender
8 | identity and expression, level of experience, education, socio-economic status,
9 | nationality, personal appearance, race, caste, color, religion, or sexual
10 | identity and orientation.
11 |
12 | We pledge to act and interact in ways that contribute to an open, welcoming,
13 | diverse, inclusive, and healthy community.
14 |
15 | ## Our Standards
16 |
17 | Examples of behavior that contributes to a positive environment for our
18 | community include:
19 |
20 | - Demonstrating empathy and kindness toward other people
21 | - Being respectful of differing opinions, viewpoints, and experiences
22 | - Giving and gracefully accepting constructive feedback
23 | - Accepting responsibility and apologizing to those affected by our mistakes,
24 | and learning from the experience
25 | - Focusing on what is best not just for us as individuals, but for the overall
26 | community
27 |
28 | Examples of unacceptable behavior include:
29 |
30 | - The use of sexualized language or imagery, and sexual attention or advances of
31 | any kind
32 | - Trolling, insulting or derogatory comments, and personal or political attacks
33 | - Public or private harassment
34 | - Publishing others' private information, such as a physical or email address,
35 | without their explicit permission
36 | - Other conduct which could reasonably be considered inappropriate in a
37 | professional setting
38 |
39 | ## Enforcement Responsibilities
40 |
41 | Community leaders are responsible for clarifying and enforcing our standards of
42 | acceptable behavior and will take appropriate and fair corrective action in
43 | response to any behavior that they deem inappropriate, threatening, offensive,
44 | or harmful.
45 |
46 | Community leaders have the right and responsibility to remove, edit, or reject
47 | comments, commits, code, wiki edits, issues, and other contributions that are
48 | not aligned to this Code of Conduct, and will communicate reasons for moderation
49 | decisions when appropriate.
50 |
51 | ## Scope
52 |
53 | This Code of Conduct applies within all community spaces, and also applies when
54 | an individual is officially representing the community in public spaces.
55 | Examples of representing our community include using an official e-mail address,
56 | posting via an official social media account, or acting as an appointed
57 | representative at an online or offline event.
58 |
59 | ## Enforcement
60 |
61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
62 | reported to the community leaders responsible for enforcement at
63 | [INSERT CONTACT METHOD].
64 | All complaints will be reviewed and investigated promptly and fairly.
65 |
66 | All community leaders are obligated to respect the privacy and security of the
67 | reporter of any incident.
68 |
69 | ## Enforcement Guidelines
70 |
71 | Community leaders will follow these Community Impact Guidelines in determining
72 | the consequences for any action they deem in violation of this Code of Conduct:
73 |
74 | ### 1. Correction
75 |
76 | **Community Impact**: Use of inappropriate language or other behavior deemed
77 | unprofessional or unwelcome in the community.
78 |
79 | **Consequence**: A private, written warning from community leaders, providing
80 | clarity around the nature of the violation and an explanation of why the
81 | behavior was inappropriate. A public apology may be requested.
82 |
83 | ### 2. Warning
84 |
85 | **Community Impact**: A violation through a single incident or series of
86 | actions.
87 |
88 | **Consequence**: A warning with consequences for continued behavior. No
89 | interaction with the people involved, including unsolicited interaction with
90 | those enforcing the Code of Conduct, for a specified period of time. This
91 | includes avoiding interactions in community spaces as well as external channels
92 | like social media. Violating these terms may lead to a temporary or permanent
93 | ban.
94 |
95 | ### 3. Temporary Ban
96 |
97 | **Community Impact**: A serious violation of community standards, including
98 | sustained inappropriate behavior.
99 |
100 | **Consequence**: A temporary ban from any sort of interaction or public
101 | communication with the community for a specified period of time. No public or
102 | private interaction with the people involved, including unsolicited interaction
103 | with those enforcing the Code of Conduct, is allowed during this period.
104 | Violating these terms may lead to a permanent ban.
105 |
106 | ### 4. Permanent Ban
107 |
108 | **Community Impact**: Demonstrating a pattern of violation of community
109 | standards, including sustained inappropriate behavior, harassment of an
110 | individual, or aggression toward or disparagement of classes of individuals.
111 |
112 | **Consequence**: A permanent ban from any sort of public interaction within the
113 | community.
114 |
115 | ## Attribution
116 |
117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118 | version 2.1, available at
119 | [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
120 |
121 | Community Impact Guidelines were inspired by
122 | [Mozilla's code of conduct enforcement ladder][mozilla coc].
123 |
124 | For answers to common questions about this code of conduct, see the FAQ at
125 | [https://www.contributor-covenant.org/faq][faq]. Translations are available at
126 | [https://www.contributor-covenant.org/translations][translations].
127 |
128 | [homepage]: https://www.contributor-covenant.org
129 | [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
130 | [mozilla coc]: https://github.com/mozilla/diversity
131 | [faq]: https://www.contributor-covenant.org/faq
132 | [translations]: https://www.contributor-covenant.org/translations
--------------------------------------------------------------------------------
/Readme.md:
--------------------------------------------------------------------------------
1 | # XOAPRemoteDesktopServicesDSC
2 |
3 | This repository contains a PowerShell DSC module for the deployment of a complete Remote Desktop Services environment.
4 |
5 | ## Code of Conduct
6 |
7 | This project has adopted this [Code of Conduct](CODE_OF_CONDUCT.md).
8 |
9 | ## Contributing
10 |
11 | Please check out common DSC Community [contributing guidelines](https://dsccommunity.org/guidelines/contributing).
12 |
13 | ## Change log
14 |
15 | A full list of changes in each version can be found in the [Releases](https://github.com/xoap-io/XOAPRemoteDesktopServicesDSC/releases).
16 |
17 | ## Prerequisites
18 |
19 | Be sure that the following DSC modules are installed on your system:
20 |
21 | - xRemoteDesktopSessionHost (2.1.0)
22 |
23 | ## Documentation
24 |
25 | The XOAP Remote Desktop Services DSC module contains the following resources:
26 |
27 | ### XOAP_AddServerToCollection
28 |
29 | ```PowerShell
30 | XOAP_AddServerToCollection [String] #ResourceName
31 | {
32 | [DependsOn = [String[]]]
33 | [PsDscRunAsCredential = [PSCredential]]
34 | [ConnectionBrokerName = [String]]
35 | [CollectioNname = [String]]
36 | [ServerName = [String]]
37 | }
38 | ```
39 |
40 | ### XOAP_AddServerToDeployment
41 |
42 | ```PowerShell
43 | XOAP_AddServerToDeployment [String] #ResourceName
44 | {
45 | [DependsOn = [String[]]]
46 | [PsDscRunAsCredential = [PSCredential]]
47 | [ConnectionBrokerName = [String]]
48 | [ServerName = [String]]
49 | [ServerRole = [String]] #'RDS-Virtualization','RDS-RD-Server','RDS-Connection-Broker','RDS-Web-Access','RDS-Gateway','RDS-Licensing'
50 | }
51 | ```
52 |
53 | ### XOAP_ConfigureCertificateConfiguration
54 |
55 | ```PowerShell
56 | XOAP_ConfigureCertificateConfiguration [String] #ResourceName
57 | {
58 | [DependsOn = [String[]]]
59 | [PsDscRunAsCredential = [PSCredential]]
60 | [ConnectionBrokerName = [String]]
61 | [ImportPath = [String]]
62 | [Role = [String]] #'RDRedirector', 'RDPublishing', 'RDWebAccess', 'RDGateway'
63 | }
64 | ```
65 |
66 | ### XOAP_ConfigureLicenseServer
67 |
68 | ```PowerShell
69 | XOAP_ConfigureLicenseServer [String] #ResourceName
70 | {
71 | [DependsOn = [String[]]]
72 | [PsDscRunAsCredential = [PSCredential]]
73 | [ConnectionBrokerName = [String]]
74 | [LicenseServer = [String]]
75 | [LicenseMode = [String]] #'PerUser', 'PerDevice','NotConfigured
76 | }
77 | ```
78 |
79 | ### XOAP_ConfigureSessionHostCollection
80 |
81 | ```PowerShell
82 | XOAP_ConfigureSessionHostCollection [String] #ResourceName
83 | {
84 | [DependsOn = [String[]]]
85 | [PsDscRunAsCredential = [PSCredential]]
86 | [ColletionName = [String]]
87 | [AuthenticateUsingNLA = [boolean]]
88 | [ActiveSessionLimit = [Int32]]
89 | [AutomaticReconnectionEnabled = [boolean]]
90 | [BrokenConnectionAction = [String]] #'None', 'Disconnect', 'LogOff'
91 | [ClientDeviceRedirectionOptions = [String]] #'None','AudioVideoPlayBack', 'AudioRecording', 'COMPort', 'PlugAndPlayDevice', 'SmartCard', 'Clipboard', 'LPTPort', 'Drive', 'TimeZone'
92 | [ClientPrinterAsDefault = [boolean]]
93 | [ClientPrinterRedirected = [boolean]]
94 | [CollectionDescription = [String]]
95 | [ConnectionBroker = [String]]
96 | [DisconnectedSessionLimit = [Int32]]
97 | [EncryptionLevel = [String]] #'None', 'Low', 'ClientCompatible', 'High', 'FipsCompliant'
98 | [IdleSessionLimit = [Int32]]
99 | [MaxRedirectedMonitors = [Int32]] #from 1 to 16
100 | [RDEasyPrintDriverEnabled = [boolean]]
101 | [SecurityLayer = [String]] #'RDP', 'Negotiate', 'SSL'
102 | [TemporaryFoldersDeletedOnExit = [boolean]]
103 | [UserGroup = [String]]
104 | [DiskPath = [String]]
105 | [EnableUserProfileDisk = [boolean]]
106 | [ExcludeFilePath = [String]]
107 | [ExcludeFolderPath = [String]]
108 | [IncludeFilePath = [String]]
109 | [IncludeFolderPath = [String]]
110 | [MaxUserProfileDiskSizeGB = [Int32]]
111 | }
112 | ```
113 |
114 | ### XOAP_NewRDSDeployment
115 |
116 | ```PowerShell
117 | XOAP_NewRDSDeployment [String] #ResourceName
118 | {
119 | [DependsOn = [String[]]]
120 | [PsDscRunAsCredential = [PSCredential]]
121 | [XOAP_NewRDSDeployment = [String]]
122 | [SessionHostName = [String]]
123 | [WebAccessServerName = [String]]
124 | }
125 | ```
126 |
127 | ### XOAP_NewRemoteApp
128 |
129 | ```PowerShell
130 | XOAP_NewRemoteApp [String] #ResourceName
131 | {
132 | [DependsOn = [String[]]]
133 | [PsDscRunAsCredential = [PSCredential]]
134 | [Alias = [String]]
135 | [CollectionName = [String]]
136 | [Ensure = [String]] #'Present','Absent'
137 | [DisplayName = [String]]
138 | [FilePath = [String]]
139 | [FileVirtualPath = [String]]
140 | [FolderName = [String]]
141 | [CommandLineSetting = [String]] #'Allow','DoNotAllow','Require'
142 | [RequiredCommandLine = [String]]
143 | [IconIndex = [String]]
144 | [IconPath = [String]]
145 | [UserGroups = [String]]
146 | [ShowInWebAccess = [boolean]]
147 | }
148 | ```
149 |
150 | ### XOAP_NewSessionHostCollection
151 |
152 | ```PowerShell
153 | XOAP_NewSessionHostCollection [String] #ResourceName
154 | {
155 | [DependsOn = [String[]]]
156 | [PsDscRunAsCredential = [PSCredential]]
157 | [CollectionName = [String]]
158 | [SessionHosts = [String]]
159 | [CollectionDescription = [String]]
160 | [ConnectionBrokerName = [String]]
161 | }
162 | ```
163 |
164 | ### XOAP_QuickConfiguration
165 |
166 | ```PowerShell
167 | XOAP_QuickConfiguration [String] #ResourceName
168 | {
169 | [DependsOn = [String[]]]
170 | [PsDscRunAsCredential = [PSCredential]]
171 | [ConnectionBrokerServerName = [String]]
172 | [SessionHostServerName = [String]]
173 | [AllowedUserGroup = [String]]
174 | }
175 | ```
176 |
177 | ## Configuration examples for each resource
178 |
179 | To implement the Remote Desktop Services DSC module, add the following resources to your DSC configuration and adjust the parameters accordingly:
180 |
181 | ### Add server to a collection
182 |
183 | ```PowerShell
184 | Configuration 'XOAP_AddServerToCollection'
185 | {
186 | Import-DscResource -ModuleName 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_AddServerToCollection' -ModuleVersion '0.0.1'
187 |
188 | XOAP_AddServerToCollection 'Example'
189 | {
190 | ConnectionBrokerName [String]= 'connectionbroker.domain.com'
191 | CollectionName [String]= 'Example'
192 | ServerName [String]= 'hostname.domain.com'
193 | }
194 | }
195 | XOAP_AddServerToCollection
196 | ```
197 |
198 | ### Add a server to the RDS deployment
199 |
200 | ```PowerShell
201 | Configuration 'XOAP_AddServerToDeployment'
202 | {
203 | Import-DscResource -ModuleName 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_AddServerToDeployment' -ModuleVersion '0.0.1'
204 |
205 | XOAP_AddServerToDeployment 'Example'
206 | {
207 | ConnectionBrokerName [String]= 'connectionbroker.domain.com'
208 | Servername [String]= 'hostname.domain.com'
209 | ServerRole [String]= 'RDS-Virtualization'
210 | }
211 | }
212 | XOAP_AddServerToDeployment
213 | ```
214 |
215 | ### Certificate configuration
216 |
217 | ```PowerShell
218 | Configuration 'XOAP_ConfigureCertificateConfiguration'
219 | {
220 | Import-DscResource -ModuleName 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_ConfigureCertificateConfiguration' -ModuleVersion '0.0.1'
221 |
222 | XOAP_ConfigureCertificateConfiguration 'Example'
223 | {
224 | ConnectionBrokerName [String]= 'connectionbroker.domain.com'
225 | ImportPath [String]= 'hostname.domain.com'
226 | Role [String]= 'RDWebAccess'
227 | }
228 | }
229 | XOAP_ConfigureCertificateConfiguration
230 | ```
231 |
232 | ### Configure license server
233 |
234 | ```PowerShell
235 | Configuration 'XOAP_ConfigureLicenseServer'
236 | {
237 | Import-DscResource -ModuleName 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_ConfigureLicenseServer' -ModuleVersion '0.0.1'
238 |
239 | XOAP_ConfigureLicenseServer 'Example'
240 | {
241 | ConnectionBrokerName [String]= 'connectionbroker.domain.com'
242 | LicenseServer [String]= 'licenseserver.domain.com'
243 | LicenseMode [String]= 'PerUser'
244 | }
245 | }
246 | XOAP_ConfigureLicenseServer
247 | ```
248 |
249 | ### Configure Session Host Collection
250 |
251 | ```PowerShell
252 | Configuration 'XOAP_ConfigureSessionHostCollection'
253 | {
254 | Import-DscResource -ModuleName 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_ConfigureSessionHostCollection' -ModuleVersion '0.0.1'
255 |
256 | XOAP_ConfigureSessionHostCollection 'Example'
257 | {
258 | CollectionName = 'Example'
259 | AuthenticateUsingNLA = $true
260 | ActiveSessionLimit = 0
261 | AutomaticReconnectionEnabled = $true
262 | BrokenConnectionAction = 'None'
263 | ClientDeviceRedirectionOptions = 'None'
264 | ClientPrinterAsDefault = $true
265 | ClientPrinterRedirected = $true
266 | CollectionDescription = 'Example'
267 | ConnectionBroker = 'connectionbroker.domain.com'
268 | DisconnectedSessionLimit = 0
269 | EncryptionLevel = 'High'
270 | IdleSessionLimit = 0
271 | MaxRedirectedMonitors = 1
272 | RDEasyPrintDriverEnabled = $true
273 | SecurityLayer = 'SSL'
274 | TemporaryFoldersDeletedOnExit = $true
275 | UserGroup = 'domain\group'
276 | DiskPath = 'C:\'
277 | EnableUserProfileDisk = $true
278 | ExcludeFilePath = 'C:\'
279 | ExcludeFolderPath = 'C:\'
280 | IncludeFilePath = 'C:\'
281 | IncludeFolderPath = 'C:\'
282 | MaxUserProfileDiskSizeGB = 10
283 | }
284 | }
285 | XOAP_ConfigureSessionHostCollection
286 | ```
287 |
288 | ### New RDS deployment
289 |
290 | ```PowerShell
291 | Configuration 'XOAP_NewRDSDeployment'
292 | {
293 | Import-DscResource -ModuleName 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_NewRDSDeployment' -ModuleVersion '0.0.1'
294 |
295 | XOAP_NewRDSDeployment 'Example'
296 | {
297 | XOAP_NewRDSDeployment = 'Example'
298 | SessionHostName = 'hostname.domain.com'
299 | WebAccessServerName = 'webaccess.domain.com'
300 | }
301 | }
302 | XOAP_NewRDSDeployment
303 | ```
304 |
305 | ### New Remote App
306 |
307 | ```PowerShell
308 | Configuration 'XOAP_NewRemoteApp'
309 | {
310 | Import-DscResource -ModuleName 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_NewRemoteApp' -ModuleVersion '0.0.1'
311 |
312 | XOAP_NewRemoteApp 'Example'
313 | {
314 | Alias = 'Example'
315 | CollectionName = 'Example'
316 | Ensure = 'Present'
317 | DisplayName = 'Example'
318 | FilePath = 'C:\'
319 | FileVirtualPath = 'C:\'
320 | FolderName = 'Example'
321 | CommandLineSetting = 'Allow'
322 | RequiredCommandLine = 'C:\'
323 | IconIndex = '0'
324 | IconPath = 'C:\'
325 | UserGroups = 'domain\group'
326 | ShowInWebAccess = $true
327 | }
328 | }
329 | XOAP_NewRemoteApp
330 | ```
331 |
332 | ### New Session Host Collection
333 |
334 | ```PowerShell
335 | Configuration 'XOAP_NewSessionHostCollection'
336 | {
337 | Import-DscResource -ModuleName 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_NewSessionHostCollection' -ModuleVersion '0.0.1'
338 |
339 | XOAP_NewSessionHostCollection 'Example'
340 | {
341 | CollectionName = 'Example'
342 | SessionHosts = 'hostname.domain.com'
343 | CollectionDescription = 'Example'
344 | ConnectionBrokerName = 'connectionbroker.domain.com'
345 | }
346 | }
347 | XOAP_NewSessionHostCollection
348 | ```
349 |
350 | ### Quick configuration
351 |
352 | ```PowerShell
353 | Configuration 'XOAP_QuickConfiguration'
354 | {
355 | Import-DSCResource -Module 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_QuickStartConfiguration' -ModuleVersion '0.0.1'
356 |
357 | XOAP_QuickStartConfiguration 'Example'
358 | {
359 | ConnectionBrokerServerName = 'connectionbroker.domain.com'
360 | SessionHostServerName = 'hostname.domain.com'
361 | AllowedUserGroup = 'domain\group'
362 | }
363 | }
364 | XOAP_QuickStartConfiguration
365 | ```
366 |
367 | ### Example DSC configuration
368 |
369 | ```PowerShell
370 | Configuration 'XOAPRemoteDesktopServicesDSC'
371 | {
372 | Import-DSCResource -Module 'XOAPRemoteDesktopServicesDSC' -Name 'XOAP_QuickStartConfiguration' -ModuleVersion '0.0.1'
373 |
374 | param
375 | (
376 | [string[]]$ConnectionBrokerServerName = 'connectionbroker.domain.com'
377 | [string[]]$SessionHostServerName = 'sessionhost.domain.com'
378 | [string[]]$AllowedUserGroup = 'domain\group'
379 | )
380 |
381 | Node 'XOAPRemoteDesktopServicesDSC'
382 | {
383 | XOAP_QuickConfiguration 'Example'
384 | {
385 | ConnectionBrokerServerName = 'connectionbroker.domain.com'
386 | SessionHostServerName = 'hostname.domain.com'
387 | AllowedUserGroup = 'domain\group'
388 | }
389 | }
390 | }
391 | XOAPRemoteDesktopServicesDSC -OutputPath 'C:\XOAPRemoteDesktopServicesDSC'
392 | ```
393 |
--------------------------------------------------------------------------------