Question Exécution d'un script

Plus d'informations
il y a 2 ans 4 mois - il y a 2 ans 4 mois #31481 par ArnoD
Exécution d'un script a été créé par ArnoD
 Bonjour à tous,
J'ai écrit un script powershell qui permet de tester / monter mes partages réseaux.
Si le script est exécuté dans powershell ise, l'exécution se déroule correctement :
- affichage des informations attendues (write-host),
- apparition des partages réseaux dans l'explorateur.
Si le script est exécuté dans powershell, l'exécution semble se dérouler correctement :
- affichage des informations attendues (write-host),
- pas de partages réseaux dans l'explorateur.
J'ai modifié des droits "ExecutionPolicy", exécuté powershell en admin ... Rien y fait.
Si vous avez des idées, je suis preneur.
Merci d'avance pour votre aide.

 - Mon Script -

Clear-Host

$devicename = "NomServeur"
$ipaddress = "x.x.x.x"
$shareverif = "FichierTest"
$sharename = @("share1", "share2", "share3")
$countshare = $sharename.Length
$shareid = @("O", "P", "Q")

$count = 0

#Test Résolution Host & PingIP
if (test-connection $devicename -count 1 -quiet) {
    $count = 1
    write-host $devicename "Host OK." -foreground green
    if (test-connection $ipaddress -count 1 -quiet) {
        write-host $ipaddress "Ping OK." -foreground green
    } else {
        $count = 3
        write-host $ipaddress "Ping NOK." -foreground red
        write-host "Attention : Problème à identifier."
    }
} else {
    write-host $devicename "Host NOK." -foreground red
    if (test-connection $ipaddress -count 1 -quiet) {
        $count = 2
        write-host $ipaddress "Ping OK." -foreground green
    } else {
        $count = 3
        write-host $ipaddress "Ping NOK." -foreground red
        write-host "Attention : Problème à identifier."
    }
}

For ( $i=0 ; $i -lt $countshare ; $i=$i+1 ) 

#write-host "$i"

write-host ""

$sharename2 =  $sharename[$i]
$lecteurpath = $shareid[$i]
$lecteur =  $lecteurpath + ":\$shareverif"
write-host "$sharename2"
write-host "$lecteurpath"
write-host "$lecteur"

if ($count -eq 1) {
    $UNC = "\\$devicename\$sharename2"
} else {
    if ($count -eq 2) {
        $UNC = "\\$ipaddress\$sharename2"
    } else {
        if ($count -eq 3) {
            $UNC = ""
            write-host "Attention : Problème à identifier."
        }
    }
}
write-host "$UNC"

$user = "cptuser"
$mdp ="cptpwd"
$SecureString = ConvertTo-SecureString $mdp -AsPlainText -Force
$Credentials = New-Object System.Management.Automation.PSCredential $user, $SecureString

if ( $count -eq 1 -or $count -eq 2 ) {
    if (Test-Path $lecteur) {
        Get-Content $lecteur
        Write-Host "Le lecteur $lecteurpath est déjà monté !"
    } else {
        Write-Host "Le lecteur $lecteurpath n'est pas monté !"
        Write-Host "Tentative ..."
        New-PSDrive -name $lecteurpath -PSProvider FileSystem -Root $UNC -Persist -Credential $Credentials
        if (Test-Path $lecteur) {
            Get-Content $lecteur
            Write-Host "Le lecteur $lecteurpath est maintenant monté !"
        } else {
        Write-Host "Impossible de monter le lecteur $lecteurpath !"
        }
    }
}

}
Dernière édition: il y a 2 ans 4 mois par ArnoD. Raison: Ajout d'informations

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

Plus d'informations
il y a 2 ans 4 mois #31482 par Philippe
Réponse de Philippe sur le sujet Exécution d'un script
salut ArnoD

je pense que ton problème est décrit dans cet extrait de la doc de New-PSDrive  :
When you scope the command locally, that is, without dot-sourcing, the Persist parameter does not persist the creation of a PSDrive beyond the scope in which you run the command. If you run New-PSDrive inside a script, and you want the new drive to persist indefinitely, you must dot-source the script. For best results, to force a new drive to persist, specify Global as the value of the Scope parameterin addition to adding Persist to your command.

En gros à l'origine, New-PSDrive ne fonctionne pour dans le monde PowerShell.
Mais l'utilisation du paramètre "persist" l'étend au reste du Windows. sauf qu'il supprime les lecteurs à la fermeture de la console PowerShell
La solution consiste à rajouter le paramètre "-Scope Global" dans ta commande New-PSDrive
Normalement cela devrait résoudre ton problème.
 

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

Plus d'informations
il y a 2 ans 4 mois #31483 par ArnoD
Réponse de ArnoD sur le sujet Exécution d'un script
 Bonsoir Philippe et un grand merci pour ton retour qui solutionne mon problème.
Je vais essyer de lire les docs avec plus d'attention  .
Bonne soirée
 

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

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