{"id":353676,"date":"2024-09-18T09:17:04","date_gmt":"2024-09-18T09:17:04","guid":{"rendered":"https:\/\/www.ninjaone.com\/script-hub\/temps-d-attente-aleatoires-script-powershell\/"},"modified":"2024-10-13T19:03:50","modified_gmt":"2024-10-13T19:03:50","slug":"temps-d-attente-aleatoires-script-powershell","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/fr\/script-hub\/temps-d-attente-aleatoires-script-powershell\/","title":{"rendered":"Comment utiliser un script PowerShell pour d\u00e9finir des temps d&rsquo;attente al\u00e9atoires pour l&rsquo;automatisation ?"},"content":{"rendered":"<p>Dans le monde de l&rsquo;informatique, l&rsquo;automatisation et les scripts sont des outils essentiels pour am\u00e9liorer l&rsquo;efficacit\u00e9 et r\u00e9duire les erreurs manuelles. PowerShell, un puissant langage de script, permet aux professionnels de l&rsquo;informatique d&rsquo;automatiser un large \u00e9ventail de t\u00e2ches. L&rsquo;une des nombreuses t\u00e2ches qui peuvent \u00eatre automatis\u00e9es est la d\u00e9finition d&rsquo;un d\u00e9lai d&rsquo;attente ou d&rsquo;un d\u00e9lai de temporisation dans un script.<\/p>\n<p>Cela peut s&rsquo;av\u00e9rer particuli\u00e8rement utile lorsqu&rsquo;il s&rsquo;agit d&rsquo;\u00e9v\u00e9nements programm\u00e9s, de t\u00e2ches planifi\u00e9es ou de s&rsquo;assurer que certains processus disposent de suffisamment de temps pour s&rsquo;achever avant de passer \u00e0 l&rsquo;\u00e9tape suivante.<\/p>\n<p>Le script fourni ci-dessus introduit un m\u00e9canisme permettant de <strong>g\u00e9n\u00e9rer un temps d&rsquo;attente al\u00e9atoire dans un script PowerShell<\/strong>, avec un temps maximum autoris\u00e9 de 180 minutes (3 heures).<\/p>\n<p>Cette fonctionnalit\u00e9 peut s&rsquo;av\u00e9rer particuli\u00e8rement utile dans les sc\u00e9narios o\u00f9 la randomisation est n\u00e9cessaire, par exemple dans les tests de s\u00e9curit\u00e9, les simulations de retard de r\u00e9seau ou pour \u00e9viter les sch\u00e9mas pr\u00e9visibles dans les processus automatis\u00e9s.<\/p>\n<h2>Contexte<\/h2>\n<p>L&rsquo;attente ou la pause dans l&rsquo;ex\u00e9cution des scripts est un besoin courant, en particulier dans les environnements informatiques o\u00f9 les scripts doivent interagir avec d&rsquo;autres syst\u00e8mes, attendre que des ressources soient disponibles ou simuler des conditions r\u00e9elles. Les m\u00e9thodes traditionnelles de mise en pause d&rsquo;un script consistent \u00e0 d\u00e9finir un temps d&rsquo;attente fixe \u00e0 l&rsquo;aide de commandes telles que Start-Sleep.<\/p>\n<p>Toutefois, dans certains cas, un temps d&rsquo;attente fixe n&rsquo;est pas suffisant, en particulier lorsque le script doit introduire un \u00e9l\u00e9ment al\u00e9atoire pour \u00e9viter un comportement pr\u00e9visible.<\/p>\n<p>Pour les <a href=\"https:\/\/www.ninjaone.com\/fr\/quest-ce-quun-msp\" target=\"_blank\" rel=\"noopener\">fournisseurs de services g\u00e9r\u00e9s (MSP)<\/a> et les professionnels de l&rsquo;informatique, les temps d&rsquo;attente al\u00e9atoires peuvent \u00eatre utiles dans les tests de charge, les simulations de retard et m\u00eame dans les applications de s\u00e9curit\u00e9 o\u00f9 l&rsquo;impr\u00e9visibilit\u00e9 est un atout. Ce script fournit une solution facile \u00e0 impl\u00e9menter pour introduire un d\u00e9lai al\u00e9atoire dans un script <a href=\"https:\/\/www.ninjaone.com\/fr\/it-hub\/endpoint-management\/qu-est-ce-que-powershell\" target=\"_blank\" rel=\"noopener\">PowerShell<\/a>.<\/p>\n<h2>Le script\u00a0:<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\">&lt;#\r\n.SYNOPSIS\r\n    Wait for a random amount of time. The maximum allowed time to wait is 180 minutes (3 hours).\r\n.DESCRIPTION\r\n    Wait for a random amount of time. The maximum allowed time to wait is 180 minutes (3 hours).\r\n\r\n.EXAMPLE\r\n    (No Parameters)\r\n    \r\n    Sleeping for 1.15 Minutes...\r\n    Wait has finished\r\n\r\nPARAMETER: -MaxTimeInMinutes \"30\"\r\n    The maximum amount of time the script should sleep for.\r\n\r\n.NOTES\r\n    Minimum OS Architecture Supported: Windows 7, Windows Server 2008\r\n    Release Notes: Initial Release\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]$MaxTime = 120\r\n)\r\n\r\nbegin {\r\n    if ($env:maxTimeInMinutes -and $env:maxTimeInMinutes -notlike \"null\") { $MaxTime = $env:maxTimeInMinutes }\r\n\r\n    if($Maxtime -eq 180){\r\n        $Maxtime = $Maxtime - 1\r\n    }\r\n    \r\n    if ($MaxTime -lt 1 -or $MaxTime -gt 180) {\r\n        Write-Host \"[Error] Max Time must be greater than 0 and less than or equal to 180 Minutes\"\r\n        exit 1\r\n    }\r\n}\r\nprocess {\r\n    $TimeInSeconds = Get-Random -Maximum ($MaxTime * 60)\r\n\r\n    Write-Host \"Sleeping for $([math]::Round(($TimeInSeconds \/ 60),2)) Minutes...\"\r\n    Start-Sleep -Seconds $TimeInSeconds\r\n\r\n    Write-Host \"Wait has finished\"\r\n}\r\nend {\r\n    \r\n    \r\n    \r\n}<\/pre>\n<p>&nbsp;<\/p>\n\n<div class=\"blog-cta-new blog-cta-style-1\"><div class=\"cta-left\"><h2><\/h2><p><\/p><\/div><div class=\"cta-right\"><a class=\"button\" href=\"\"><\/a><\/div><\/div>\n<h2>Description d\u00e9taill\u00e9e<\/h2>\n<p>Le script est structur\u00e9 de mani\u00e8re \u00e0 accepter un param\u00e8tre de temps maximum (MaxTime) en minutes. Voici une description d\u00e9taill\u00e9e de son fonctionnement :<\/p>\n<ol>\n<li><strong>D\u00e9finition de param\u00e8tres<\/strong>: Le script commence par une section de d\u00e9finition des param\u00e8tres o\u00f9 le param\u00e8tre MaxTime est d\u00e9fini. Par d\u00e9faut, cette dur\u00e9e est fix\u00e9e \u00e0 120 minutes, mais elle peut \u00eatre modifi\u00e9e par l&rsquo;utilisateur ou par une variable d&rsquo;environnement ($env:maxTimeInMinutes).<\/li>\n<li><strong>V\u00e9rification des variables d&rsquo;environnement<\/strong>: Si la variable d&rsquo;environnement maxTimeInMinutes est d\u00e9finie et n&rsquo;est pas nulle, le script utilisera cette valeur comme MaxTime. Cela offre une certaine souplesse aux utilisateurs qui pr\u00e9f\u00e8rent fixer la dur\u00e9e maximale en externe.<\/li>\n<li><strong>Ajustement du temps maximum<\/strong>: Si le MaxTime est fix\u00e9 \u00e0 180 minutes, le script le r\u00e9duit d&rsquo;une minute pour \u00e9viter d&rsquo;atteindre la limite sup\u00e9rieure. Ce l\u00e9ger ajustement permet de s&rsquo;assurer que le texte reste dans les limites op\u00e9rationnelles pr\u00e9vues.<\/li>\n<li><strong>Validation des entr\u00e9es<\/strong>: Le script v\u00e9rifie si le MaxTime est compris dans un intervalle valide (sup\u00e9rieur \u00e0 0 et inf\u00e9rieur ou \u00e9gal \u00e0 180 minutes). Si la valeur se situe en dehors de cette fourchette, le script affiche une erreur et se termine, afin de s&rsquo;assurer qu&rsquo;il ne proc\u00e8de pas avec des param\u00e8tres non valides.<\/li>\n<li><strong>Calcul du temps al\u00e9atoire<\/strong>: En utilisant la cmdlet Get-Random, le script g\u00e9n\u00e8re une dur\u00e9e al\u00e9atoire en secondes bas\u00e9e sur le param\u00e8tre MaxTime. Cette valeur est ensuite convertie en minutes et arrondie \u00e0 deux d\u00e9cimales pour les besoins de l&rsquo;affichage.<\/li>\n<li><strong>Commande de mise en veille<\/strong>: Le script met l&rsquo;ex\u00e9cution en pause pendant la dur\u00e9e calcul\u00e9e \u00e0 l&rsquo;aide de la cmdlet Start-Sleep, introduisant ainsi une p\u00e9riode d&rsquo;attente al\u00e9atoire.<\/li>\n<li><strong>Notification d&rsquo;ach\u00e8vement<\/strong>: Une fois le temps d&rsquo;attente \u00e9coul\u00e9, le script affiche un message indiquant que l&rsquo;attente est termin\u00e9e.<\/li>\n<\/ol>\n<h2>Cas d&rsquo;utilisation potentiels<\/h2>\n<p>Prenons un sc\u00e9nario hypoth\u00e9tique dans lequel un professionnel de l&rsquo;informatique effectue une s\u00e9rie de tests automatis\u00e9s sur un syst\u00e8me de r\u00e9seau. Les tests sont con\u00e7us pour simuler l&rsquo;activit\u00e9 de l&rsquo;utilisateur et n\u00e9cessitent des d\u00e9lais variables entre les actions afin d&rsquo;\u00e9viter de cr\u00e9er un sch\u00e9ma pr\u00e9visible qui pourrait fausser les r\u00e9sultats.<\/p>\n<p>En utilisant ce script, le professionnel de l&rsquo;informatique peut introduire des temps d&rsquo;attente al\u00e9atoires entre les tests, garantissant ainsi que les simulations refl\u00e8tent davantage les conditions r\u00e9elles.<\/p>\n<p>Un autre cas d&rsquo;utilisation pourrait \u00eatre celui des tests de s\u00e9curit\u00e9, o\u00f9 un professionnel de l&rsquo;informatique pourrait avoir besoin de simuler des retards ou des pannes de r\u00e9seau al\u00e9atoires pour tester la r\u00e9silience et les temps de r\u00e9ponse des protocoles de s\u00e9curit\u00e9. Ce script pourrait \u00eatre int\u00e9gr\u00e9 dans des scripts d&rsquo;automatisation plus importants afin d&rsquo;introduire ces retards de mani\u00e8re contr\u00f4l\u00e9e mais impr\u00e9visible.<\/p>\n<h2>Comparaisons<\/h2>\n<p>Par rapport aux m\u00e9thodes traditionnelles telles que la fixation d&rsquo;un temps d&rsquo;attente fixe avec Start-Sleep, ce script offre plus de flexibilit\u00e9 et d&rsquo;impr\u00e9visibilit\u00e9. Alors que Start-Sleep est suffisant pour des d\u00e9lais simples et pr\u00e9visibles, ce script apporte une couche suppl\u00e9mentaire d&rsquo;al\u00e9atoire qui peut \u00eatre cruciale dans les sc\u00e9narios o\u00f9 la pr\u00e9visibilit\u00e9 est un d\u00e9savantage.<\/p>\n<p>Une autre m\u00e9thode pourrait consister \u00e0 utiliser des scripts plus complexes ou des outils tiers pour obtenir des r\u00e9sultats similaires, mais ce script PowerShell fournit une solution l\u00e9g\u00e8re et native sans n\u00e9cessiter de d\u00e9pendances suppl\u00e9mentaires.<\/p>\n<h2>FAQ<\/h2>\n<ul>\n<li><strong>Puis-je fixer le temps d&rsquo;attente \u00e0 180 minutes exactement ?<\/strong>\u00a0Non, le script r\u00e9duit le temps maximum d&rsquo;une minute pour s&rsquo;assurer qu&rsquo;il reste dans une plage de fonctionnement s\u00fbre.<\/li>\n<li><strong>Que se passe-t-il si je d\u00e9finis un MaxTime de 0 ou sup\u00e9rieur \u00e0 180 ?<\/strong>\u00a0Le script affiche un message d&rsquo;erreur et se termine. L&rsquo;entr\u00e9e valide doit \u00eatre comprise entre 1 et 180 minutes.<\/li>\n<li><strong>Ce script peut-il \u00eatre utilis\u00e9 sur des versions plus anciennes de Windows ?<\/strong>\u00a0Oui, il est compatible avec Windows 7 et Windows Server 2008 ou plus r\u00e9cent.<\/li>\n<li><strong>Comment le script g\u00e8re-t-il les variables d&rsquo;environnement non valides ?<\/strong>\u00a0Si la variable d&rsquo;environnement a une valeur non valide ou est nulle, le script utilise par d\u00e9faut le param\u00e8tre MaxTime fourni.<\/li>\n<\/ul>\n<h2>Implications<\/h2>\n<p>L&rsquo;introduction de temps d&rsquo;attente al\u00e9atoires dans les scripts peut avoir des implications plus larges pour la <a href=\"https:\/\/www.ninjaone.com\/fr\/top-5-des-principes-fondamentaux-de-securite-informatique\" target=\"_blank\" rel=\"noopener\">s\u00e9curit\u00e9 et les op\u00e9rations informatiques.<\/a><\/p>\n<p>Dans les sc\u00e9narios o\u00f9 la pr\u00e9visibilit\u00e9 pourrait conduire \u00e0 des vuln\u00e9rabilit\u00e9s, comme dans les tests de s\u00e9curit\u00e9 des r\u00e9seaux ou la planification automatis\u00e9e des t\u00e2ches, la randomisation de ce script contribue \u00e0 r\u00e9duire les risques.<\/p>\n<p>Cependant, il est \u00e9galement important de prendre en compte le fait qu&rsquo;une randomisation excessive, sans enregistrement ou surveillance appropri\u00e9s, peut entra\u00eener des probl\u00e8mes de d\u00e9pannage ou d&rsquo;analyse des performances.<\/p>\n<h2>Recommandations<\/h2>\n<p>Lorsque vous utilisez ce script, assurez-vous que le param\u00e8tre MaxTime est d\u00e9fini de mani\u00e8re appropri\u00e9e en fonction des besoins sp\u00e9cifiques de votre t\u00e2che. Il est \u00e9galement conseill\u00e9 d&rsquo;enregistrer les temps d&rsquo;attente r\u00e9els \u00e0 des fins d&rsquo;audit, en particulier dans les environnements automatis\u00e9s o\u00f9 le suivi du temps d&rsquo;ex\u00e9cution est essentiel.<\/p>\n<p>Pour les MSP, ce script peut \u00eatre particuli\u00e8rement utile dans les environnements clients o\u00f9 les t\u00e2ches doivent \u00eatre programm\u00e9es \u00e0 des intervalles variables afin d&rsquo;\u00e9viter des sch\u00e9mas pr\u00e9visibles qui pourraient \u00eatre exploit\u00e9s.<\/p>\n<h2>Conclusion<\/h2>\n<p>Ce script PowerShell offre un moyen simple et puissant d&rsquo;introduire des temps d&rsquo;attente al\u00e9atoires dans vos scripts, am\u00e9liorant ainsi la flexibilit\u00e9 et la s\u00e9curit\u00e9 de l&rsquo;automatisation. Pour les professionnels de l&rsquo;informatique et les MSP, ces outils sont inestimables pour cr\u00e9er des syst\u00e8mes performants et r\u00e9sistants.<\/p>\n<p><a href=\"https:\/\/www.ninjaone.com\/fr\/\" target=\"_blank\" rel=\"noopener\">NinjaOne<\/a> propose une suite d&rsquo;outils qui peuvent compl\u00e9ter ces scripts, en offrant des fonctions <a href=\"https:\/\/www.ninjaone.com\/fr\/blog\/tout-ce-que-vous-devez-savoir-sur-lautomatisation\" target=\"_blank\" rel=\"noopener\">d&rsquo;automatisation avanc\u00e9e<\/a>, de <a href=\"https:\/\/www.ninjaone.com\/fr\/blog\/surveillance-des-terminaux-expliquee-avec-un-exemple\/\" target=\"_blank\" rel=\"noopener\">surveillance<\/a> et de s\u00e9curit\u00e9 pour garantir que vos op\u00e9rations informatiques sont \u00e0 la fois <a href=\"https:\/\/www.ninjaone.com\/fr\/efficacite\" target=\"_blank\" rel=\"noopener\">efficaces<\/a> et s\u00e9curis\u00e9es.<\/p>\n","protected":false},"author":35,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"open","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":"","_lmt_disable":""},"operating_system":[4212],"use_cases":[4281],"class_list":["post-353676","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\/353676","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=353676"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/media?parent=353676"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/operating_system?post=353676"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/use_cases?post=353676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}