Question Vérification présence de lecteurs MSCS (Résolu)

Plus d'informations
il y a 16 ans 9 mois #4759 par dimeric
Bonjour,

Voila je dois faire une tâche planifiée sur un cluster.

Pour que cette tâche s'exécute je dois m'assurer que le lecteur I: est bien présent sur le noeud ou la tâche se lance.

J'ai pensé à faire un Get-PSdrive I qui me retourne bien que mon lecteur I est bien present mais je ne sais pas quoi faire après.

Je pensais un script du genre :

[code:1]if get-psdrive I = true
then mon script
else end[/code:1]

Est ce faisable ?

A suivre<br><br>Message édité par: Arnaud, à: 9/06/09 01:14

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

Plus d'informations
il y a 16 ans 9 mois #4760 par Laurent Dardenne
Salut,
Get-PSDrive renvoi une erreur si le lecteur n'existe pas, on peut donc construire un filtre :
[code:1]Filter Test-PsDrive
{
$ErrorPSdrive=$null
[void](Get-PSDrive $_ -scope global -ev ErrorPSdrive -ea silentlycontinue)
if ($ErrorPSdrive.Count -gt 0)
{Write-Host \&quot;lecteur $_ absent.\&quot;}
else {Write-host \&quot;Lecteur $_ Présent.\&quot;}
}

\&quot;C\&quot;,\&quot;W\&quot;|Test-PsDrive

new-psdrive -name ProfilDir -psprovider FileSystem -root \&quot;$env:HOMEDRIVE\$env:HOMEPATH\&quot;
\&quot;profildir\&quot;|Test-PsDrive
remove-psdrive ProfilDir
\&quot;profildir\&quot;|Test-PsDrive[/code:1]
Le code peut être adapté.

Ensuite si on souhaite utiliser le pipeline :
[code:1]Filter Test-PsDrive
{
$ErrorPSdrive=$null
[void](Get-psdrive $_ -scope global -ev ErrorPSdrive -ea silentlycontinue)
($ErrorPSdrive.Count -eq 0)
}
\&quot;C\&quot;,\&quot;W\&quot;|Test-PsDrive|Where {$_ -eq $True}| Foreach {Write-host \&quot;Lecteur $_ Présent.\&quot;}[/code:1]
Il reste un pb avec cette approche, on sait si le drive existe ou pas mais ne on connait plus son nom.
Dans ce cas on peut procéder ainsi :
[code:1]
\&quot;C\&quot;,\&quot;W\&quot;|Foreach -begin{$Current=$null} -process{$Current=$_;$_}|Test-PsDrive|Where {$_ -eq $True}| Foreach {Write-host \&quot;Lecteur $Current Présent.\&quot;}[/code:1]
Mais on peut aussi ne pas utiliser le pipe :)

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 9 mois #4773 par dimeric
Merci laurent

cela correspond pile pol a mon besoin

voici donc ce que j ai mis en place ce matin

[code:1]Filter Test-PsDrive
{
$ErrorPSdrive=$null
[void](Get-PSDrive $_ -scope global -ev ErrorPSdrive -ea silentlycontinue)
if ($ErrorPSdrive.Count -gt 0)
{Write-Host \&quot;lecteur $_ absent.\&quot;}
else {
c:\windows\system32\robocopy \\source \\destination /mir /sec /np /log+:c:\fichierlog.txt
}
}
\&quot;i\&quot;,\&quot;W\&quot;|Test-PsDrive[/code:1]

il me reste a trouver comment ajouter la date a la suite du nom du fichier log (par ex fichier_date.txt)

a suivre

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

Plus d'informations
il y a 16 ans 9 mois #4777 par Laurent Dardenne
dimeric écrit:

il me reste a trouver comment ajouter la date a la suite du nom du fichier log (par ex fichier_date.txt)

Une piste
[code:1] ... log+:$(\&quot;c:\FichierLog{0:ddMMyyyy}.txt\&quot; -F (Get-Date))[/code:1]

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 9 mois #4804 par Arnaud Petitjean
Bonjour à tous,

J'ai eu cette même problématique aujourd'hui. Je devais faire un script qui s'exécute sur un cluster MSCS et qui manipule des fichiers. Du coup, on n'est pas toujours certain d'avoir accès aux disques et il convient de tester le chemin.

Pour ma part j'ai simplement utilisé la commande Test-Path et ça fonctionne parfaitement bien.

Exemple :

[code:1]
if (Test-Path S:\)
{
write-output \&quot;Disque présent\&quot;
}
else
{
write-output \&quot;Disque absent\&quot;
}
[/code:1]

Test-Path renvoie une valeur Booléenne.

Et comme ça on s'évite une gestion des erreurs ! :)

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 16 ans 9 mois #4807 par Laurent Dardenne
Arnaud écrit:

Et comme ça on s'évite une gestion des erreurs ! :)

Oui tu as raison Arnaud.
Si tu codes le chemin en dur, tu n'as pas à gérer les cas d'erreur.
Mais si tu utilises une variable ce n'est plus le cas :
[code:1]
$Name=$null
Test-path $Name
#exception
get-psdrive $Name
#listing

$Name=\&quot;hklm\&quot;
Test-path $Name
#false
get-psdrive $Name
#true

$Name=\&quot;hklm:\&quot;
Test-path $Name
#true
get-psdrive $Name
#exception
[/code:1]

Tutoriels PowerShell

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

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