# Publishing Example

## Parallels RAS PowerShell - Publishing Example

\#Establish a connection with Parallels RAS (Replace Administrator with your RAS root account).\
[New-RASSession](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#New-RASSession) Administrator

\###### FARM CONFIGURATION ######

\#Add two RD Session Host servers. $RDS1 = [New-RASRDS](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#New-RASRDS) -Server "rds1.company.dom"\
$RDS2 = [New-RASRDS](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#New-RASRDS) -Server "rds2.company.dom"

\#Get the list of RD Session Host servers. $RDSList = [Get-RASRDS](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#Get-RASRDS)

\#Create a RAS RD Session Host group and add both RDS objects to it.\
$RDSGrp = [New-RASRDSGroup](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#New-RASRDSGroup) -Name "My RDS Group" -RDSObject $RDSList

\#Update default settings used to configure RD Session Host agents.\
[Set-RASRDSDefaultSettings](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#Set-RASRDSDefaultSettings) -MaxSessions 100 -EnableAppMonitoring $true

\###### PUBLISHING CONFIGURATION ######

\#Add published folders to be used by different departments. $Fld\_Acc = [New-RASPubFolder](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#New-RASPubFolder) -Name "AccDept" -Description "Accounting"\
$Fld\_Sales = [New-RASPubFolder](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#New-RASPubFolder) -Name "SalesDept" -Description "Sales"

\#Add published desktops within their respective folders. $Desk\_Acc = [New-RASPubRDSDesktop](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#New-RASPubRDSDesktop) -Name "AccPubDesktop" -ParentFolder $Fld\_Acc -DesktopSize FullScreen -PublishFrom Group -PublishFromGroup $RDSGrp\
$Desk\_Sales = [New-RASPubRDSDesktop](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#New-RASPubRDSDesktop) -Name "SalesPubDesktop" -ParentFolder $Fld\_Sales -DesktopSize Custom -Width 600 -Height 400 -PublishFrom All

\#Add published applications within their respective folders. $App\_Acc = [New-RASPubRDSApp](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#New-RASPubRDSApp) -Name "AccPubApp" -Target "C:\Windows\System32\calc.exe" -ParentFolder $Fld\_Acc -PublishFrom All -WinType Maximized -StartOnLogon\
$App\_Sales = [New-RASPubRDSApp](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#New-RASPubRDSApp) -Name "SalesPubApp" -Target "C:\Windows\System32\notepad.exe" -ParentFolder $Fld\_Sales -PublishFrom Server -PublishFromServer $RDS1

\#Update default settings used to configure published resources.\
[Set-RASPubDefaultSettings](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#Set-RASPubDefaultSettings) -CreateShortcutOnDesktop $true

\#Override shortcut default settings for a specific published application. [Set-RASPubRDSApp](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#Set-RASPubRDSApp) -InputObject $App\_Sales -InheritShorcutDefaultSettings $false -CreateShortcutOnDesktop $false

\###### PUB FILTERING CONFIGURATION ######

\#Set AD account filters by ID.\
[Add-RASRule](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#Add-RASRule) -Id $Desk\_Acc.Id -ObjType PubItem -RuleName "Rule 1"\
$Desk\_Acc\_Rules = [Get-RASRule](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#Get-RASRule) -Id $Desk\_Acc.Id -ObjType PubItem\
[Set-RASCriteria](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#Set-RASCriteria) -Id $Desk\_Acc.Id -ObjType PubItem -SecurityPrincipalsEnabled $true -RuleId $Desk\_Acc\_Rules\[0].Id\
[Add-RASCriteriaSecurityPrincipal](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#Add-RASCriteriaSecurityPrincipal) -Id $Desk\_Acc.Id -ObjType PubItem -RuleId $Desk\_Acc\_Rules\[0].Id -Account "Guests"

\#Set AD account filters by object.\
[Add-RASCriteriaSecurityPrincipal](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#Add-RASCriteriaSecurityPrincipal) -Id $Desk\_Acc.Id -ObjType PubItem -RuleId $Desk\_Acc\_Rules\[0].Id -SID "S-1-5-11"

\#Set an IP filter (with range) on application.\
[Add-RASRule](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#Add-RASRule) -InputObject $App\_Acc -RuleName "Rule 1"\
$App\_Acc\_Rules = [Get-RASRule](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#Get-RASRule) -Id $App\_Acc.Id -ObjType PubItem\
[Set-RASCriteria](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#Set-RASCriteria) -InputObject $App\_Acc -RuleId $App\_Acc\_Rules\[0].Id -IPsEnabled $true\
[Add-RASCriteriaIP](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#Add-RASCriteriaIP) -InputObject $App\_Acc -RuleId $App\_Acc\_Rules\[0].Id -IPType Version4 -IP "10.0.0.1-10.0.0.12"

\#Apply all settings. This cmdlet performs the same action as the Apply button in the RAS console.\
[Invoke-RASApply](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#Invoke-RASApply)

\#End the current RAS session.\
[Remove-RASSession](https://docs.parallels.com/landing/ras-powershell-api-guide/parallels-ras-powershell-admin-module/index#Remove-RASSession)

© 2026 Parallels International GmbH. Parallels and the Parallels logo are trademarks or registered trademarks of Parallels International GmbH in Canada, the U.S., and/or elsewhere.
