{"id":269476,"date":"2024-06-06T14:36:59","date_gmt":"2024-06-06T14:36:59","guid":{"rendered":"https:\/\/www.ninjaone.com\/?post_type=script_hub&#038;p=269476"},"modified":"2024-06-06T14:36:59","modified_gmt":"2024-06-06T14:36:59","slug":"raccourcis-rdp-connexion-bureau-a-distance-powershell","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaonesandbox.dev\/fr\/script-hub\/raccourcis-rdp-connexion-bureau-a-distance-powershell\/","title":{"rendered":"Automatisation de la cr\u00e9ation de raccourcis RDP de connexion Bureau \u00e0 distance avec PowerShell"},"content":{"rendered":"<h2>Principaux points \u00e0 retenir<\/h2>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><strong>Cr\u00e9ation automatis\u00e9e de raccourcis<\/strong>: Le script PowerShell automatise la cr\u00e9ation de raccourcis RDP, ce qui permet de gagner du temps et de r\u00e9duire les erreurs manuelles.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><strong>Options personnalisables<\/strong>: Il offre des possibilit\u00e9s de personnalisation \u00e9tendues, notamment en ce qui concerne les param\u00e8tres d&rsquo;affichage, les informations d&rsquo;identification de l&rsquo;utilisateur et les configurations de la passerelle.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><strong>\u00c9volutivit\u00e9 pour les grands environnements<\/strong>: Il est id\u00e9al pour les entreprises MSP et les services informatiques qui g\u00e8rent plusieurs connexions \u00e0 distance.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"4\" data-aria-level=\"1\"><strong>Exigence en mati\u00e8re de droits d&rsquo;administrateur<\/strong>: Il n\u00e9cessite des privil\u00e8ges d&rsquo;administrateur pour certaines op\u00e9rations, ce qui garantit la s\u00e9curit\u00e9.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"5\" data-aria-level=\"1\"><strong>Gestion des conflits<\/strong>: Il v\u00e9rifie les options conflictuelles et guide les utilisateurs vers une configuration optimale.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"6\" data-aria-level=\"1\"><strong>Soucieux de la s\u00e9curit\u00e9<\/strong>: Priorit\u00e9 au traitement s\u00e9curis\u00e9 des informations d&rsquo;identification et au d\u00e9ploiement de raccourcis.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"7\" data-aria-level=\"1\"><strong>Am\u00e9lioration de la productivit\u00e9<\/strong>: Il simplifie et optimise le processus de gestion des connexions de bureau \u00e0 distance, am\u00e9liorant ainsi la productivit\u00e9 informatique globale.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"8\" data-aria-level=\"1\"><strong>Outils compl\u00e9mentaires<\/strong>: Peut \u00eatre associ\u00e9 efficacement \u00e0 des plateformes de gestion telles que NinjaOne pour des solutions informatiques compl\u00e8tes.<\/li>\n<\/ul>\n<p>Les raccourcis RDP <a href=\"https:\/\/www.ninjaonesandbox.dev\/fr\/blog\/qu-est-ce-que-le-protocole-rdp-remote-desktop-protocol\/\">(Remote Desktop Protocol)<\/a> sont des outils essentiels dans le monde de l&rsquo;informatique, car ils permettent une connectivit\u00e9 optimale avec les syst\u00e8mes distants. Avec l&rsquo;\u00e9volution des environnements en r\u00e9seau et le besoin croissant d&rsquo;un acc\u00e8s \u00e0 distance efficace, la capacit\u00e9 de cr\u00e9er et de g\u00e9rer rapidement ces raccourcis devient essentielle. Ce script, con\u00e7u en PowerShell, offre une approche optimis\u00e9e et personnalisable de la cr\u00e9ation de raccourcis RDP, am\u00e9liorant ainsi la productivit\u00e9 des professionnels de l&rsquo;informatique et des <a href=\"https:\/\/www.ninjaonesandbox.dev\/fr\/quest-ce-quun-msp\">fournisseurs de services g\u00e9r\u00e9s (MSP).\u00a0<\/a><\/p>\n<h2>Contexte et importance du script PowerShell<\/h2>\n<p>Traditionnellement, la cr\u00e9ation et la gestion des raccourcis RDP impliquaient des processus manuels, ce qui pouvait prendre du temps et entra\u00eener des erreurs, en particulier dans les environnements informatiques dynamiques ou \u00e0 grande \u00e9chelle. Ce script PowerShell rel\u00e8ve ce d\u00e9fi en automatisant la cr\u00e9ation de raccourcis RDP avec des param\u00e8tres d\u00e9finis par l&rsquo;utilisateur. Une telle automatisation est particuli\u00e8rement b\u00e9n\u00e9fique pour les \u00e9quipes informatiques qui g\u00e8rent plusieurs connexions \u00e0 distance et pour les fournisseurs de services d&rsquo;assistance technique qui doivent d\u00e9ployer rapidement des solutions d&rsquo;acc\u00e8s \u00e0 distance pour leurs clients.<\/p>\n<h2>Le script PowerShell\u00a0:<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\">&lt;#\r\n.SYNOPSIS\r\n    This script will create an rdp desktop shortcut with your specified options. It can create a shortcut for all users (including new ones) or existing ones only.\r\n.DESCRIPTION\r\n    This script will create an rdp desktop shortcut with your specified options. \r\n    It can create a shortcut for all users (including new ones) or existing ones only.\r\n.EXAMPLE\r\n    To Create a windowed RDP Shortcut simply specify the size, the name of the shortcut and which users the shortcut is for. You can also specify \"MultiMon\" for multi-monitor support. Or a gateway to use.\r\n    \r\n    PS C:&gt; .\/Create-DesktopShortcut.ps1 -Name \"Test\" -RDPTarget \"SRV19-TEST\" -RDPUser \"TESTjsmith\" -Width \"1920\" -Height \"1080\" -AllExistingUsers -ExcludeUsers \"ChrisWashington,JohnLocke\"\r\n    \r\n    Creating Shortcut at C:UsersJohnSmithDesktopTest.rdp\r\n\r\n.PARAMETER NAME\r\n    Name of the shortcut ex. \"Login Portal\".\r\n\r\n.PARAMETER RDPtarget\r\n    IP Address or DNS Name and port to the RDS Host ex. \"TEST-RDSH:28665\".\r\n\r\n.PARAMETER RDPuser\r\n    Username to autofill in username field.\r\n\r\n.PARAMETER AlwaysPrompt \r\n    Always Prompt for credentials.\r\n\r\n.PARAMETER Gateway\r\n    IP Address or DNS Name and port of the RD Gateway ex. \"TESTrdp.example.com:4433\".\r\n\r\n.PARAMETER SeperateGateWayCreds\r\n    If the RDS Gateway uses different creds than the Session Host use this parameter.\r\n\r\n.PARAMETER FullScreen\r\n    RDP Shortcut should open window in 'FullScreen' mode.\r\n\r\n.PARAMETER MultiMon\r\n    RDP Shortcut should open window with Multi-Monitor Support enabled.\r\n\r\n.PARAMETER Width\r\n    Width of RDP Window should open ex. \"1920\".\r\n\r\n.PARAMETER Height\r\n    Height of RDP Window shortcut should open ex. \"1080\".\r\n\r\n.PARAMETER AllExistingUsers\r\n    Create the Shortcut for all existing users but not new users ex. C:Users*Desktopshortcut.lnk.\r\n\r\n.PARAMETER ExcludeUsers\r\n    Comma seperated list of users to exclude from shortcut placement.\r\n\r\n.PARAMETER AllUsers\r\n    Create the Shortcut in C:UsersPublicDesktop.\r\n\r\n.OUTPUTS\r\n    None\r\n.NOTES\r\n    Minimum OS Architecture Supported: Windows 7, Windows Server 2008\r\n    Release Notes: Renamed script, Split script into three, added Script Variable support, fixed bugs in RDP Shortcut\r\nBy using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https:\/\/www.ninjaonesandbox.dev\/terms-of-use.\r\n    Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. \r\n    Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. \r\n    Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. \r\n    Warranty Disclaimer: The script is provided \u201cas is\u201d and \u201cas available\u201d, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. \r\n    Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. \r\n    Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. \r\n    EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).\r\n#&gt;\r\n\r\n[CmdletBinding()]\r\nparam (\r\n    [Parameter()]\r\n    [String]$Name,\r\n    [Parameter()]\r\n    [String]$RDPtarget,\r\n    [Parameter()]\r\n    [String]$RDPuser,\r\n    [Parameter()]\r\n    [Switch]$AlwaysPrompt = [System.Convert]::ToBoolean($env:alwaysPromptForRdpCredentials),\r\n    [Parameter()]\r\n    [String]$Gateway,\r\n    [Parameter()]\r\n    [Switch]$SeparateGateWayCreds = [System.Convert]::ToBoolean($env:separateRdpGatewayCredentials),\r\n    [Parameter()]\r\n    [Switch]$FullScreen,\r\n    [Parameter()]\r\n    [Switch]$MultiMon,\r\n    [Parameter()]\r\n    [Int]$Width,\r\n    [Parameter()]\r\n    [Int]$Height,\r\n    [Parameter()]\r\n    [Switch]$AllExistingUsers,\r\n    [Parameter()]\r\n    [Switch]$AllUsers\r\n)\r\n\r\nbegin {\r\n\r\n    # Replace existing params with form variables if they're used.\r\n    if ($env:shortcutName -and $env:shortcutName -notlike \"null\") { $Name = $env:shortcutName }\r\n    if ($env:createTheShortcutFor -and $env:createTheShortcutFor -notlike \"null\") { \r\n        if ($env:createTheShortcutFor -eq \"All Users\") { $AllUsers = $True }\r\n        if ($env:createTheShortcutFor -eq \"All Existing Users\") { $AllExistingUsers = $True }\r\n    }\r\n    if ($env:rdpServerAddress -and $env:rdpServerAddress -notlike \"null\") { $RDPtarget = $env:rdpServerAddress }\r\n    if ($env:rdpUsername -and $env:rdpUsername -notlike \"null\") { $RDPuser = $env:rdpUsername }\r\n    if ($env:rdpGatewayServerAddress -and $env:rdpGatewayServerAddress -notlike \"null\") { $Gateway = $env:rdpGatewayServerAddress }\r\n    if ($env:rdpWindowSize -and $env:rdpWindowSize -notlike \"null\") {\r\n        if ($env:rdpWindowSize -eq \"Fullscreen Multiple Monitor Mode\") { $MultiMon = $True }\r\n        if ($env:rdpWindowSize -eq \"Fullscreen\") { $FullScreen = $True }\r\n    }\r\n    if ($env:customRdpWindowWidth -and $env:customRdpWindowWidth -notlike \"null\") { $Width = $env:customRdpWindowWidth }\r\n    if ($env:customRdpWindowHeight -and $env:customRdpWindowHeight -notlike \"null\") { $Height = $env:customRdpWindowHeight }\r\n\r\n    # Output warnings for conflicting options.\r\n    if (($Width -and -not $Height ) -or ($Height -and -not $Width)) {\r\n        Write-Warning \"You forgot to include both the width and height. RDP Window will be in fullscreen mode.\"\r\n    }\r\n\r\n    if (($Width -or $Height) -and ($FullScreen -or $MultiMon)) {\r\n        if ($MultiMon) {\r\n            Write-Warning \"Conflicting Display Option selected. Using Fullscreen Multi-monitor.\"\r\n        }\r\n        else {\r\n            Write-Warning \"Conflicting Display Option selected. Using Fullscreen.\"\r\n        }\r\n    }\r\n\r\n    # Double-check that a user is specified for shortcut creation.\r\n    if (-not $AllUsers -and -not $AllExistingUsers -and -not $User) {\r\n        Write-Error \"You must specify which desktop to create the shortcut on!\"\r\n        exit 1\r\n    }\r\n\r\n    # Double-check that a shortcut name was provided.\r\n    if (-not $Name -or -not $RDPtarget) {\r\n        Write-Error \"You must specify a name and target for the shortcut!\"\r\n        exit 1\r\n    }\r\n\r\n    # Creating a shortcut at C:UsersPublicDesktop requires admin rights.\r\n    function Test-IsElevated {\r\n        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()\r\n        $p = New-Object System.Security.Principal.WindowsPrincipal($id)\r\n        $p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)\r\n    }\r\n\r\n    if (!(Test-IsElevated)) {\r\n        Write-Error -Message \"Access Denied. Please run with Administrator privileges.\"\r\n        exit 1\r\n    }\r\n\r\n    # Retrieve all registry paths for actual users (excluding system or network service accounts).\r\n    function Get-UserHives {\r\n        param (\r\n            [Parameter()]\r\n            [ValidateSet('AzureAD', 'DomainAndLocal', 'All')]\r\n            [String]$Type = \"All\",\r\n            [Parameter()]\r\n            [String[]]$ExcludedUsers,\r\n            [Parameter()]\r\n            [switch]$IncludeDefault\r\n        )\r\n\r\n        # User account SIDs follow a particular pattern depending on whether they're Azure AD, Domain, or local \"workgroup\" accounts.\r\n        $Patterns = switch ($Type) {\r\n            \"AzureAD\" { \"S-1-12-1-(d+-?){4}$\" }\r\n            \"DomainAndLocal\" { \"S-1-5-21-(d+-?){4}$\" }\r\n            \"All\" { \"S-1-12-1-(d+-?){4}$\" ; \"S-1-5-21-(d+-?){4}$\" } \r\n        }\r\n\r\n        # We'll need the NTuser.dat file to load each users registry hive. So we grab it if their account sid matches the above pattern. \r\n        $UserProfiles = Foreach ($Pattern in $Patterns) { \r\n            Get-ItemProperty \"HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionProfileList*\" |\r\n                Where-Object { $_.PSChildName -match $Pattern } | \r\n                Select-Object @{Name = \"SID\"; Expression = { $_.PSChildName } }, \r\n                @{Name = \"UserHive\"; Expression = { \"$($_.ProfileImagePath)NTuser.dat\" } }, \r\n                @{Name = \"UserName\"; Expression = { \"$($_.ProfileImagePath | Split-Path -Leaf)\" } },\r\n                @{Name = \"Path\"; Expression = { $_.ProfileImagePath } }\r\n        }\r\n\r\n        # In some cases, it's necessary to retrieve the .Default user's information.\r\n        switch ($IncludeDefault) {\r\n            $True {\r\n                $DefaultProfile = \"\" | Select-Object UserName, SID, UserHive, Path\r\n                $DefaultProfile.UserName = \"Default\"\r\n                $DefaultProfile.SID = \"DefaultProfile\"\r\n                $DefaultProfile.Userhive = \"$env:SystemDriveUsersDefaultNTUSER.DAT\"\r\n                $DefaultProfile.Path = \"C:UsersDefault\"\r\n\r\n                $DefaultProfile | Where-Object { $ExcludedUsers -notcontains $_.UserName }\r\n            }\r\n        }\r\n\r\n        $UserProfiles | Where-Object { $ExcludedUsers -notcontains $_.UserName }\r\n    }\r\n}\r\nprocess {\r\n    $ShortcutPath = New-Object System.Collections.Generic.List[String]\r\n\r\n    # Create the filenames for the path.\r\n    if ($RDPTarget) { $File = \"$Name.rdp\" }\r\n\r\n    # Build the paths and add them to the ShortcutPath list.\r\n    if ($AllUsers) { $ShortcutPath.Add(\"$env:PublicDesktop$File\") }\r\n\r\n    if ($AllExistingUsers) {\r\n        $UserProfiles = Get-UserHives\r\n        # Loop through each user profile\r\n        $UserProfiles | ForEach-Object { $ShortcutPath.Add(\"$($_.Path)Desktop$File\") }\r\n    }\r\n\r\n    if ($User) { \r\n        $UserProfile = Get-UserHives | Where-Object { $_.Username -like $User }\r\n        $ShortcutPath.Add(\"$($UserProfile.Path)Desktop$File\")\r\n    }\r\n\r\n    $RDPFile = New-Object System.Collections.Generic.List[String]\r\n\r\n    # Base template of an .RDP file. Additional options will be appended based on user selection.\r\n    $Template = @\"\r\nsession bpp:i:32\r\ncompression:i:1\r\nkeyboardhook:i:2\r\naudiocapturemode:i:0\r\nvideoplaybackmode:i:1\r\nconnection type:i:7\r\nnetworkautodetect:i:1\r\nbandwidthautodetect:i:1\r\ndisplayconnectionbar:i:1\r\nenableworkspacereconnect:i:0\r\ndisable wallpaper:i:0\r\nallow font smoothing:i:0\r\nallow desktop composition:i:0\r\ndisable full window drag:i:1\r\ndisable menu anims:i:1\r\ndisable themes:i:0\r\ndisable cursor setting:i:0\r\nbitmapcachepersistenable:i:1\r\naudiomode:i:0\r\nredirectprinters:i:1\r\nredirectcomports:i:0\r\nredirectsmartcards:i:1\r\nredirectwebauthn:i:1\r\nredirectclipboard:i:1\r\nredirectposdevices:i:0\r\nautoreconnection enabled:i:1\r\nauthentication level:i:2\r\nnegotiate security layer:i:1\r\nremoteapplicationmode:i:0\r\nalternate shell:s:\r\nshell working directory:s:\r\ngatewaycredentialssource:i:4\r\ngatewaybrokeringtype:i:0\r\nuse redirection server name:i:0\r\nrdgiskdcproxy:i:0\r\nkdcproxyname:s:\r\nenablerdsaadauth:i:0\r\n\"@\r\n    $RDPFile.Add($Template)\r\n\r\n    # This will generate the actual .rdp file\r\n    $ShortcutPath | ForEach-Object {\r\n        $RDPFile.Add(\"full address:s:$RDPTarget\")\r\n        $RDPFile.Add(\"gatewayhostname:s:$Gateway\")\r\n\r\n        if ($Width) { $RDPFile.Add(\"desktopwidth:i:$Width\") }\r\n        if ($Height) { $RDPFile.Add(\"desktopheight:i:$Height\") }\r\n        if ($MultiMon) { $RDPFile.Add(\"use multimon:i:1\") }else { $RDPFile.Add(\"use multimon:i:0\") }\r\n        if ($FullScreen -or $MultiMon -or !$Height -or !$Width) { $RDPFile.Add(\"screen mode id:i:2\") }else { $RDPFile.Add(\"screen mode id:i:1\") }\r\n        if ($AlwaysPrompt) { $RDPFile.Add(\"prompt for credentials:i:1\") }else { $RDPFile.Add(\"prompt for credentials:i:0\") }\r\n        if ($Gateway) { $RDPFile.Add(\"gatewayusagemethod:i:2\") }else { $RDPFile.Add(\"gatewayusagemethod:i:4\") }\r\n        if ($SeparateGateWayCreds) { \r\n            $RDPFile.Add(\"promptcredentialonce:i:0\")\r\n            $RDPFile.Add(\"gatewayprofileusagemethod:i:1\")  \r\n        }\r\n        else { \r\n            $RDPFile.Add(\"promptcredentialonce:i:1\") \r\n            if ($Gateway) { $RDPFile.Add(\"gatewayprofileusagemethod:i:0\") }\r\n        }\r\n            \r\n        if ($RDPUser) { $RDPFile.Add(\"username:s:$RDPUser\") }\r\n\r\n        Write-Host \"Creating Shortcut at $_\"\r\n        $RDPFile | Out-File $_\r\n\r\n        if (!(Test-Path $_ -ErrorAction SilentlyContinue)) {\r\n            Write-Error \"Unable to create Shortcut at $_\"\r\n            exit 1\r\n        }\r\n    }\r\n\r\n    exit 0\r\n}end {\r\n    \r\n    \r\n    \r\n}<\/pre>\n<p>&nbsp;<\/p>\n\n<div class=\"in-context-cta\"><p>Acc\u00e9dez \u00e0 plus de 700 scripts dans le Dojo NinjaOne<\/p>\n<p><a href=\"https:\/\/www.ninjaonesandbox.dev\/fr\/phase-de-test-gratuit\/\">Obtenir l&rsquo;acc\u00e8s<\/a><\/p>\n<\/div>\n<h2>Exploration du script : une analyse \u00e9tape par \u00e9tape<\/h2>\n<p>Le script commence par un synopsis et une description, qui donnent un aper\u00e7u clair de sa fonctionnalit\u00e9. Il d\u00e9crit ensuite des param\u00e8tres tels que le nom du raccourci, le serveur RDP cible, les informations d&rsquo;identification de l&rsquo;utilisateur, les options d&rsquo;affichage (telles que le plein \u00e9cran ou la prise en charge de plusieurs \u00e9crans) et le choix de cr\u00e9er des raccourcis pour tous les utilisateurs ou pour certains d&rsquo;entre eux.<\/p>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><strong>D\u00e9finition des param\u00e8tres<\/strong>: Le script d\u00e9finit divers param\u00e8tres permettant de personnaliser le raccourci RDP. Il s&rsquo;agit de d\u00e9tails de base tels que le nom du raccourci, la cible RDP et l&rsquo;utilisateur, ainsi que d&rsquo;options plus avanc\u00e9es telles que la taille de la fen\u00eatre, la prise en charge de plusieurs moniteurs et la configuration de la passerelle.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><strong>Variables d&rsquo;environnement et v\u00e9rification des conflits<\/strong>: Le script v\u00e9rifie et remplace les param\u00e8tres par des variables d&rsquo;environnement si elles sont disponibles. Il \u00e9met \u00e9galement des avertissements en cas d&rsquo;options contradictoires, comme le fait de sp\u00e9cifier \u00e0 la fois le plein \u00e9cran et la taille de la fen\u00eatre.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><strong>Gestion des droits d&rsquo;administrateur et des profils d&rsquo;utilisateurs<\/strong>: Le script comprend une fonction de v\u00e9rification des droits d&rsquo;administrateur, n\u00e9cessaires pour cr\u00e9er des raccourcis dans certains r\u00e9pertoires. Il contient \u00e9galement une fonction permettant de r\u00e9cup\u00e9rer les profils des utilisateurs, \u00e0 l&rsquo;exclusion des comptes syst\u00e8me, ce qui est essentiel pour d\u00e9ployer des raccourcis vers des bureaux d&rsquo;utilisateurs sp\u00e9cifiques.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"4\" data-aria-level=\"1\"><strong>Processus de cr\u00e9ation de raccourcis<\/strong>: Le script g\u00e9n\u00e8re le fichier .RDP en ajoutant les options s\u00e9lectionn\u00e9es par l&rsquo;utilisateur \u00e0 un mod\u00e8le de base. Il parcourt ensuite les chemins d&rsquo;acc\u00e8s d\u00e9termin\u00e9s, en cr\u00e9ant le fichier RDP \u00e0 chaque emplacement.<\/li>\n<\/ul>\n<h2>Cas d&rsquo;utilisation potentiels : application dans le monde r\u00e9el<\/h2>\n<p>Imaginez une entreprise MSP charg\u00e9e de g\u00e9rer l&rsquo;acc\u00e8s \u00e0 distance d&rsquo;une entreprise compos\u00e9e de plusieurs d\u00e9partements, chacun n\u00e9cessitant des configurations RDP sp\u00e9cifiques. Gr\u00e2ce \u00e0 ce script, l&rsquo;entreprise MSP peut rapidement g\u00e9n\u00e9rer des raccourcis RDP personnalis\u00e9s pour chaque d\u00e9partement, les d\u00e9ployer sur les bureaux des utilisateurs respectifs de mani\u00e8re efficace et r\u00e9duire consid\u00e9rablement le temps de configuration manuelle.<\/p>\n<h2>Analyse comparative : script vs. m\u00e9thodes traditionnelles<\/h2>\n<p>Par rapport \u00e0 la cr\u00e9ation manuelle de raccourcis RDP, ce script offre des avantages significatifs en termes d&rsquo;\u00e9volutivit\u00e9, de personnalisation et de r\u00e9duction des erreurs. Si les m\u00e9thodes manuelles peuvent suffire pour des installations individuelles, elles deviennent peu pratiques dans des environnements plus vastes et plus dynamiques, o\u00f9 ce script peut g\u00e9rer sans effort des configurations complexes.<\/p>\n<h2>Questions fr\u00e9quemment pos\u00e9es<\/h2>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><strong>Le script peut-il g\u00e9rer des identifiants diff\u00e9rents pour le RDP et la passerelle ?<\/strong><br \/>\nOui, il comprend un param\u00e8tre pour des informations d&rsquo;identification distinctes pour la passerelle.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><strong>Est-il possible d&rsquo;exclure certains utilisateurs ?<\/strong><br \/>\nLe script permet d&rsquo;exclure des utilisateurs sp\u00e9cifiques.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><strong>Comment le script assure-t-il la s\u00e9curit\u00e9 ?<\/strong><br \/>\nIl n\u00e9cessite des privil\u00e8ges d&rsquo;administrateur et g\u00e8re soigneusement les informations d&rsquo;identification des utilisateurs.<\/li>\n<\/ul>\n<h2>Implications et consid\u00e9rations de s\u00e9curit\u00e9<\/h2>\n<p>Bien que ce script simplifie consid\u00e9rablement la cr\u00e9ation de raccourcis RDP, il est essentiel de tenir compte des implications en mati\u00e8re de s\u00e9curit\u00e9. Il est essentiel de traiter correctement les informations d&rsquo;identification et de veiller \u00e0 ce que les raccourcis ne soient d\u00e9ploy\u00e9s que pour les utilisateurs autoris\u00e9s. De plus, les MSP doivent r\u00e9guli\u00e8rement revoir les configurations des raccourcis afin de maintenir les normes de s\u00e9curit\u00e9.<\/p>\n<h2>Bonnes pratiques pour l&rsquo;utilisation des scripts<\/h2>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"4\" data-aria-level=\"1\"><strong>Tests approfondis<\/strong>: Avant de proc\u00e9der \u00e0 un d\u00e9ploiement g\u00e9n\u00e9ralis\u00e9, testez minutieusement le script dans un environnement contr\u00f4l\u00e9.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"5\" data-aria-level=\"1\"><strong>Mises \u00e0 jour r\u00e9guli\u00e8res<\/strong>: Maintenez le script \u00e0 jour en fonction des modifications apport\u00e9es \u00e0 l&rsquo;infrastructure du r\u00e9seau.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"6\" data-aria-level=\"1\"><strong>Contr\u00f4les de s\u00e9curit\u00e9<\/strong>: Examinez r\u00e9guli\u00e8rement les d\u00e9ploiements de raccourcis pour d\u00e9tecter d&rsquo;\u00e9ventuelles vuln\u00e9rabilit\u00e9s en mati\u00e8re de s\u00e9curit\u00e9.<\/li>\n<\/ul>\n<h2>Conclusion\u00a0: Am\u00e9liorez la gestion des connexions de bureau \u00e0 distance avec NinjaOne<\/h2>\n<p>En conclusion, ce script PowerShell est un outil puissant pour cr\u00e9er et g\u00e9rer des raccourcis RDP, offrant personnalisation et efficacit\u00e9. Des outils comme NinjaOne compl\u00e8tent ces scripts en fournissant une <a href=\"https:\/\/www.ninjaonesandbox.dev\/fr\/\">plateforme unifi\u00e9e pour la gestion des op\u00e9rations informatiques<\/a>, y compris les connexions de bureau \u00e0 distance, optimisant ainsi les t\u00e2ches de gestion informatique et am\u00e9liorant la productivit\u00e9 globale et la s\u00e9curit\u00e9 dans les environnements de travail \u00e0 distance.<\/p>\n","protected":false},"author":35,"featured_media":193910,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","_lmt_disableupdate":"no","_lmt_disable":""},"operating_system":[4212],"use_cases":[4281],"class_list":["post-269476","script_hub","type-script_hub","status-publish","has-post-thumbnail","hentry","script_hub_category-windows"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaonesandbox.dev\/fr\/wp-json\/wp\/v2\/script_hub\/269476","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaonesandbox.dev\/fr\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaonesandbox.dev\/fr\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaonesandbox.dev\/fr\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaonesandbox.dev\/fr\/wp-json\/wp\/v2\/comments?post=269476"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ninjaonesandbox.dev\/fr\/wp-json\/wp\/v2\/media\/193910"}],"wp:attachment":[{"href":"https:\/\/www.ninjaonesandbox.dev\/fr\/wp-json\/wp\/v2\/media?parent=269476"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaonesandbox.dev\/fr\/wp-json\/wp\/v2\/operating_system?post=269476"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaonesandbox.dev\/fr\/wp-json\/wp\/v2\/use_cases?post=269476"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}