Question Automatisation problème

Plus d'informations
il y a 9 mois 1 semaine #34689 par Benjamin Bauer
Bonjour à tous,

Je suis sous windows 11, et par moment le réseau se déconnecte tout seul. J'ai donc demandé à chat gpt de m'aider en faisant un script automatisant la connexion à mon réseau Wifi lors du déverrouillage de ma session. Il m'a donné un script powershell a executer, combiné au planificateur de tâches.

Mais le script ne fonctionne pas, je ne sais pas pourquoi. Le script est ci-dessous.

# Vérifie l'état de la connexion Internet
function Test-InternetConnection {
    try {
        $ping = Test-Connection -ComputerName www.google.com -Count 1 -ErrorAction Stop
        return $true
    } catch {
        return $false
    }
}

# Active le Wi-Fi s'il est désactivé
function Enable-WiFi {
    $wifiAdapter = Get-NetAdapter | Where-Object {$_.InterfaceDescription -match "Wi-Fi"}
    if ($wifiAdapter -and $wifiAdapter.Status -eq "Disabled") {
        Enable-NetAdapter -Name $wifiAdapter.Name -Confirm:$false
        Start-Sleep -Seconds 3
    }
}

# Désactive puis réactive le Wi-Fi
function Restart-WiFi {
    $wifiAdapter = Get-NetAdapter | Where-Object {$_.InterfaceDescription -match "Wi-Fi" -and $_.Status -eq "Up" -or $_.Status -eq "Down"}
    if ($wifiAdapter) {
        Disable-NetAdapter -Name $wifiAdapter.Name -Confirm:$false
        Start-Sleep -Seconds 3
        Enable-NetAdapter -Name $wifiAdapter.Name -Confirm:$false
    }
}

# Se connecte à un réseau spécifique
function Connect-ToWiFi {
    param (
        [string]$SSID
    )
    netsh wlan connect name=$SSID
}

# Exécution du script
Enable-WiFi
if (-not (Test-InternetConnection)) {
    Restart-WiFi
    Start-Sleep -Seconds 5
    Connect-ToWiFi -SSID "Free Home_5Ghz"
}


Je vous remercie par avance.

Bonne journée à vous.

Cordialement,
BAUER Benjamin
 
Pièces jointes :

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 mois 1 jour #34701 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Automatisation problème
Bonjour Benjamin,

Eh oui, pas facile de scripter avec l'IA... Que ce soit ChatGPT ou une autre. Il faut de mon point de vue maîtriser le sujet pour réellement gagner du temps. En effet l'IA hallucine parfois et invente des commandes qui n'existent pas ! Fichier attaché :

Cela étant dit, ça n'a pas l'air d'être le cas ici ;-).

Pourrais-tu être un peu plus précis et nous dire ce qui ne fonctionne pas ? As-tu testé le bon fonctionnement de chaque fonction individuellement ?

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 mois 3 semaines #34721 par Francois Dunoyer
Réponse de Francois Dunoyer sur le sujet Automatisation problème
En ce qui concerne ma config si je veux récupérer l'interface WIFI
c'est soit
$wifiAdapter = Get-NetAdapter | Where-Object {$_.Name -match "Wi-Fi"}
soit
$wifiAdapter = Get-NetAdapter | Where-Object {$_.InterfaceDescription -match "WiFi"}

est ce que ton réseau WIFI interne s'appelle bien Free Home_5Ghz" ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 6 mois 3 semaines #34745 par Nazim Hassani
Réponse de Nazim Hassani sur le sujet Automatisation problème
j'ai travaillé un peu sur votre idée et j'ai essayé de faire en sorte de marcher votre script en le modifiant legerement
essayer cela et tenez moi au courant

# Vérifie l'état de la connexion Internet
function Test-InternetConnection {
try {
$ping = Test-Connection -ComputerName www.google.com -Count 1 -ErrorAction Stop
return $true
} catch {
return $false
}
}

# Active le Wi-Fi s'il est désactivé
function Enable-WiFi {
$wifiAdapter = Get-NetAdapter | Where-Object {$_.name -eq "Wi-Fi"}
if ($wifiAdapter -and $wifiAdapter.Status -eq "Disabled") {
Enable-NetAdapter -Name $wifiAdapter.Name -Confirm:$false
Start-Sleep -Seconds 3
}
}

# Désactive puis réactive le Wi-Fi
function Restart-WiFi {
$wifiAdapter = Get-NetAdapter | Where-Object {$_.InterfaceDescription -match "Wi-Fi" -and $_.Status -eq "Up" -or $_.Status -eq "Down"}
if ($wifiAdapter) {
Disable-NetAdapter -Name $wifiAdapter.Name -Confirm:$false
Start-Sleep -Seconds 3
Enable-NetAdapter -Name $wifiAdapter.Name -Confirm:$false
}
}

function Search-WorkingProfile{
$profiles = @()
netsh wlan show profiles | ForEach-Object {
if ($_ -match ":\s*(.+)$") {
$profiles += $Matches[1].Trim()
}
foreach($SSID in $profiles){
netsh wlan connect name=$SSID ssid=$SSID|out-null
if($? -eq $true){
write-host "Successfully connected to $SSID"
break
}
}
}
}

# Se connecte à un réseau spécifique
function Connect-ToWiFi {
param (
[string]$SSID
)
netsh wlan connect name=$SSID
}

# Exécution du script
Enable-WiFi
if (-not (Test-InternetConnection)) {
Restart-WiFi
Start-Sleep -Seconds 5
Search-WorkingProfile
}

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 6 mois 3 semaines #34746 par Nazim Hassani
Réponse de Nazim Hassani sur le sujet Automatisation problème
Désolé une erreur d'accolade voici l'update

# Vérifie l'état de la connexion Internet
function Test-InternetConnection {
try {
$ping = Test-Connection -ComputerName www.google.com -Count 1 -ErrorAction Stop
return $true
} catch {
return $false
}
}

# Active le Wi-Fi s'il est désactivé
function Enable-WiFi {
$wifiAdapter = Get-NetAdapter | Where-Object {$_.name -eq "Wi-Fi"}
if ($wifiAdapter -and $wifiAdapter.Status -eq "Disabled") {
Enable-NetAdapter -Name $wifiAdapter.Name -Confirm:$false
Start-Sleep -Seconds 3
}
}

# Désactive puis réactive le Wi-Fi
function Restart-WiFi {
$wifiAdapter = Get-NetAdapter | Where-Object {$_.InterfaceDescription -match "Wi-Fi" -and $_.Status -eq "Up" -or $_.Status -eq "Down"}
if ($wifiAdapter) {
Disable-NetAdapter -Name $wifiAdapter.Name -Confirm:$false
Start-Sleep -Seconds 3
Enable-NetAdapter -Name $wifiAdapter.Name -Confirm:$false
}
}

function Search-WorkingProfile{
$profiles = @()
netsh wlan show profiles | ForEach-Object {
if ($_ -match ":\s*(.+)$") {
$profiles += $Matches[1].Trim()
}}
foreach($SSID in $profiles){
netsh wlan connect name=$SSID ssid=$SSID|out-null
if($? -eq $true){
write-host "Successfully connected to $SSID"
break
}
}

}

# Se connecte à un réseau spécifique
function Connect-ToWiFi {
param (
[string]$SSID
)
netsh wlan connect name=$SSID
}

# Exécution du script
Enable-WiFi
if (-not (Test-InternetConnection)) {
Restart-WiFi
Start-Sleep -Seconds 5
Search-WorkingProfile
}

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.113 secondes
Propulsé par Kunena