{"id":248334,"date":"2024-04-30T16:06:06","date_gmt":"2024-04-30T16:06:06","guid":{"rendered":"https:\/\/www.ninjaone.com\/?post_type=script_hub&#038;p=248334"},"modified":"2024-04-30T16:06:06","modified_gmt":"2024-04-30T16:06:06","slug":"detection-des-comptes-d-utilisateurs-inactifs-avec-powershell","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/fr\/script-hub\/detection-des-comptes-d-utilisateurs-inactifs-avec-powershell\/","title":{"rendered":"Automatiser la d\u00e9tection des comptes d&rsquo;utilisateurs inactifs avec PowerShell"},"content":{"rendered":"<h2>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;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>Protocole de s\u00e9curit\u00e9 automatis\u00e9<\/strong>: Le script automatise l&rsquo;identification des comptes d&rsquo;utilisateurs inactifs, ce qui renforce 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;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>Seuil personnalisable<\/strong>: Ajustez le seuil d&rsquo;inactivit\u00e9 en fonction des politiques de l&rsquo;organisation.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&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>Compatibilit\u00e9 multi-environnementale<\/strong>: Capable de g\u00e9rer des comptes locaux, Active Directory et Azure AD.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&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>Efficace en termes de temps et de ressources<\/strong>: Automatise un processus manuel qui prendrait beaucoup de temps.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&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 proactive des risques<\/strong>: Permet d&rsquo;\u00e9viter les failles de s\u00e9curit\u00e9 en g\u00e9rant les vuln\u00e9rabilit\u00e9s potentielles.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&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>Transparence et flexibilit\u00e9<\/strong>: Comme il s&rsquo;agit d&rsquo;un script PowerShell, il est transparent et personnalisable pour r\u00e9pondre \u00e0 des besoins sp\u00e9cifiques.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&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>Audits programm\u00e9s<\/strong>: Il peut \u00eatre configur\u00e9 pour fonctionner \u00e0 intervalles r\u00e9guliers pour une surveillance continue.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&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\">Des<strong>rapports complets<\/strong>: G\u00e9n\u00e8re des rapports d\u00e9taill\u00e9s sur les comptes inactifs, ce qui facilite la prise de d\u00e9cision.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&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=\"9\" data-aria-level=\"1\"><strong>Int\u00e9gration avec les outils de gestion<\/strong>: Compl\u00e8te et s&rsquo;int\u00e8gre \u00e0 des solutions de gestion informatique telles que NinjaOne.<\/li>\n<\/ul>\n<p>Dans le paysage dynamique de la gestion informatique, la s\u00e9curit\u00e9 et l&rsquo;efficacit\u00e9 de la gestion des comptes utilisateurs restent primordiales. Contr\u00f4ler et traiter r\u00e9guli\u00e8rement les comptes d&rsquo;utilisateurs inactifs n&rsquo;est pas seulement une bonne pratique, c&rsquo;est aussi une n\u00e9cessit\u00e9 pour maintenir un environnement informatique s\u00fbr. C&rsquo;est l\u00e0 que les <a href=\"https:\/\/www.ninjaone.com\/fr\/script-hub\">scripts PowerShell<\/a>, comme celui dont nous parlons aujourd&rsquo;hui, deviennent des outils inestimables pour les professionnels de l&rsquo;informatique et les <a href=\"https:\/\/www.ninjaone.com\/fr\/quest-ce-quun-msp\">fournisseurs de services g\u00e9r\u00e9s (MSP)<\/a>. <a href=\"https:\/\/www.ninjaone.com\/fr\/quest-ce-quun-msp\">\u00a0<\/a><\/p>\n<h2>Contexte<\/h2>\n<p>Le script en question est con\u00e7u pour identifier et alerter les administrateurs sur les comptes inactifs ou inutilis\u00e9s dans un environnement Windows. Les comptes inactifs peuvent repr\u00e9senter un risque important pour la s\u00e9curit\u00e9, en servant de points d&rsquo;entr\u00e9e potentiels pour un acc\u00e8s non autoris\u00e9 s&rsquo;ils sont compromis. Pour les professionnels de l&rsquo;informatique et les MSP, ces scripts sont essentiels pour rem\u00e9dier de mani\u00e8re pr\u00e9ventive aux failles de s\u00e9curit\u00e9 et <a href=\"https:\/\/www.ninjaone.com\/blog\/it-compliance\/\">garantir la conformit\u00e9<\/a> avec les diff\u00e9rentes politiques et r\u00e9glementations en mati\u00e8re d&rsquo;informatique.<\/p>\n<h2>Le script :<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\">&lt;#\r\n.SYNOPSIS\r\n    Alerts when there is an inactive \/ unused account that has not logged in or has not had their password set in the specified number of days.\r\n.DESCRIPTION\r\n    Alerts when there is an inactive \/ unused account that has not logged in or has not had their password set in the specified number of days.\r\n.EXAMPLE\r\n    -IncludeDisabled\r\n    \r\n    Action completed: Run Monitor Account Last Logon Result: FAILURE Output: Action: Run Monitor Account Last Logon, Result: Failed\r\n    WARNING: Inactive accounts detected!\r\n\r\n    Username       PasswordLastSet       LastLogon              Enabled\r\n    --------       ---------------       ---------              -------\r\n    Administrator  4\/12\/2023 9:05:18 AM  11\/28\/2023 10:31:06 AM    True\r\n    Guest                                12\/31\/1600 4:00:00 PM    False\r\n    DefaultAccount                       12\/31\/1600 4:00:00 PM    False\r\n    kbohlander     11\/29\/2023 1:49:51 PM 12\/5\/2023 1:09:43 PM      True\r\n    tuser1         12\/1\/2023 5:59:58 PM  12\/4\/2023 9:34:32 AM      True\r\n    krbtgt         11\/27\/2023 3:40:20 PM 12\/31\/1600 4:00:00 PM    False\r\n    tuser2         12\/4\/2023 3:40:27 PM  12\/31\/1600 4:00:00 PM     True\r\n.EXAMPLE\r\n    -Days 60\r\n    \r\n    Action completed: Run Monitor Account Last Logon Result: FAILURE Output: Action: Run Monitor Account Last Logon, Result: Failed\r\n    WARNING: Inactive accounts detected!\r\n\r\n    Username       PasswordLastSet       LastLogon              Enabled\r\n    --------       ---------------       ---------              -------\r\n    Administrator  4\/12\/2023 9:05:18 AM  11\/28\/2023 10:31:06 AM    True\r\n    kbohlander     11\/29\/2023 1:49:51 PM 12\/5\/2023 1:09:43 PM      True\r\n    tuser1         12\/1\/2023 5:59:58 PM  12\/4\/2023 9:34:32 AM      True\r\n    tuser2         12\/4\/2023 3:40:27 PM  12\/31\/1600 4:00:00 PM     True\r\n.OUTPUTS\r\n    None\r\n.NOTES\r\n    Minimum OS Architecture Supported: Windows 7, Windows Server 2012\r\n    Exit code 1: Found users that haven't logged in over X days and are enabled.\r\n    Exit code 2: Calling \"net.exe user\" or \"Get-LocalUser\" failed.\r\n    Release Notes: Renamed script, added Script Variable support, improved ad support, removed requires statement.\r\nBy using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https:\/\/www.ninjaone.com\/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    [int]$Days = 90,\r\n    [Parameter()]\r\n    [switch]$IncludeDisabled = [System.Convert]::ToBoolean($env:includeDisabled)\r\n)\r\n\r\nbegin {\r\n    # Use script variables if available.\r\n    if ($env:days -and $env:days -notlike \"null\") {\r\n        $Days = $env:Days\r\n    }\r\n\r\n    # Change negative days to the expected positive days\r\n    if ($Days -lt 0) {\r\n        $Days = 0 - $Days\r\n    }\r\n\r\n    # Date where an account is considered inactive.\r\n    $InactivityCutOff = (Get-Date).AddDays(-$Days)\r\n\r\n    function Test-IsDomainJoined {\r\n        if ($PSVersionTable.PSVersion.Major -lt 5) {\r\n            return $(Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain\r\n        }\r\n        else {\r\n            return $(Get-CimInstance -Class Win32_ComputerSystem).PartOfDomain\r\n        }\r\n    }\r\n\r\n    function Test-IsDomainController {\r\n        $OS = if ($PSVersionTable.PSVersion.Major -lt 5) {\r\n            Get-WmiObject -Class Win32_OperatingSystem\r\n        }\r\n        else {\r\n            Get-CimInstance -ClassName Win32_OperatingSystem\r\n        }\r\n\r\n        if ($OS.ProductType -eq \"2\") {\r\n            return $true\r\n        }\r\n    }\r\n\r\n    # We'll want to warn that we're unable to check the actual Azure AD account \r\n    # (it requires O365 credentials and a powershell module both of which are not supported by this script).\r\n    function Test-IsAzureJoined {\r\n        try {\r\n            $dsreg = dsregcmd.exe \/status | Select-String \"AzureAdJoined : YES\"\r\n        }\r\n        catch {\r\n            return $False\r\n        }\r\n        if ($dsreg) { return $True }\r\n    }\r\n\r\n    # For Non-Domain Controllers we'll check net user for the information we need.\r\n    function Get-NetAccountInfo {\r\n        [CmdletBinding()]\r\n        param(\r\n            [Parameter()]\r\n            [string]$User,\r\n            [Parameter()]\r\n            [switch]$Domain\r\n        )\r\n        process {\r\n            # Get user info from net.exe user\r\n            $netuser = if ($Domain) { net.exe user $user \/Domain }else { net.exe user $user }\r\n\r\n            $success = $netuser | Select-String 'The command completed successfully.'\r\n            if (-not $success) {\r\n                throw \"Failed to retrieve account info for user $user!\"\r\n            }\r\n\r\n            #Pre-formatted Object\r\n            $Object = New-Object psobject -Property @{\r\n                Username        = $User\r\n                Name            = \"$(($netuser | Select-String 'Full Name') -split '  ' | Select-Object -Last 1)\".Trim()\r\n                Enabled         = \"$(($netuser | Select-String 'Account active') -split '  ' | Select-Object -Last 1)\".Trim()\r\n                LastLogon       = \"$(($netuser | Select-String 'Last logon') -split '  ' | Select-Object -Last 1)\".Trim()\r\n                PasswordLastSet = \"$(($netuser | Select-String 'Password last set') -split '  ' | Select-Object -Last 1)\".Trim()\r\n            }\r\n\r\n            # Formatted object using PowerShell datatypes (for easier parsing later).\r\n            New-Object psobject -Property @{\r\n                Username        = $Object.Username\r\n                Name            = $Object.Name\r\n                Enabled         = if ($Object.Enabled -eq \"Yes\") { $True }elseif ($Object.Enabled -eq \"No\") { $False }else { $Object.Enabled }\r\n                LastLogon       = try { Get-Date $Object.LastLogon }catch { $Object.LastLogon };\r\n                PasswordLastSet = try { Get-Date $Object.PasswordLastSet }catch { $Object.PasswordLastSet }\r\n            }\r\n        }\r\n    }\r\n}\r\nprocess {\r\n\r\n    # If it's an azure joined machine we should warn that we're not checking any of the Azure AD Accounts.\r\n    if (Test-IsAzureJoined) {\r\n        Write-Warning -Message \"This script is unable to check Azure AD accounts however this script will check the local accounts on this machine.\"\r\n    }\r\n\r\n    $Report = New-Object System.Collections.Generic.List[object]\r\n\r\n    # Warn if ad accounts are not able to be checked.\r\n    if (-not (Test-IsDomainController) -and (Test-IsDomainJoined) -and -not (Test-ComputerSecureChannel)) {\r\n        Write-Warning \"Domain is not reachable! We'll be unable to check active directory accounts!\"\r\n    }\r\n\r\n    # There are two ways this script will check for an inactive account one of which uses the Active Directory PowerShell module which is only availalbe on Domain Controllers \/ machines with RSAT installed.\r\n    if (-not (Test-IsDomainController)) {\r\n\r\n        # Compile a list of users to check.\r\n        $Users = if ($PSVersionTable.PSVersion.Major -lt 5) {\r\n            Get-WmiObject -Class \"win32_UserAccount\"        \r\n        }\r\n        else {\r\n            Get-CimInstance -Class \"win32_UserAccount\"\r\n        }\r\n\r\n        # Grab the account info using net user (which is slightly different if it's a domain account or not).\r\n        $Accounts = foreach ($User in $Users) {\r\n            if ($User.Domain -ne $env:COMPUTERNAME ) {\r\n                Get-NetAccountInfo -User $User.Name -Domain\r\n            }\r\n            else {\r\n                Get-NetAccountInfo -User $User.Name\r\n            }\r\n        }\r\n    }\r\n    else {\r\n        # Older OS's need to have the module manually imported.\r\n        try {\r\n            Import-Module ActiveDirectory\r\n        }\r\n        catch {\r\n            Write-Error -Message \"[Error] Failed to import PowerShell Active Directory Module. Is RSAT installed?\" -Category DeviceError -Exception (New-Object System.Exception)\r\n        }\r\n\r\n        # Compile a list of users with the relevant attributes\r\n        $Users = Get-AdUser -Filter * -Properties SamAccountName, DisplayName, PasswordLastSet, lastLogonTimestamp, lastLogon, Enabled\r\n        \r\n        # Convert that into a more parseable object\r\n        $Accounts = foreach ($User in $Users) {\r\n            $LastLogon = [datetime]::FromFileTime($User.lastLogon)\r\n            $LastLogonTimeStamp = [datetime]::FromFileTime($User.LastLogonTimestamp)\r\n            New-Object psobject -Property @{\r\n                Username        = $User.SamAccountName\r\n                Name            = $User.DisplayName\r\n                Enabled         = $User.Enabled\r\n                LastLogon       = if ($LastLogon -gt $LastLogonTimeStamp) { $LastLogon }else { $LastLogonTimeStamp }\r\n                PasswordLastSet = $User.PasswordLastSet\r\n            }\r\n        }\r\n    }\r\n\r\n    # Compile a list of accounts that could be considered inactive\r\n    $InactiveAccounts = $Accounts | Where-Object { ($_.LastLogon -eq \"Never\" -or $_.LastLogon -lt $InactivityCutOff) -and $_.PasswordLastSet -lt $InactivityCutOff }\r\n\r\n    # Filter out disabled accounts if we're asked to.\r\n    if ($IncludeDisabled) {\r\n        $InactiveAccounts | ForEach-Object { $Report.Add($_) }\r\n    }\r\n    else {\r\n        $InactiveAccounts | Where-Object { $_.Enabled -notlike $False } | ForEach-Object { $Report.Add($_) }\r\n    }\r\n\r\n    # If no inactive accounts exit\r\n    if (-not $Report) {\r\n        Write-Host \"No inactive accounts detected!\"\r\n        exit 0\r\n    }\r\n\r\n    Write-Warning \"Inactive accounts detected!\"\r\n    $Report | Format-Table -AutoSize -Property Username, PasswordLastSet, LastLogon, Enabled | Out-String | Write-Host\r\n    exit 1\r\n}\r\nend {\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.ninjaone.com\/fr\/phase-de-test-gratuit\/\">Obtenir l&rsquo;acc\u00e8s<\/a><\/p>\n<\/div>\n<h2>Description d\u00e9taill\u00e9e<\/h2>\n<p>Le script fonctionne en plusieurs \u00e9tapes :<\/p>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&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>Initialisation des param\u00e8tres<\/strong>: Il commence par d\u00e9finir des param\u00e8tres, notamment le nombre de jours pendant lesquels un compte est consid\u00e9r\u00e9 comme inactif et une option permettant d&rsquo;inclure les comptes d\u00e9sactiv\u00e9s.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&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>Contr\u00f4les de l&rsquo;environnement<\/strong>: Le script v\u00e9rifie si la machine est reli\u00e9e \u00e0 un domaine, \u00e0 un contr\u00f4leur de domaine ou \u00e0 Azure AD. Cela d\u00e9termine l&rsquo;\u00e9tendue des v\u00e9rifications de comptes &#8211; local, Active Directory ou Azure.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&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>R\u00e9cup\u00e9ration de compte<\/strong>: Pour les contr\u00f4leurs non-domaines, il r\u00e9cup\u00e8re les informations sur les comptes \u00e0 l&rsquo;aide de <strong>net.exe user<\/strong> ou d&rsquo;instances WMI\/CIM, tandis que pour les contr\u00f4leurs de domaines, il utilise le module Active Directory PowerShell.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&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>\u00c9valuation de l&rsquo;activit\u00e9<\/strong>: La fonction principale consiste \u00e0 \u00e9valuer les comptes d&rsquo;utilisateurs sur la base de leurs derni\u00e8res dates de connexion et de d\u00e9finition du mot de passe par rapport au seuil d&rsquo;inactivit\u00e9.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&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>G\u00e9n\u00e9ration de rapports<\/strong>: Les comptes inactifs sont compil\u00e9s dans un rapport, avec une option permettant d&rsquo;exclure les comptes d\u00e9sactiv\u00e9s.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&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>Alertes et codes de sortie<\/strong>: Le script se termine en alertant les administrateurs de tout compte inactif et en sortant avec un code indiquant la pr\u00e9sence ou l&rsquo;absence de tels comptes.<\/li>\n<\/ul>\n<h2>Cas d&rsquo;utilisation potentiels<\/h2>\n<p>Prenons l&rsquo;exemple d&rsquo;un administrateur informatique d&rsquo;une grande entreprise qui utilise ce script pour v\u00e9rifier r\u00e9guli\u00e8rement les comptes d&rsquo;utilisateurs. Ils peuvent programmer l&rsquo;ex\u00e9cution du script une fois par mois, afin d&rsquo;\u00eatre alert\u00e9s des comptes qui n&rsquo;ont pas \u00e9t\u00e9 actifs depuis plus de 90 jours. Cela permet une gestion proactive des comptes d&rsquo;utilisateurs, r\u00e9duisant ainsi le risque de failles de s\u00e9curit\u00e9 dues \u00e0 des comptes dormants.<\/p>\n<h2>Comparaisons<\/h2>\n<p>Il existe d&rsquo;autres approches, telles que les audits manuels ou l&rsquo;utilisation d&rsquo;outils tiers. Toutefois, ce script PowerShell offre une solution plus directe, plus personnalisable et plus \u00e9conomique. Contrairement aux contr\u00f4les manuels, il automatise le processus, ce qui permet de gagner du temps et de r\u00e9duire les erreurs humaines. Par rapport aux outils tiers, il offre transparence et flexibilit\u00e9, les professionnels de l&rsquo;informatique pouvant modifier le script en fonction de leurs besoins sp\u00e9cifiques.<\/p>\n<h2>FAQ<\/h2>\n<p><strong>Q1 : Le script peut-il faire la distinction entre les diff\u00e9rents types de comptes d&rsquo;utilisateurs ? <\/strong><br \/>\nA1 : Oui, il peut faire la distinction entre les comptes locaux, Active Directory et Azure AD.<\/p>\n<p><strong>Q2 : Est-il possible de programmer l&rsquo;ex\u00e9cution automatique de ce script ? <\/strong><br \/>\nA2 : Absolument, cela peut \u00eatre fait en utilisant le planificateur de t\u00e2ches de Windows ou des outils d&rsquo;automatisation similaires.<\/p>\n<p><strong>Q3 : Ce script g\u00e8re-t-il les comptes dans un environnement en nuage ? <\/strong><br \/>\nA3 : Il est principalement con\u00e7u pour les comptes locaux et Active Directory ; les comptes Azure AD n\u00e9cessitent des modules et des informations d&rsquo;identification suppl\u00e9mentaires.<\/p>\n<h2>Implications<\/h2>\n<p>Les implications de l&rsquo;utilisation de ce script sont consid\u00e9rables. En identifiant les comptes inactifs, il r\u00e9duit consid\u00e9rablement la surface d&rsquo;attaque pour les failles de s\u00e9curit\u00e9 potentielles. Toutefois, les professionnels de l&rsquo;informatique doivent g\u00e9rer les r\u00e9sultats de mani\u00e8re responsable, en veillant \u00e0 ce que la d\u00e9sactivation ou la suppression des comptes soit conforme aux politiques de l&rsquo;organisation et aux besoins des utilisateurs.<\/p>\n<h2>Recommandations<\/h2>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&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>Audits r\u00e9guliers<\/strong>: Programmez l&rsquo;ex\u00e9cution du script \u00e0 intervalles r\u00e9guliers.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&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>Personnalisation<\/strong>: Adaptez les param\u00e8tres du script aux politiques de l&rsquo;organisation.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&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>Actions de suivi<\/strong>: \u00c9tablissez un protocole pour le traitement des comptes inactifs.<\/li>\n<\/ul>\n<h2>Conclusion :<\/h2>\n<p>En conclusion, les scripts de ce type, lorsqu&rsquo;ils sont utilis\u00e9s efficacement, contribuent de mani\u00e8re significative \u00e0 la s\u00e9curit\u00e9 et \u00e0 <a href=\"https:\/\/www.ninjaone.com\/fr\/efficacite\">l&rsquo;efficacit\u00e9 globales des op\u00e9rations informatiques<\/a>. Ils compl\u00e8tent des solutions telles que NinjaOne, qui fournit des <a href=\"https:\/\/www.ninjaone.com\/fr\/efficacite\">outils de gestion informatique complets<\/a>, aidant les administrateurs \u00e0 garder le contr\u00f4le de leurs environnements informatiques. La capacit\u00e9 de NinjaOne \u00e0 s&rsquo;int\u00e9grer aux scripts PowerShell renforce son utilit\u00e9, ce qui en fait un choix id\u00e9al pour une gestion informatique proactive.<\/p>\n","protected":false},"author":35,"featured_media":0,"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":[4289],"class_list":["post-248334","script_hub","type-script_hub","status-publish","hentry","script_hub_category-windows"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/script_hub\/248334","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/comments?post=248334"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/media?parent=248334"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/operating_system?post=248334"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/use_cases?post=248334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}