Devolutions PowerShell

!! Logo

Les produits Devolutions s'intègrent pleinement à Microsoft PowerShell, offrant des capacités de script et d'automatisation puissantes. Vous pouvez contrôler les produits Devolutions eux-mêmes et, via Remote Desktop Manager, exécuter des scripts PowerShell dans votre environnement. Avec cela à l'esprit, voici comment PowerShell est utilisé dans l'écosystème Devolutions.

Intégration

But

Référence

Devolutions.PowerShell module

Ce module PowerShell est utilisé pour interagir directement avec les produits Devolutions.

Actions de Remote Desktop Manager

Vous pouvez définir un script PowerShell à exécuter en tant qu'action par lot contre un ou plusieurs hôtes.

Rapports de Remote Desktop Manager

Ce type d'entrée supporte l'exécution d'un script PowerShell pour générer un rapport.

Types d'entrées de Remote Desktop Manager

Les types d'entrées PowerShell locales et PowerShell distantes supportent l'exécution de scripts.

Fournisseurs de gestion des accès privilégiés (PAM) et propagation

Au sein de Devolutions Server et Devolutions Hub, PowerShell alimente les fournisseurs personnalisés PAM et les scripts de propagation.

Commencer avec le module Devolutions.PowerShell

Le module Devolutions.PowerShell nécessite PowerShell 7.4 ou une version ultérieure, et est pris en charge sur les systèmes d'exploitation Windows, macOS et Linux.

Windows PowerShell ou des versions antérieures de PowerShell 7 ne sont pas prises en charge car le module PowerShell est construit à partir du même noyau que Remote Desktop Manager, et nécessite donc une version de PowerShell utilisant une version compatible de la Runtime .NET (.NET 9).

Le module Devolutions.PowerShell est disponible dans la Galerie PowerShell et c'est la méthode d'installation par défaut recommandée :

Install-Module Devolutions.PowerShell -Force

Puisque la PowerShell Gallery est généralement un dépôt marqué comme non fiable (les paquets ne sont pas modérés ni vérifiés), utiliser -Force est nécessaire pour éviter l'invite de confirmation.

Cloudsmith

En alternative à la Galerie PowerShell, nous offrons un dépôt Devolutions PowerShell hébergé par Cloudsmith.

  1. Enregistrer le dépôt Devolutions PowerShell, qui peut être marqué comme de confiance :

    Register-PSRepository -Name 'Devolutions' -SourceLocation 'https://nuget.cloudsmith.io/devolutions/powershell/v2/' -InstallationPolicy Trusted
    
  2. Désinstaller les versions précédentes du module Devolutions.PowerShell installées depuis la Galerie PowerShell :

    Uninstall-Module Devolutions.PowerShell -AllVersions
    
  3. Installer le module Devolutions.PowerShell explicitement depuis le dépôt "Devolutions" :

    Install-Module Devolutions.PowerShell -Repository Devolutions
    
  4. Confirmer que le dépôt source d'installation pour le module Devolutions.PowerShell est "Devolutions" et non "PSGallery" :

    Get-InstalledModule Devolutions.PowerShell | Select-Object -Property Name, Repository
    
    Name                   Repository
    ----                   ----------
    Devolutions.PowerShell Devolutions
    

Étant donné que le module Devolutions.PowerShell est disponible dans plus d'un dépôt enregistré, le paramètre -Repository devient obligatoire. Cependant, si vous avez marqué le dépôt "Devolutions" comme fiable, -Force n'est pas nécessaire pour éviter l'invite de confirmation.

Hors ligne

Si vous avez besoin d'installer le module Devolutions.PowerShell sur un système avec un accès Internet limité ou inexistant, vous pouvez le faire en suivant ces étapes :

  1. Créer un nouveau dépôt PowerShell appelé "local" dans le répertoire de votre choix ; l'exemple ci-dessous utilise C:\PSRepo.

    $RepoPath = "C:\PSRepo"
    New-Item -Path $RepoPath -ItemType 'Directory' -Force | Out-Null
    Register-PSRepository -Name 'local' -SourceLocation $RepoPath -PublishLocation $RepoPath -InstallationPolicy Trusted
    
  2. Télécharger le fichier .nupkg pour le module Devolutions.PowerShell en utilisant le bouton Télécharger le fichier nupkg brut sous Téléchargement manuel dans la Galerie PowerShell. Copier le fichier .nupkg dans le répertoire de dépôt PowerShell local créé précédemment.

  3. Désinstaller les versions antérieures du module Devolutions.PowerShell installées à partir d'autres sources.

    Uninstall-Module Devolutions.PowerShell -AllVersions
    
  4. Installer le module Devolutions.PowerShell explicitement depuis le dépôt local.

    Install-Module Devolutions.PowerShell -Repository local
    
  5. Confirmer que la source d'installation du module Devolutions.PowerShell est local.

    Get-InstalledModule Devolutions.PowerShell | Select-Object -Property Name, Repository
    
    Name                   Repository
    ----                   ----------
    Devolutions.PowerShell local
    

Alternativement, un répertoire sur un partage réseau peut être utilisé au lieu d'un répertoire local, ce qui facilite la distribution du module PowerShell sur un réseau local.

Exemples

Pour démarrer rapidement avec quelques exemples Devolutions.PowerShell communs, lisez ci-dessous.

Remote Desktop Manager

# [Import module]
Import-Module Devolutions.PowerShell

# [Load data source] Example for a local data source (SQLite) or SQL Server
$DatasourceLocal = Get-RDMDataSource -Name "Local data source"; Set-RDMCurrentDataSource $DatasourceLocal

$DatasourceSQL = Get-RDMDataSource -Name "SQL Server"; Set-RDMCurrentDataSource $DatasourceSQL

# [Create vault] Only the SQL Server data source supports vaults (as do Devolutions Server and Devolutions Hub)
$Vault = New-RDMRepository -Name 'MyVault' -Description 'My vault description' -SetRepository | Set-RDMCurrentRepository | Update-RDMUI

# [Retrieve vault]
Get-RDMRepository -Name 'MyVault'

# [Create entry] Example to create an RDP and Credential entry
$Entry = New-RDMSession -Host 'MyHost' -Type RDPConfigured -Name 'MyHost'; Set-RDMSession -Session $Entry -Refresh; Update-RDMUI

$Entry = New-RDMSession -Name 'MyCredential' -Type Credential; $Entry.Credentials.Username = 'Administrator'; Set-RDMSession $Entry -Refresh; Set-RDMSessionPassword -ID $Entry.ID -Password (ConvertTo-SecureString 'Test123$' -AsPlainText -Force)

# [Retrieve entries]
Get-RDMSession -GroupName 'MyFolder' -Name 'MyHost'

# [Update entry]
$Entry = Get-RDMSession -Name 'MyHost'; $Entry.Name = 'MyUpdatedHost'; Set-RDMSEssion $Entry | Update-RDMUI

# [Export entries]
$Entries = Get-RDMSession; $Entries | Select-Object * | Export-CSV 'C:\Export\FileName.csv' -NoTypeInformation

# [Remove entry]
Get-RDMSession -Name 'MyUpdatedHost' | Remove-RDMSession; Update-RDMUI

Devolutions Server

# [Import module]
Import-Module Devolutions.PowerShell

# [Load data source]
New-DSSession -Credential (Get-Credential) -BaseURI 'https://MyServer/dvls/'

# [Create vault]
$Vault = New-DSVault -Name 'MyVault' -Description 'My vault description'

# [Retrieve vault]
Get-DSVault -All | Where-Object DisplayName -EQ 'MyVault'

# [Create entry]
New-DSRDPEntry -Name 'MyHost' -HostName 'MyHost' -Username 'Administrator' -Password 'Test123$' -Domain 'MyDomain' -VaultID 'VaultGUID'

New-DSCredentialEntry -Name 'MyCredential' -Username 'Administrator' -Password 'Test123$' -Domain 'MyDomain' -VaultID 'VaultGUID'

# [Retrieve entries]
Get-DSEntry -FilterBy 'Name' -FilterMatch 'StartsWith' -FilterValue 'MyHost' -SearchAllVaults

# [Update entry]
$Entry = Get-DSEntry -EntryId 'EntryGUID'; $Entry.Name = 'MyUpdatedHost'; Update-DSEntryBase -JsonBody (ConvertTo-JSON -InputObject $Entry -Depth 10)

# [Export entries]
$Entries = Get-DSEntry -SearchAllVaults; $Entries | Select-Object * | Export-CSV 'C:\Export\FileName.csv' -NoTypeInformation

# [Remove entry]
Remove-DSEntry -EntryID 'EntryGUID'

Devolutions Hub

# [Import module]
Import-Module Devolutions.PowerShell

# [Load data source]
Connect-HubAccount -Url 'https://myhub.devolutions.app' -ApplicationKey 'ApplicationKey' -ApplicationSecret 'ApplicationSecret'

# [Create vault]
$Vault = New-HubVault -VaultName 'MyVault' -VaultDescription 'My vault description'

# [Retrieve vault]
Get-HubVault

# [Create entry]
$Entry = [Devolutions.Hub.PowerShell.Entities.Hub.PSDecryptedEntry]@{
    PsMetadata = [Devolutions.Hub.PowerShell.Entities.Hub.PSEntryMetadata]@{
        Name = 'MyHost'
        ConnectionType = [Devolutions.RemoteDesktopManager.ConnectionType]::Credential
    }
    Connection = [Devolutions.RemoteDesktopManager.Business.Connection]@{
        Credentials = [Devolutions.RemoteDesktopManager.Business.CredentialsConnection]@{
            CredentialType = [Devolutions.RemoteDesktopManager.CredentialResolverConnectionType]::Default
            UserName = 'Administrator'
            Password = 'Test123$'
        }
    }
}

New-HubEntry -VaultId 'VaultGUID' -PSDecryptedEntry $Entry

# [Retrieve entries]
Get-HubEntry -VaultId 'VaultGUID' | Where-Object { $PSItem.PSMetaData.Name -EQ 'MyHost' }

# [Update entry]
$Entry = Get-HubEntry -VaultId 'VaultGUID' -EntryId 'EntryGUID'; $Entry.PsMetadata.Name = 'MyUpdatedHost'; Set-HubEntry -VaultId 'VaultGUID' -EntryId $Entry.Entry.ID.Guid -PSDecryptedEntry $Entry

# [Export entries]
$Entries = Get-HubEntry -VaultId 'VaultGUID'; $Entries | Select-Object * | Export-CSV 'C:\Export\FileName.csv' -NoTypeInformation

# [Remove entry]
Remove-HubEntry -VaultId 'VaultGUID' -EntryId 'EntryGUID'

Désinstallation du module Devolutions.PowerShell

Désinstaller toutes les versions du module Devolutions.PowerShell :

Uninstall-Module Devolutions.PowerShell -AllVersions

Si le module est installé via Cloudsmith, vous pouvez désinscrire le dépôt "Devolutions" comme suit :

Unregister-PSRepository Devolutions

Enfin, si vous avez installé le module hors ligne, vous pouvez désenregistrer le dépôt "local" basé sur des fichiers et supprimer le répertoire associé (le nom de votre répertoire peut être différent) :

Unregister-PSRepository local
Remove-Item "C:\PSRepo" -Recurse -ErrorAction SilentlyContinue
Devolutions Forum logo Donnez-nous vos commentaires