Question Problème de chemin par défaut

Plus d'informations
il y a 6 jours 5 heures #31498 par Gabriel
Bonjour à tous,
Je ne pense pas que mon problème soit compliqué mais je n'arrive pas à m'en dépatouiller. J'ai un script de sauvegarde sur mon NAS que j'avais fait avec votre aide et qui fonctionnait très bien. Mais quand j'ai changé d'ordinateur il n'a plus voulu marcher. Je viens de me mettre au débogage et il s'est avéré qu'il s'agit d'un problème de chemin car le nouvel ordinateur a son disque C:\ sur SSD et j'ai donc prévu un disque classique où on est plus à l'aise en D:\ . Pour démarrer le script pas de problème. Avec le planificateur des tâches je mets le chemin complet vers D:\. Mais pour suivre son fonctionnement j'ai un log sur D:\.
Mais le chemin par défaut de Poweshell est C:\Users\Moi. Donc comment faire pour être sûr que mes scripts s'exécutent sur D:\Chemin_du répertoire_de travail. Si je mets un Set-Location en tête de script ça marche mais si pour une raison quelconque je relance le script j'ai une erreur car le Set-Location échoue car il met 2 fois le même chemin bout à bout.
Il me faut donc un test un peu plus sophistiqué. A moins de changer le path par défaut du système mais j'aimerais l'éviter, ou de mettre des chemins complets partout, mais c'est fastidieux.
Merci pour une bonne idée dans ce sens.
:) gabier
 

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

Plus d'informations
il y a 5 jours 17 heures #31501 par ericlm128
Réponse de ericlm128 sur le sujet Problème de chemin par défaut
Bonjour,

Tu dois avoir un petit problème de conception dans ton script, il faut que nous en voyons plus pour t'aider.

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

Plus d'informations
il y a 5 jours 16 heures #31502 par Gabriel
Réponse de Gabriel sur le sujet Problème de chemin par défaut
Voici mon script. En l'état, il ne trouve pas le log et donc je n'ai rien dedans.

###################################################
$monlog="monlog.txt"
Function Control_proc{
$Message="Je rentre dans Control Proc $(get-date)"
$Message >> $monlog
$CBProc1=get-process cloud-backup-ui* -ErrorAction SilentlyContinue
if($CBProc1 -ne $Null){
"Proc1 est démarré $(get-date)" >>$monlog
}else{
"Proc1 n'est pas démarré $(get-date)" >>$monlog
}
################
$CBProc2=get-process cloud-backup-daemon* -ErrorAction SilentlyContinue
if($CBProc2 -ne $Null){
$Message="Proc2 est démarré $(get-date)"
}else{
$Message="Proc2 n'est pas démarré $(get-date)"
}
$Message >>$monlog
#########################################################
$CBProc3=get-process cloud-backup-connect* -ErrorAction SilentlyContinue
if($CBProc3 -ne $Null){
"Proc3 est démarré $(get-date)">>$monlog
}else{
"Proc3 n'est pas démarré $(get-date)">>$monlog
}
$Message="Je sort de Control Proc $(get-date)"
$Message >> $monlog
} #End function Control_proc
########################################################
Function Control_Serv{
$Check=(get-service |where {$_.name -like "*Cloud Station Backup*"}).Status
if($check -eq "Running"){
$Message="Le service CBS est démarré $(get-date)"
}else{
$Message="Le service CBS n'est pas démarré $(get-date)"
}
$Message >>$monlog
}#End function Control_Serv
#########################################################
function Kill_proc{
"Début de Kill_Proc" >>$monlog
$procid=get-process cloud-backup-ui* |select -expand id
stop-process -id $procid -force
$procid=get-process cloud-backup-daemon* |select -expand id
stop-process -id $procid -force
$procid=get-process cloud-backup-connect* |select -expand id
stop-process -id $procid -force
"Fin Kill_Proc >>$monlog
}#End function Kill_proc

##############################################
"#############################################" >>$monlog
"Le script CBS_Sess_GG démarre $(get-date)" >>$monlog
#Fermer outlook si présent
$outlook=get-process -name OUTLOOK -ErrorAction SilentlyContinue
if($outlook -ne $Null){
stop-process -name OUTLOOK
"OUTLOOK stoppé $(get-date)" >>$monlog
}
################################################
######## Entrée du Script
######## Démarrer l'application Cloud-Station-Backup et contrôler
### Essayer 5 fois
#################################################
$i=0
$Proc1=get-process cloud-backup-ui*
$Proc2=get-process cloud-backup-daemon*
$Proc3=get-process cloud-backup-connect*
if(($proc1 -eq $null) -or ($proc2 -eq $null) -or ($proc3 -eq $null))
{$Proc = $null
"Un des process est absent $(get-date)" >>$monlog
}
else
{$Proc=1
"Tout le monde est là $(get-date)" >>$monlog
}
while(($Proc -eq $Null) -and ($i -le 5))
{
& "C:\Programmes (x86)\Synology\CloudStationBackup\bin\launcher.exe"
"On lance le launcher $(get-date)" >>$monlog
start-sleep -s 10
$Proc1=get-process cloud-backup-ui*
$Proc2=get-process cloud-backup-daemon*
$Proc3=get-process cloud-backup-connect*
if(($proc1 -eq $null) -or ($proc2 -eq $null) -or ($proc3 -eq $null))
{$Proc = $null
"Un des process est absent $(get-date)" >>$monlog
}
else
{$Proc=1
"Tout le monde est là $(get-date)" >>$monlog
}
$i++
"i= $i">>$monlog
}
$Message="Lancement de Control_Proc $(get-date)"
$Message >> $monlog
#####################
Control_Proc
"Control_Proc terminé $(get-date)" >>$monlog
#################################################
######## Démarrer le service cloud-Station-backup et contrôler
##### Recommencer jusqu'à 5 fois si ça ne marche pas
#### dans l'immédiat on shunte les erreurs
#################################################
$i=0
$Error.Clear()
$CBServ=get-service |where {$_.name -like "*Cloud Station Backup*"}
while(($CBServ.status -ne "Running") -and ($i -le 5))
{
$CBServ=get-service |where {$_.name -like "*Cloud Station Backup*"}
$CBServName=$CBServ.Name
if($cbserv.status -ne "Running"){start-service -ErrorAction SilentlyContinue -name $CBServName}
start-sleep -s 5
#Contrôle
Control_Serv
$i++
}
if ($error.Count -ne 0){
"N Erreurs=" $Error[0] >>$monlog
}
"Fin de démarrage des applis : $(get-date)" >>$monlog
####################################################
##### Boucle d'attente ###################
##################################################
$watch=[System.Diagnostics.Stopwatch]::startNew()
$DateStart=$watch.Elapsed.TotalSeconds
"Attente. Départ : $(get-date)" >>$monlog
$DateFin=$DateStart+5400
$i=0
$Delay=300000
####millisecondes
$NSlice=18
Do{
$i=$i+1
[System.Threading.Thread]::Sleep($delay)
$DateCour=$watch.Elapsed.TotalSeconds
"Boucle en cours $DateCour / $(get-date)" >>$monlog
}while(($DateCour -le $DateFin)-and ($i -lt $NSlice))
"Délai écoulé, début d'opérations d'arrêt : $(get-date)" >>$monlog
#################################################
######## Tuer les processus cloud-backup
#################################################
Kill_proc
#################################################
######## Arrêter le service cloud-Station-backup
#################################################
(get-wmiobject win32_service |where {$_.name -like "*Cloud Station Backup*"}).stopservice()

### Contrôles procs
Control_proc
#####Contrôle service
Control_serv
# Arrêter le timer
$watch.stop()
$Message="Fin du script : $(get-date)"
$Message >>$monlog

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

Plus d'informations
il y a 5 jours 4 heures - il y a 5 jours 4 heures #31503 par ericlm128
Réponse de ericlm128 sur le sujet Problème de chemin par défaut
Je ne vois pas de Set-Location mais en mettant ce code ci en tête il ne devrait pas y avoir de problème
Set-Location -LiteralPath "D:\Chemin_du répertoire_de travail"

Je regarderai plus en détail ton code mais il n'est pas très concis
Dernière édition: il y a 5 jours 4 heures par ericlm128.

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

Plus d'informations
il y a 2 jours 9 heures #31517 par Gabriel
Réponse de Gabriel sur le sujet Problème de chemin par défaut
J'ai mis en tête de scrip
$Path="D:\DocData\Powershell\NAS"  ##Chemin du répertoire de travail
$monlog=$Path + "\$monlog.txt"        ## Chemin du fichier log
Je pense que ça fera l'affaire. Cela a l'avantage de limiter le changement de chemin au script lui-même, contrairement à Set-Location qui change les chemins dans tout l'environnement Powershell.
:) Gabier

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

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