
Table des matières
J'ai toujours cru que les ordinateurs devraient travailler pour nous, et non l'inverse. C'était jusqu'à ce que je me retrouve à passer d'innombrables heures sur des tâches insensées. C'était jusqu'à ce que je commence à utiliser l'intelligence artificielle (IA) pour créer sans effort des scripts PowerShell pour automatiser mes tâches Windows.
PowerShell 101: Automatisation des tâches pour Windows
PowerShell est à la fois un shell de ligne de commande et un langage de script intégré à Windows qui permet des capacités puissantes d'administration système et d'automatisation, comme l'explique Microsoft.
En pratique, vous pouvez créer des scripts (fichiers autonomes contenant des commandes et des instructions qui peuvent être exécutées automatiquement) qui font tout, des opérations de fichiers simples aux tâches de gestion du système complexes.
Il existe d'innombrables scripts PowerShell prêts à l'emploi en ligne qui peuvent gérer les tâches communes. Par exemple, le référentiel PowerShell Scripts contient plus de 500 scripts gratuits pour des tâches allant de la gestion des paramètres du système à l'automatisation des opérations de fichiers. Vous pouvez trouver des scripts qui vérifient l'espace de lecteur, répertorient les logiciels installés et même organiser des photos par date.
Mais bien que les scripts pré-même soient utiles, la véritable puissance de PowerShell est déverrouillée lorsque vous créez des scripts personnalisés adaptés à vos besoins uniques, et c'est là que l'IA entre en jeu.
Utilisation de l'IA pour créer des scripts PowerShell personnalisés
Permettez-moi d'expliquer comment je crée des scripts PowerShell pour automatiser les tâches sans connaître PowerShell, en utilisant l'IA sur un exemple pratique.
J'ai récemment récupéré un tas de données à l'aide de Photorec à partir d'un disque défaillant. Malheureusement, je me suis retrouvé avec des milliers de fichiers différents dans un seul répertoire, et les suivre était un cauchemar. Pour rendre les choses un peu plus faciles, je voulais trier automatiquement cette pile de fichiers dans les grandes catégories, comme les images, l'audio, les documents, etc.
Au lieu de passer des heures à apprendre la syntaxe PowerShell ou à rechercher le script pré-préparé parfait, je me suis tourné vers le chat de chatppt avec une description claire de ce dont j'avais besoin. Voici comment j'ai invité l'IA:

Les éléments clés que j'ai assurés d'inclure dans mon invite étaient:
- Que devrait-il arriver avec les fichiers qui ne correspondent pas à mes catégories
- La tâche exacte que je voulais accomplir (organisation des fichiers par extension)
- Les catégories et types de fichiers spécifiques pour chaque catégorie
Bien sûr, j'ai souligné le fait dans mon invite d'IA que mon objectif était de créer un script PowerShell (par opposition à, disons, un script bash) au tout début.
En quelques secondes, l'IA a généré ce script PowerShell pour automatiser les tâches pour moi:
# Define the source folder as the current directory where the script is executed
$sourceFolder = $PSScriptRoot
# Define category folders and their associated file extensions
$categories = @{
"Images" = @(".jpg", ".jpeg", ".png", ".gif", ".bmp", ".tiff", ".webp", ".svg", ".ico", ".raw", ".cr2", ".nef", ".heic", ".psd", ".ai", ".eps")
"Documents" = @(".pdf", ".docx", ".doc", ".txt", ".rtf", ".xlsx", ".xls", ".pptx", ".ppt", ".odt", ".ods", ".odp", ".md", ".csv", ".json", ".xml", ".html", ".htm", ".log", ".tex", ".epub", ".mobi")
"Audio" = @(".mp3", ".wav", ".aac", ".flac", ".ogg", ".wma", ".m4a", ".mid", ".midi", ".aiff", ".alac", ".ape", ".opus", ".amr", ".au", ".voc")
"Video" = @(".mp4", ".avi", ".mov", ".wmv", ".mkv", ".flv", ".webm", ".m4v", ".mpg", ".mpeg", ".3gp", ".3g2", ".ts", ".vob", ".ogv", ".divx", ".asf", ".rm", ".rmvb")
"Archives" = @(".zip", ".rar", ".7z", ".tar", ".gz", ".bz2", ".xz", ".cab", ".iso", ".tgz", ".tbz2", ".lzh", ".dmg", ".pkg", ".deb", ".rpm")
"Code" = @(".py", ".js", ".html", ".css", ".java", ".c", ".cpp", ".cs", ".php", ".rb", ".go", ".swift", ".sql", ".ps1", ".sh", ".bat", ".vbs", ".ts", ".jsx", ".r", ".pl", ".lua")
"Executables" = @(".exe", ".msi", ".app", ".apk", ".dll", ".bin", ".com", ".jar", ".gadget", ".wsf", ".appx", ".appxbundle")
"Other" = @()
}
# Create category folders if they don't exist
foreach ($category in $categories.Keys) {
$categoryPath = Join-Path -Path $sourceFolder -ChildPath $category
if (-not (Test-Path -Path $categoryPath)) {
New-Item -Path $categoryPath -ItemType Directory | Out-Null
Write-Host "Created folder: $category"
}
}
# Get all files in the source folder (non-recursive)
$files = Get-ChildItem -Path $sourceFolder -File | Where-Object { $_.Name -ne $MyInvocation.MyCommand.Name }
# Counter for moved files
$movedFiles = 0
$totalFiles = $files.Count
Write-Host "Starting to organize $totalFiles files..."
# Process each file
foreach ($file in $files) {
$extension = $file.Extension.ToLower()
$targetCategory = "Other"
# Determine which category the file belongs to
foreach ($category in $categories.Keys) {
if ($category -eq "Other") { continue }
if ($categories($category) -contains $extension) {
$targetCategory = $category
break
}
}
# Move the file to the appropriate category folder
$targetPath = Join-Path -Path $sourceFolder -ChildPath $targetCategory
$targetFile = Join-Path -Path $targetPath -ChildPath $file.Name
# Check if target file already exists and handle accordingly
if (Test-Path -Path $targetFile) {
$baseName = (System.IO.Path)::GetFileNameWithoutExtension($file.Name)
$newName = "$baseName`_$(Get-Random)$extension"
$targetFile = Join-Path -Path $targetPath -ChildPath $newName
}
Move-Item -Path $file.FullName -Destination $targetFile
$movedFiles++
# Show progress
$percentComplete = (math)::Round(($movedFiles / $totalFiles) * 100, 2)
Write-Progress -Activity "Organizing Files" -Status "$movedFiles of $totalFiles files processed ($percentComplete%)" -PercentComplete $percentComplete
}
Write-Host "File organization complete! Moved $movedFiles files into categories."
Comme vous pouvez le voir, l'ensemble du code est bien commenté, il est donc possible de dire ce que les parties individuelles font avec une relative facilité, ce qui est génial si vous souhaitez apprendre PowerShell et faire des ajustements manuels vous-même.

Pour transformer ce code en un script utilisable, je suis simplement copié l'ensemble du bloc de code du chat AI et ouvert Bloc-notes Windows (bien que tout éditeur de texte fonctionnerait bien).

Après avoir collé le code, je enregistré le fichier avec un nom descriptif et le Extension .ps1 (comme «Organize-files.ps1»). J'ai placé ce script directement dans le dossier avec mes fichiers récupérés et je l'ai exécuté en cliquant avec le bouton droit sur le fichier et en sélectionnant Courez avec PowerShell.

En un rien de temps, des milliers de fichiers dispersés ont été soigneusement organisés en dossiers appropriés.
Automatisation de vos scripts PowerShell générés par AI-Génération avec Planificateur de tâches
Encore mieux qu'un script PowerShell créé par Ai-créé est celui qui automatisera vos tâches Windows sans que vous y réfléchisse!
Je travaille sur mon ordinateur pendant de longues heures, et j'oublie souvent de faire des pauses, ce qui conduit à une fatigue oculaire et à une réduction de la productivité. J'ai décidé de créer un script qui me rappelerait de prendre des pauses d'écran à intervalles réguliers. Encore une fois, je me suis tourné vers l'IA avec une invite claire:
L'IA a rapidement généré ce script d'économie oculaire:
# Script to remind user to take regular screen breaks
# Load required assemblies for notifications
Add-Type -AssemblyName System.Windows.Forms
# Function to show break reminder notification
function Show-BreakReminder {
$motivationalMessages = @(
"Time for a 5-minute break! Rest your eyes and stretch.",
"Screen break time! Look at something 20 feet away for 20 seconds.",
"Break time! Stand up and move around for 5 minutes.",
"Your eyes need a rest! Take 5 minutes away from the screen.",
"Productivity hack: A 5-minute break now will boost your focus!"
)
# Select a random message
$randomMessage = $motivationalMessages | Get-Random
# Create and configure the notification
$notification = New-Object System.Windows.Forms.NotifyIcon
$notification.Icon = (System.Drawing.SystemIcons)::Information
$notification.BalloonTipTitle = "Wellness Reminder"
$notification.BalloonTipText = $randomMessage
$notification.Visible = $true
# Show notification for 10 seconds
$notification.ShowBalloonTip(10000)
# Clean up after a delay
Start-Sleep -Seconds 12
$notification.Dispose()
}
# Display an initial notification
Show-BreakReminder
Write-Host "Break reminder displayed. Set this script to run hourly using Task Scheduler."
Ce script était exactement ce dont j'avais besoin, mais je ne voulais pas me rappeler de l'exécuter manuellement. Au lieu de cela, je le configure pour s'exécuter automatiquement une fois par heure à l'aide de Windows Task Scheduler.

Encore une fois, j'ai enregistré le script PowerShell créé en AI comme un fichier .ps1, puis j'ai ouvert Planificateur de tâches de Menu de démarrage et a créé un Nouvelle tâche de base avec un déclencheur quotidien.

Après avoir créé la tâche de base, je devais modifier les paramètres de déclenchement pour l'exécution horaire. Dans la bibliothèque Task Scheduler, j'ai localisé ma tâche nouvellement créée et cliqué avec le bouton droit pour sélectionner Propriétés. J'ai navigué vers le Déclencheurs Tab et sélectionné Modifier. Dans le Modifier la gâchette fenêtre, j'ai vérifié le Répétez la tâche chaque: option et définissez l'intervalle de répétition sur 1 heure. Sous la durée, j'ai sélectionné Indéfinimentpuis cliqué D'ACCORD pour enregistrer ces paramètres.

J'avais également besoin de configurer correctement les paramètres d'action. Dans la fenêtre des propriétés, j'ai navigué vers le Actes Tab et sélectionné Modifier. Pour le champ de programme / script, je suis entré powershell.exe
au lieu du chemin direct vers mon script. Dans le champ Ajouter des arguments, je suis entré -ExecutionPolicy Bypass -WindowStyle Hidden -File "C:UsersDavidDesktopeye-saver.ps1"
qui comprend à la fois les paramètres d'exécution et le chemin complet de mon script.

Après avoir apporté ces modifications, j'ai cliqué D'ACCORD Pour enregistrer les paramètres d'action, puis cliqué D'ACCORD Encore une fois sur la fenêtre Propriétés pour finaliser toutes les modifications. Le résultat valait l'effort!
La beauté de cette approche d'IA est qu'une fois que vous avez mis en place quelques tâches automatisées via des scripts PowerShell, votre ordinateur commence à travailler pour vous en arrière-plan, en faisant tous ces petits coups de pouce utiles qui vous obligent à vous souvenir ou à définir des alarmes externes.
Si vous souhaitez explorer plus de capacités PowerShell pour vos projets d'automatisation, consultez notre guide des commandes PowerShell essentielles que chaque utilisateur de Windows devrait connaître. Ces commandes forment les éléments constitutifs de scripts plus complexes et vous aideront à comprendre ce qui se passe sous le capot de votre automatisation générée par AI.