Question
Vérification présence de lecteurs MSCS (Résolu)
- dimeric
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 16 ans 9 mois #4759
par dimeric
Vérification présence de lecteurs MSCS (Résolu) a été créé 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
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 16 ans 9 mois #4760
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:verification de presence de lecteur
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 \"lecteur $_ absent.\"}
else {Write-host \"Lecteur $_ Présent.\"}
}
\"C\",\"W\"|Test-PsDrive
new-psdrive -name ProfilDir -psprovider FileSystem -root \"$env:HOMEDRIVE\$env:HOMEPATH\"
\"profildir\"|Test-PsDrive
remove-psdrive ProfilDir
\"profildir\"|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)
}
\"C\",\"W\"|Test-PsDrive|Where {$_ -eq $True}| Foreach {Write-host \"Lecteur $_ Présent.\"}[/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]
\"C\",\"W\"|Foreach -begin{$Current=$null} -process{$Current=$_;$_}|Test-PsDrive|Where {$_ -eq $True}| Foreach {Write-host \"Lecteur $Current Présent.\"}[/code:1]
Mais on peut aussi ne pas utiliser le pipe
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 \"lecteur $_ absent.\"}
else {Write-host \"Lecteur $_ Présent.\"}
}
\"C\",\"W\"|Test-PsDrive
new-psdrive -name ProfilDir -psprovider FileSystem -root \"$env:HOMEDRIVE\$env:HOMEPATH\"
\"profildir\"|Test-PsDrive
remove-psdrive ProfilDir
\"profildir\"|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)
}
\"C\",\"W\"|Test-PsDrive|Where {$_ -eq $True}| Foreach {Write-host \"Lecteur $_ Présent.\"}[/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]
\"C\",\"W\"|Foreach -begin{$Current=$null} -process{$Current=$_;$_}|Test-PsDrive|Where {$_ -eq $True}| Foreach {Write-host \"Lecteur $Current Présent.\"}[/code:1]
Mais on peut aussi ne pas utiliser le pipe
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- dimeric
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 16 ans 9 mois #4773
par dimeric
Réponse de dimeric sur le sujet Re:verification de presence de lecteur
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 \"lecteur $_ absent.\"}
else {
c:\windows\system32\robocopy \\source \\destination /mir /sec /np /log+:c:\fichierlog.txt
}
}
\"i\",\"W\"|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
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 \"lecteur $_ absent.\"}
else {
c:\windows\system32\robocopy \\source \\destination /mir /sec /np /log+:c:\fichierlog.txt
}
}
\"i\",\"W\"|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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 16 ans 9 mois #4777
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:verification de presence de lecteur
dimeric écrit:
[code:1] ... log+:$(\"c:\FichierLog{0:ddMMyyyy}.txt\" -F (Get-Date))[/code:1]
Une pisteil me reste a trouver comment ajouter la date a la suite du nom du fichier log (par ex fichier_date.txt)
[code:1] ... log+:$(\"c:\FichierLog{0:ddMMyyyy}.txt\" -F (Get-Date))[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 16 ans 9 mois #4804
par Arnaud Petitjean
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 ?
Réponse de Arnaud Petitjean sur le sujet Re:verification de presence de lecteur
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 \"Disque présent\"
}
else
{
write-output \"Disque absent\"
}
[/code:1]
Test-Path renvoie une valeur Booléenne.
Et comme ça on s'évite une gestion des erreurs !
Arnaud
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 \"Disque présent\"
}
else
{
write-output \"Disque absent\"
}
[/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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 16 ans 9 mois #4807
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:verification de presence de lecteur
Arnaud écrit:
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=\"hklm\"
Test-path $Name
#false
get-psdrive $Name
#true
$Name=\"hklm:\"
Test-path $Name
#true
get-psdrive $Name
#exception
[/code:1]
Oui tu as raison Arnaud.Et comme ça on s'évite une gestion des erreurs !
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=\"hklm\"
Test-path $Name
#false
get-psdrive $Name
#true
$Name=\"hklm:\"
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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Vérification présence de lecteurs MSCS (Résolu)