{"id":533524,"date":"2025-09-29T11:21:00","date_gmt":"2025-09-29T11:21:00","guid":{"rendered":"https:\/\/www.ninjaone.com\/?post_type=script_hub&#038;p=533524"},"modified":"2025-09-29T11:21:00","modified_gmt":"2025-09-29T11:21:00","slug":"obtenir-les-details-de-connexion-et-de-session-iscsi-avec-powershell","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/fr\/script-hub\/obtenir-les-details-de-connexion-et-de-session-iscsi-avec-powershell\/","title":{"rendered":"Comment obtenir les d\u00e9tails de connexion et de session iSCSI avec PowerShell"},"content":{"rendered":"<p>Dans les environnements de grande entreprise, l&rsquo;infrastructure de stockage joue un r\u00f4le essentiel dans la performance des applications, la continuit\u00e9 des activit\u00e9s et la reprise apr\u00e8s sinistre. Une technologie de stockage largement utilis\u00e9e est l&rsquo;iSCSI (Internet Small Computer Systems Interface), qui permet un acc\u00e8s au stockage au niveau des blocs sur les r\u00e9seaux IP. Pour g\u00e9rer, auditer et d\u00e9panner efficacement les connexions iSCSI, les administrateurs syst\u00e8me ont besoin d&rsquo;outils pr\u00e9cis.<\/p>\n<p>C&rsquo;est l\u00e0 que <a href=\"https:\/\/www.ninjaone.com\/it-hub\/endpoint-management\/what-is-powershell\/\">PowerShell<\/a> devient tr\u00e8s utile. Le script que nous allons explorer fournit une m\u00e9thode optimis\u00e9e et automatis\u00e9e pour <strong>obtenir les d\u00e9tails de connexion et de session iSCSI avec PowerShell<\/strong>, en int\u00e9grant ensuiteces informations dans les champs personnalis\u00e9s de NinjaOne pour la documentation et la visibilit\u00e9.<\/p>\n<h2>Contexte<\/h2>\n<p>iSCSI est fr\u00e9quemment d\u00e9ploy\u00e9 dans les centres de donn\u00e9es pour connecter les serveurs aux syst\u00e8mes de stockage sans avoir recours \u00e0 l&rsquo;infrastructure Fibre Channel. La surveillance des sessions iSCSI est essentielle pour assurer la connectivit\u00e9, \u00e9valuer les performances et pr\u00e9venir les d\u00e9faillances potentielles. Cependant, l&rsquo;extraction manuelle de ces informations est non seulement chronophage, mais aussi source d&rsquo;erreurs.<\/p>\n<p>Pour les <a href=\"https:\/\/www.ninjaone.com\/fr\/quest-ce-quun-msp\/\">fournisseurs de services g\u00e9r\u00e9s (MSP)<\/a> et les professionnels de l&rsquo;informatique qui utilisent des plateformes comme NinjaOne, le fait de disposer de ces informations dans une interface centralis\u00e9e (en particulier dans le cadre des champs personnalis\u00e9s d&rsquo;un appareil) simplifie la documentation et acc\u00e9l\u00e8re l&rsquo;assistance. Ce script comble cette lacune en automatisant la r\u00e9cup\u00e9ration des d\u00e9tails de la session et de la connexion iSCSI et en les stockant \u00e9ventuellement dans un champ personnalis\u00e9 NinjaOne WYSIWYG.<\/p>\n<h2>Le script<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\">&lt;#\r\n\r\n.SYNOPSIS\r\n    Retrieves detailed information about the iSCSI initiator connections and sessions on the local machine.\r\n\r\n.DESCRIPTION\r\n    Gathers details about the iSCSI initiator connections and sessions on the local machine.\r\n    It retrieves information such as connection identifiers, initiator and target addresses, port numbers, session identifiers, and various other session attributes.\r\n    This can also save these details to a specified custom field in a WYSIWYG format if provided.\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\r\n.EXAMPLE\r\n    Get-IscsiDetails\r\n\r\n    This command gets the iSCSI initiator details.\r\n\r\nPARAMETER: -WYSIWYGCustomFieldName \"wysiwygCustomFieldName\"\r\n    The name of the custom field to save the iSCSI initiator details.\r\n\r\n.NOTES\r\n    Minimum OS Architecture Supported: Windows 10, Windows Server 2016\r\n    Release Notes: Initial release\r\n#&gt;\r\n[CmdletBinding()]\r\nparam(\r\n    [String]\r\n    $WYSIWYGCustomFieldName\r\n)\r\nbegin {\r\n\r\n    if ($env:wysiwygCustomFieldName -notlike \"null\") {\r\n        $WYSIWYGCustomFieldName = $env:wysiwygCustomFieldName\r\n    }\r\n\r\n    function Set-NinjaProperty {\r\n        [CmdletBinding()]\r\n        Param(\r\n            [Parameter(Mandatory = $True)]\r\n            [String]$Name,\r\n            [Parameter()]\r\n            [String]$Type,\r\n            [Parameter(Mandatory = $True, ValueFromPipeline = $True)]\r\n            $Value,\r\n            [Parameter()]\r\n            [String]$DocumentName,\r\n            [Parameter()]\r\n            [Switch]$Piped\r\n        )\r\n        # Remove the non-breaking space character\r\n        if ($Type -eq \"WYSIWYG\") {\r\n            $Value = $Value -replace '\u00c2\u00a0', '&amp;nbsp;'\r\n        }\r\n        \r\n        # Measure the number of characters in the provided value\r\n        $Characters = $Value | ConvertTo-Json | Measure-Object -Character | Select-Object -ExpandProperty Characters\r\n    \r\n        # Throw an error if the value exceeds the character limit of 200,000 characters\r\n        if ($Piped -and $Characters -ge 200000) {\r\n            throw [System.ArgumentOutOfRangeException]::New(\"Character limit exceeded: the value is greater than or equal to 200,000 characters.\")\r\n        }\r\n    \r\n        if (!$Piped -and $Characters -ge 45000) {\r\n            throw [System.ArgumentOutOfRangeException]::New(\"Character limit exceeded: the value is greater than or equal to 45,000 characters.\")\r\n        }\r\n        \r\n        # Initialize a hashtable for additional documentation parameters\r\n        $DocumentationParams = @{}\r\n    \r\n        # If a document name is provided, add it to the documentation parameters\r\n        if ($DocumentName) { $DocumentationParams[\"DocumentName\"] = $DocumentName }\r\n        \r\n        # Define a list of valid field types\r\n        $ValidFields = \"Attachment\", \"Checkbox\", \"Date\", \"Date or Date Time\", \"Decimal\", \"Dropdown\", \"Email\", \"Integer\", \"IP Address\", \"MultiLine\", \"MultiSelect\", \"Phone\", \"Secure\", \"Text\", \"Time\", \"URL\", \"WYSIWYG\"\r\n    \r\n        # Warn the user if the provided type is not valid\r\n        if ($Type -and $ValidFields -notcontains $Type) { Write-Warning \"$Type is an invalid type. Please check here for valid types: https:\/\/ninjarmm.zendesk.com\/hc\/en-us\/articles\/16973443979789-Command-Line-Interface-CLI-Supported-Fields-and-Functionality\" }\r\n        \r\n        # Define types that require options to be retrieved\r\n        $NeedsOptions = \"Dropdown\"\r\n    \r\n        # If the property is being set in a document or field and the type needs options, retrieve them\r\n        if ($DocumentName) {\r\n            if ($NeedsOptions -contains $Type) {\r\n                $NinjaPropertyOptions = Ninja-Property-Docs-Options -AttributeName $Name @DocumentationParams 2&gt;&amp;1\r\n            }\r\n        }\r\n        else {\r\n            if ($NeedsOptions -contains $Type) {\r\n                $NinjaPropertyOptions = Ninja-Property-Options -Name $Name 2&gt;&amp;1\r\n            }\r\n        }\r\n        \r\n        # Throw an error if there was an issue retrieving the property options\r\n        if ($NinjaPropertyOptions.Exception) { throw $NinjaPropertyOptions }\r\n            \r\n        # Process the property value based on its type\r\n        switch ($Type) {\r\n            \"Checkbox\" {\r\n                # Convert the value to a boolean for Checkbox type\r\n                $NinjaValue = [System.Convert]::ToBoolean($Value)\r\n            }\r\n            \"Date or Date Time\" {\r\n                # Convert the value to a Unix timestamp for Date or Date Time type\r\n                $Date = (Get-Date $Value).ToUniversalTime()\r\n                $TimeSpan = New-TimeSpan (Get-Date \"1970-01-01 00:00:00\") $Date\r\n                $NinjaValue = $TimeSpan.TotalSeconds\r\n            }\r\n            \"Dropdown\" {\r\n                # Convert the dropdown value to its corresponding GUID\r\n                $Options = $NinjaPropertyOptions -replace '=', ',' | ConvertFrom-Csv -Header \"GUID\", \"Name\"\r\n                $Selection = $Options | Where-Object { $_.Name -eq $Value } | Select-Object -ExpandProperty GUID\r\n            \r\n                # Throw an error if the value is not present in the dropdown options\r\n                if (!($Selection)) {\r\n                    throw [System.ArgumentOutOfRangeException]::New(\"Value is not present in dropdown options.\")\r\n                }\r\n            \r\n                $NinjaValue = $Selection\r\n            }\r\n            default {\r\n                # For other types, use the value as is\r\n                $NinjaValue = $Value\r\n            }\r\n        }\r\n            \r\n        # Set the property value in the document if a document name is provided\r\n        if ($DocumentName) {\r\n            $CustomField = Ninja-Property-Docs-Set -AttributeName $Name -AttributeValue $NinjaValue @DocumentationParams 2&gt;&amp;1\r\n        }\r\n        else {\r\n            try {\r\n                # Otherwise, set the standard property value\r\n                if ($Piped) {\r\n                    $CustomField = $NinjaValue | Ninja-Property-Set-Piped -Name $Name 2&gt;&amp;1\r\n                }\r\n                else {\r\n                    $CustomField = Ninja-Property-Set -Name $Name -Value $NinjaValue 2&gt;&amp;1\r\n                }\r\n            }\r\n            catch {\r\n                Write-Host -Object \"[Error] Failed to set custom field.\"\r\n                throw $_.Exception.Message\r\n            }\r\n        }\r\n            \r\n        # Throw an error if setting the property failed\r\n        if ($CustomField.Exception) {\r\n            throw $CustomField\r\n        }\r\n    }\r\n    $ShouldOutputResults = $false\r\n    $HasHadError = $false\r\n}\r\n\r\nprocess {\r\n    try {\r\n        $iscsiConnection = Get-IscsiConnection -ErrorAction Stop\r\n        $iscsiSession = Get-IscsiSession -ErrorAction Stop\r\n    }\r\n    catch [System.Management.Automation.CommandNotFoundException] {\r\n        Write-Host \"[Error] The Get-IscsiConnection or Get-IscsiSession cmdlet is not available on this system.\"\r\n        exit 1\r\n    }\r\n    catch [System.Management.Automation.ActionPreferenceStopException] {\r\n        Write-Host \"[Error] Failed to retrieve iSCSI initiator details.\"\r\n        exit 1\r\n    }\r\n    catch {\r\n        if ($null -eq $iscsiConnection) {\r\n            Write-Host \"[Info] No iSCSI connections found.\"\r\n        }\r\n        if ($null -eq $iscsiSession) {\r\n            Write-Host \"[Info] No iSCSI sessions found.\"\r\n        }\r\n        exit\r\n    }\r\n\r\n    # If a custom field name is provided, save the results to the custom field\r\n    if ($WYSIWYGCustomFieldName) {\r\n        # If there are no iSCSI connections or sessions, output the details to the Activity Feed\r\n        if ($iscsiSession.Count -eq 0) {\r\n            $ShouldOutputResults = $true\r\n            Write-Host \"[Info] No data to save to custom field.\"\r\n        }\r\n        else {\r\n            # Create an HTML string to save to the custom field\r\n\r\n            # iSCSI initiator details\r\n            $wysiwyghtml = \"&lt;h2&gt;iSCSI Connection&lt;\/h2&gt;\"\r\n            $wysiwyghtml += $iscsiConnection | Select-Object -Property @{l = 'Connection Identifier'; e = { $_.ConnectionIdentifier } },\r\n            @{l = 'Initiator Address'; e = { $_.InitiatorAddress } },\r\n            @{l = 'Initiator Port'; e = { $_.InitiatorPortNumber } },\r\n            @{l = 'Target Address'; e = { $_.TargetAddress } },\r\n            @{l = 'Target Port'; e = { $_.TargetPortNumber } } | ConvertTo-Html -Fragment\r\n\r\n            # iSCSI session details\r\n            $wysiwyghtml += \"&lt;h2&gt;iSCSI Session&lt;\/h2&gt;\"\r\n            $wysiwyghtml += $iscsiSession | Select-Object -Property @{l = 'Authentication Type'; e = { $_.AuthenticationType } },\r\n            @{l = 'Initiator Name'; e = { $_.InitiatorInstanceName } },\r\n            @{l = 'Initiator Node Address'; e = { $_.InitiatorNodeAddress } },\r\n            @{l = 'Initiator Portal Address'; e = { $_.InitiatorPortalAddress } },\r\n            @{l = 'Initiator Side Identifier'; e = { $_.InitiatorSideIdentifier } },\r\n            @{l = 'Is Connected'; e = { $_.IsConnected } },\r\n            @{l = 'Is Data Digest'; e = { $_.IsDataDigest } },\r\n            @{l = 'Is Persistent'; e = { $_.IsPersistent } },\r\n            @{l = 'Number of Connections'; e = { $_.NumberOfConnections } },\r\n            @{l = 'Session Identifier'; e = { $_.SessionIdentifier } },\r\n            @{l = 'Target Node Address'; e = { $_.TargetNodeAddress } },\r\n            @{l = 'Target Side Identifier'; e = { $_.TargetSideIdentifier } } | ConvertTo-Html -Fragment\r\n\r\n            # Save the HTML string to the custom field\r\n            try {\r\n                Set-NinjaProperty -Name $WYSIWYGCustomFieldName -Value $wysiwyghtml -Type \"WYSIWYG\" -Piped\r\n                Write-Host \"[Info] Results saved to custom field: $WYSIWYGCustomFieldName\"\r\n                $ShouldOutputResults = $true\r\n            }\r\n            catch {\r\n                Write-Host \"[Error] Failed to save results to custom field: $WYSIWYGCustomFieldName\"\r\n                $ShouldOutputResults = $true\r\n                $HasHadError = $true\r\n            }\r\n        }\r\n    }\r\n    else {\r\n        $ShouldOutputResults = $true\r\n    }\r\n\r\n    # Output the iSCSI initiator details to the Activity Feed\r\n    if ($ShouldOutputResults) {\r\n        # Output the iSCSI initiator details to the Activity Feed\r\n        Write-Host \"---iSCSI Connection---\"\r\n        $iscsiConnection | Select-Object -Property @{l = 'Connection ID'; e = { $_.ConnectionIdentifier } },\r\n        @{l = 'Initiator Address'; e = { $_.InitiatorAddress } },\r\n        @{l = 'Initiator Port'; e = { $_.InitiatorPortNumber } },\r\n        @{l = 'Target Address'; e = { $_.TargetAddress } },\r\n        @{l = 'Target Port'; e = { $_.TargetPortNumber } } | Format-List | Out-String -Width 4000 | Write-Host\r\n\r\n        # Output the iSCSI session details to the Activity Feed\r\n        Write-Host \"---iSCSI Session---\"\r\n        $iscsiSession | Select-Object -Property @{l = 'Auth'; e = { $_.AuthenticationType } },\r\n        @{l = 'Init Name'; e = { $_.InitiatorInstanceName } },\r\n        @{l = 'Init Node Address'; e = { $_.InitiatorNodeAddress } },\r\n        @{l = 'Init Portal Address'; e = { $_.InitiatorPortalAddress } },\r\n        @{l = 'Init Side ID'; e = { $_.InitiatorSideIdentifier } },\r\n        @{l = 'Connected'; e = { $_.IsConnected } },\r\n        @{l = 'Data Digest'; e = { $_.IsDataDigest } },\r\n        @{l = 'Persistent'; e = { $_.IsPersistent } },\r\n        @{l = '# Connections'; e = { $_.NumberOfConnections } },\r\n        @{l = 'SID'; e = { $_.SessionIdentifier } },\r\n        @{l = 'Tgt Node Address'; e = { $_.TargetNodeAddress } },\r\n        @{l = 'Tgt Side ID'; e = { $_.TargetSideIdentifier } } | Format-List | Out-String -Width 4000 | Write-Host\r\n    }\r\n\r\n    if ($HasHadError) {\r\n        exit 1\r\n    }\r\n}\r\n\r\nend {\r\n    \r\n    \r\n    \r\n}<\/pre>\n<p>&nbsp;<\/p>\n\n<h2>Description d\u00e9taill\u00e9e<\/h2>\n<p>Voici une description \u00e9tape par \u00e9tape du d\u00e9roulement du script :<\/p>\n<ol>\n<li><strong>Initialisation des param\u00e8tres<\/strong>\n<ul>\n<li>Accepte un seul param\u00e8tre facultatif : -WYSIWYGCustomFieldName, qui sp\u00e9cifie le nom d&rsquo;un champ personnalis\u00e9 dans NinjaOne pour stocker les r\u00e9sultats au format HTML.<\/li>\n<\/ul>\n<\/li>\n<li><strong>V\u00e9rification des variables d&rsquo;environnement<\/strong>\n<ul>\n<li>Permet de revenir \u00e0 une variable d&rsquo;environnement si le param\u00e8tre n&rsquo;est pas explicitement pass\u00e9, ce qui est utile pour l&rsquo;int\u00e9gration des pipelines.<\/li>\n<\/ul>\n<\/li>\n<li><strong>D\u00e9finition de la fonction :\u00a0<\/strong><strong>Set-NinjaProperty<\/strong>\n<ul>\n<li>Une fonction performante pour \u00e9crire en toute s\u00e9curit\u00e9 des valeurs dans les champs NinjaOne, prenant en charge la validation, la gestion des types de champs, la gestion des erreurs et l&rsquo;encodage HTML pour les champs WYSIWYG.<\/li>\n<li>Elle g\u00e8re les types de champs tels que les listes d\u00e9roulantes, les bool\u00e9ens, les dates et, en particulier, le contenu HTML WYSIWYG.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Bloc d&rsquo;ex\u00e9cution principal<\/strong>\n<ul>\n<li>Utilise Get-IscsiConnection et Get-IscsiSession pour collecter les donn\u00e9es de connexion\/session.<\/li>\n<li>Si l&rsquo;une des cmdlets n&rsquo;est pas disponible ou si aucune donn\u00e9e n&rsquo;est renvoy\u00e9e, elle se connecte en cons\u00e9quence et se termine.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Formatage et sortie<\/strong>\n<ul>\n<li>Si un champ personnalis\u00e9 est sp\u00e9cifi\u00e9 et que des donn\u00e9es existent, le script formate les informations de session et de connexion dans des tableaux HTML \u00e0 l&rsquo;aide de ConvertTo-Html.<\/li>\n<li>Ce code HTML est \u00e9crit dans le champ NinjaOne avec Set-NinjaProperty.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Journalisation et sortie de console<\/strong>\n<ul>\n<li>Que le champ soit utilis\u00e9 ou non, il \u00e9crit des donn\u00e9es d\u00e9taill\u00e9es sur la session et la connexion dans la console PowerShell dans un format lisible par l&rsquo;homme.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h2>Cas d&rsquo;utilisation potentiels<\/h2>\n<p><strong>Sc\u00e9nario<\/strong>\u00a0: Une entreprise MSP de taille moyenne g\u00e8re plusieurs sites clients, chacun ex\u00e9cutant des clusters Hyper-V connect\u00e9s \u00e0 un stockage iSCSI partag\u00e9. Un ing\u00e9nieur est charg\u00e9 d&rsquo;auditer les configurations iSCSI et de s&rsquo;assurer que toutes les sessions sont correctement authentifi\u00e9es et persistantes.<\/p>\n<p><strong>Solution<\/strong>\u00a0: \u00c0 l&rsquo;aide de ce script, l&rsquo;ing\u00e9nieur d\u00e9ploie un travail sur tous les appareils g\u00e9r\u00e9s. Pour les appareils avec des connexions iSCSI, le script remplit un champ personnalis\u00e9 WYSIWYG dans NinjaOne avec des informations de session et de connexion au format HTML. Cela permet une inspection \u00e0 distance rapide et signale les machines dont les sessions sont manquantes ou d\u00e9connect\u00e9es.<\/p>\n<h2>Comparaisons<\/h2>\n<p>Par rapport \u00e0 l&rsquo;utilisation manuelle de la commande iscsicli ou \u00e0 l&rsquo;exploration de l&rsquo;interface graphique de l&rsquo;initiateur iSCSI, cette approche PowerShell est plus rapide, plus facile \u00e0 \u00e9crire et plus \u00e9volutive. Il s&rsquo;int\u00e8gre \u00e9galement directement \u00e0 NinjaOne, contrairement aux outils d&rsquo;interface graphique natifs.<\/p>\n<p>D&rsquo;autres scripts peuvent collecter des donn\u00e9es similaires, mais ne le font souvent pas :<\/p>\n<ul>\n<li>Formatage correct de la sortie (par exemple, tableaux HTML),<\/li>\n<li>Int\u00e9gration avec NinjaOne,<\/li>\n<li>Validation des limites de caract\u00e8res pour les champs personnalis\u00e9s.<\/li>\n<\/ul>\n<p>Ce script fournit une solution plus compl\u00e8te, pr\u00eate pour la production.<\/p>\n<h2>Questions fr\u00e9quentes<\/h2>\n<h3>Q\u00a0: Quelles sont les conditions pr\u00e9alables \u00e0 l&rsquo;ex\u00e9cution de ce script ?<\/h3>\n<p>R\u00a0: PowerShell 5.1 ou plus, et Windows 10 ou Server 2016 ou plus avec l&rsquo;initiateur iSCSI activ\u00e9.<\/p>\n<h3>Q\u00a0: Que se passe-t-il s&rsquo;il n&rsquo;y a pas de sessions iSCSI ?<\/h3>\n<p>R\u00a0: Le script signale qu&rsquo;aucune donn\u00e9e n&rsquo;est disponible et se termine de mani\u00e8re \u00e9l\u00e9gante.<\/p>\n<h3>Q\u00a0: Ce syst\u00e8me peut-il \u00eatre ex\u00e9cut\u00e9 \u00e0 distance sur plusieurs machines ?<\/h3>\n<p>R\u00a0: Oui. Il est compatible avec les cadres d&rsquo;ex\u00e9cution \u00e0 distance tels que l&rsquo;automatisation NinjaOne ou PowerShell Remoting.<\/p>\n<h3>Q\u00a0: Que se passe-t-il si le champ personnalis\u00e9 d\u00e9passe les limites de taille ?<\/h3>\n<p>R\u00a0: Le script valide la longueur du contenu et g\u00e9n\u00e8re des erreurs descriptives si les limites (45 000 pour les champs standard ou 200 000 pour les entr\u00e9es par pipeline) sont d\u00e9pass\u00e9es.<\/p>\n<h2>Implications<\/h2>\n<p>Du point de vue de la s\u00e9curit\u00e9 et des op\u00e9rations, les r\u00e9sultats de ce script peuvent aider \u00e0 d\u00e9couvrir :<\/p>\n<ul>\n<li>Sessions iSCSI non authentifi\u00e9es ou mal configur\u00e9es.<\/li>\n<li>Connexions interrompues pouvant indiquer une instabilit\u00e9 du r\u00e9seau.<\/li>\n<li>Les sessions redondantes ou excessives gaspillent les ressources.<\/li>\n<\/ul>\n<p>En collectant r\u00e9guli\u00e8rement ces donn\u00e9es, les \u00e9quipes informatiques b\u00e9n\u00e9ficient d&rsquo;une visibilit\u00e9 sur l&rsquo;\u00e9tat de la structure de stockage et peuvent r\u00e9soudre les probl\u00e8mes de mani\u00e8re proactive, ce qui am\u00e9liore la continuit\u00e9 de l&rsquo;activit\u00e9 et <a href=\"https:\/\/www.ninjaone.com\/it-hub\/it-service-management\/what-is-uptime-downtime\/\">r\u00e9duit les temps d&rsquo;arr\u00eat<\/a>.<\/p>\n<h2>Recommandations<\/h2>\n<ul>\n<li><strong>Utiliser les t\u00e2ches planifi\u00e9es<\/strong> : Ex\u00e9cutez ce script chaque semaine pour mettre \u00e0 jour les champs de NinjaOne.<\/li>\n<li><strong>Associer \u00e0 des alertes<\/strong> : Combinez avec des d\u00e9clencheurs pour alerter sur les sessions d\u00e9connect\u00e9es ou non authentifi\u00e9es.<\/li>\n<li><strong>Veiller \u00e0 la propret\u00e9 des champs personnalis\u00e9s<\/strong> : \u00c9liminez p\u00e9riodiquement les donn\u00e9es de champ anciennes ou inutilis\u00e9es afin de ne pas d\u00e9passer les limites de caract\u00e8res.<\/li>\n<li><strong>Tester avant tout<\/strong> : Ex\u00e9cutez toujours le script sur un appareil de test pour valider le nom et le r\u00e9sultat du champ personnalis\u00e9.<\/li>\n<\/ul>\n<h2>Conclusion<\/h2>\n<p>L&rsquo;automatisation de la r\u00e9cup\u00e9ration des d\u00e9tails des sessions iSCSI avec PowerShell augmente la visibilit\u00e9 de l&rsquo;infrastructure et aide les professionnels de l&rsquo;informatique \u00e0 maintenir l&rsquo;int\u00e9grit\u00e9 op\u00e9rationnelle. Associ\u00e9 \u00e0 <a href=\"https:\/\/www.ninjaone.com\/fr\/\">NinjaOne<\/a>, ce script devient plus qu&rsquo;un simple outil de diagnostic : il devient un atout documentaire, directement int\u00e9gr\u00e9 \u00e0 votre plateforme RMM. Pour les MSP \u00e0 la recherche d&rsquo;une surveillance \u00e9volutive et automatis\u00e9e, cette int\u00e9gration illustre la mani\u00e8re dont les scripts intelligents peuvent simplifier la surveillance d&rsquo;une infrastructure complexe.<\/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":[4281],"class_list":["post-533524","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\/533524","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=533524"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/media?parent=533524"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/operating_system?post=533524"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/use_cases?post=533524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}