Question
Déploiement d'un fichier
- michault
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 128
- Remerciements reçus 0
il y a 17 ans 6 mois #3250
par michault
Réponse de michault sur le sujet Re:Déploiement d'un fichier
Bonjour,
Suite au conseil de Laurent, j'ai paramétré entièrement mon script pour dispatch
mais en testant les différents cas je me suis rendu compte que mon test sur les résultat d'existence des fichiers via get-content n'était pas bon.
Quelqu'un a-t-il une idée?
Merci
[code:1]#DispatchDefrag.ps1
# Paramètres: $ouparm :L'Unité d'Organisation dont on veut récupérer les ordinateurs.
# $drive : Disque exemple C$
# $cmd : *.cmd exemple Defrag+Shutdown.cmd
# $job : *.job exemple DEFRAG.job
# $log : Fichier trace
Param($ouparm,$drive,$cmd,$job,$log)
#Définition des constantes
$domain = \",DC=domaine,DC=fr\"
$OU= $ouparm + $domain
$Batch=1|select Drive,Path,Name,FullPath
$Batch.Drive,$Batch.Path,$Batch.Name=$drive,\"BATCH\",$cmd
$Batch.FullPath=\"$($Batch.Drive)\$($Batch.Path)\$($Batch.Name)\"
get-QADComputer -searchRoot $OU | Select-Object Name | where {$_.Name -like 'PC*'} |
ForEach-Object {
$path = \"\\\" + $_.Name + \"\\" + $Batch.drive + \"$\"
$pathcmd = \"\\\" + $_.Name + \"\\" + $Batch.FullPath
$pathtasks = \"\\\" + $_.Name + \"\\" + $Batch.drive + \"$\Windows\Tasks\\" + $job
$nametasks = $job.split('.job')
Get-Content -Path $pathcmd -ErrorAction SilentlyContinue | Out-Null
if ($true)
{
$_.Name + \": $($Batch.FullPath) trouvé\" | Out-File $log -Append -NoClobber
Get-Content -Path $pathtasks -ErrorAction SilentlyContinue | Out-Null
if ($true)
{
$_.Name + \": $($job) trouvé\" | Out-File $log -Append -NoClobber
}
else
{
schtasks /create /tn \"$($nametasks)\" /tr \"$($Batch.FullPath)\" /s $_.Name /sc once /st 05:00:00 /ru sftfdom\administrateur /rp password | Out-Null
$_.Name + \": Copy +Tasks OK\" | Out-File $log -Append -NoClobber
}
}
else
{
Copy-Item \"c:\PWRSHELL\BATCH\\" -Destination $path -Recurse -ErrorAction SilentlyContinue -ErrorVariable Copyerror
if ($true)
{
Get-Content $pathtasks -ErrorAction SilentlyContinue | Out-Null
if ($true)
{
$_.Name + \": $($job) trouvé\" | Out-File $log -Append -NoClobber
}
else
{
schtasks /create /tn \"$($nametasks)\" /tr \"$($Batch.FullPath)\" /s $_.Name /sc once /st 05:00:00 /ru sftfdom\administrateur /rp password | Out-Null
$_.Name + \": Copy +Tasks OK\" | Out-File $log -Append -NoClobber
}
}
else
{
$_.Name + \": \" + $Copyerror | Out-File $log -Append -NoClobber
}
}
}[/code:1]
Message édité par: chm69, à: 17/11/08 13:04<br><br>Message édité par: chm69, à: 17/11/08 15:47
Suite au conseil de Laurent, j'ai paramétré entièrement mon script pour dispatch
mais en testant les différents cas je me suis rendu compte que mon test sur les résultat d'existence des fichiers via get-content n'était pas bon.
Quelqu'un a-t-il une idée?
Merci
[code:1]#DispatchDefrag.ps1
# Paramètres: $ouparm :L'Unité d'Organisation dont on veut récupérer les ordinateurs.
# $drive : Disque exemple C$
# $cmd : *.cmd exemple Defrag+Shutdown.cmd
# $job : *.job exemple DEFRAG.job
# $log : Fichier trace
Param($ouparm,$drive,$cmd,$job,$log)
#Définition des constantes
$domain = \",DC=domaine,DC=fr\"
$OU= $ouparm + $domain
$Batch=1|select Drive,Path,Name,FullPath
$Batch.Drive,$Batch.Path,$Batch.Name=$drive,\"BATCH\",$cmd
$Batch.FullPath=\"$($Batch.Drive)\$($Batch.Path)\$($Batch.Name)\"
get-QADComputer -searchRoot $OU | Select-Object Name | where {$_.Name -like 'PC*'} |
ForEach-Object {
$path = \"\\\" + $_.Name + \"\\" + $Batch.drive + \"$\"
$pathcmd = \"\\\" + $_.Name + \"\\" + $Batch.FullPath
$pathtasks = \"\\\" + $_.Name + \"\\" + $Batch.drive + \"$\Windows\Tasks\\" + $job
$nametasks = $job.split('.job')
Get-Content -Path $pathcmd -ErrorAction SilentlyContinue | Out-Null
if ($true)
{
$_.Name + \": $($Batch.FullPath) trouvé\" | Out-File $log -Append -NoClobber
Get-Content -Path $pathtasks -ErrorAction SilentlyContinue | Out-Null
if ($true)
{
$_.Name + \": $($job) trouvé\" | Out-File $log -Append -NoClobber
}
else
{
schtasks /create /tn \"$($nametasks)\" /tr \"$($Batch.FullPath)\" /s $_.Name /sc once /st 05:00:00 /ru sftfdom\administrateur /rp password | Out-Null
$_.Name + \": Copy +Tasks OK\" | Out-File $log -Append -NoClobber
}
}
else
{
Copy-Item \"c:\PWRSHELL\BATCH\\" -Destination $path -Recurse -ErrorAction SilentlyContinue -ErrorVariable Copyerror
if ($true)
{
Get-Content $pathtasks -ErrorAction SilentlyContinue | Out-Null
if ($true)
{
$_.Name + \": $($job) trouvé\" | Out-File $log -Append -NoClobber
}
else
{
schtasks /create /tn \"$($nametasks)\" /tr \"$($Batch.FullPath)\" /s $_.Name /sc once /st 05:00:00 /ru sftfdom\administrateur /rp password | Out-Null
$_.Name + \": Copy +Tasks OK\" | Out-File $log -Append -NoClobber
}
}
else
{
$_.Name + \": \" + $Copyerror | Out-File $log -Append -NoClobber
}
}
}[/code:1]
Message édité par: chm69, à: 17/11/08 13:04<br><br>Message édité par: chm69, à: 17/11/08 15:47
Connexion ou Créer un compte pour participer à la conversation.
- michault
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 128
- Remerciements reçus 0
il y a 17 ans 6 mois #3252
par michault
Réponse de michault sur le sujet Re:Déploiement d'un fichier
Je viens de trouver Test-path beaucoup plus approprié
mais mon test retour dans result n'est pas bon.
AU SECOURS:angry:
[code:1]#DispatchDefrag.ps1
# Paramètres: $ouparm :L'Unité d'Organisation dont on veut récupérer les ordinateurs.
# $drive : Disque exemple C$
# $cmd : *.cmd exemple Defrag+Shutdown.cmd
# $job : *.job exemple DEFRAG.job
# $log : Fichier trace
Param($ouparm,$drive,$cmd,$job,$log)
#Définition des constantes
$domain = \",DC=domaine,DC=fr\"
$OU= $ouparm + $domain
$Batch=1|select Drive,Path,Name,FullPath
$Batch.Drive,$Batch.Path,$Batch.Name=$drive,\"BATCH\",$cmd
$Batch.FullPath=\"$($Batch.Drive)\$($Batch.Path)\$($Batch.Name)\"
get-QADComputer -searchRoot $OU | Select-Object Name | where {$_.Name -like 'PC*'} |
ForEach-Object {
$path = \"\\\" + $_.Name + \"\\" + $Batch.drive
$pathcmd = \"\\\" + $_.Name + \"\\" + $Batch.FullPath
$pathtasks = \"\\\" + $_.Name + \"\\" + $Batch.drive + \"\Windows\Tasks\\" + $job
$nametasks = $job.split('.job')
Test-Path -Path $pathcmd -OutVariable $result
Write-Host $result
if ($result = $true)
{
$_.Name + \": $($Batch.FullPath) trouvé\" | Out-File $log -Append -NoClobber
Test-Path -Path $pathtasks -OutVariable $result
if ($result = $true)
{
$_.Name + \": $($job) trouvé\" | Out-File $log -Append -NoClobber
}
else
{
schtasks /create /tn \"$($nametasks)\" /tr \"$($Batch.FullPath)\" /s $_.Name /sc once /st 05:00:00 /ru sftfdom\administrateur /rp password | Out-Null
$_.Name + \": Copy +Tasks OK\" | Out-File $log -Append -NoClobber
}
}
else
{
Copy-Item \"c:\PWRSHELL\BATCH\\" -Destination $path -Recurse -ErrorAction SilentlyContinue -ErrorVariable Copyerror
if ($?)
{
Test-Path $pathtasks -outVariable $result
if ($result = $true)
{
$_.Name + \": $($job) trouvé\" | Out-File $log -Append -NoClobber
}
else
{
schtasks /create /tn \"$($nametasks)\" /tr \"$($Batch.FullPath)\" /s $_.Name /sc once /st 05:00:00 /ru sftfdom\administrateur /rp password | Out-Null
$_.Name + \": Copy +Tasks OK\" | Out-File $log -Append -NoClobber
}
}
else
{
$_.Name + \": \" + $Copyerror | Out-File $log -Append -NoClobber
}
}
}[/code:1]
Message édité par: chm69, à: 17/11/08 13:11<br><br>Message édité par: chm69, à: 17/11/08 15:48
mais mon test retour dans result n'est pas bon.
AU SECOURS:angry:
[code:1]#DispatchDefrag.ps1
# Paramètres: $ouparm :L'Unité d'Organisation dont on veut récupérer les ordinateurs.
# $drive : Disque exemple C$
# $cmd : *.cmd exemple Defrag+Shutdown.cmd
# $job : *.job exemple DEFRAG.job
# $log : Fichier trace
Param($ouparm,$drive,$cmd,$job,$log)
#Définition des constantes
$domain = \",DC=domaine,DC=fr\"
$OU= $ouparm + $domain
$Batch=1|select Drive,Path,Name,FullPath
$Batch.Drive,$Batch.Path,$Batch.Name=$drive,\"BATCH\",$cmd
$Batch.FullPath=\"$($Batch.Drive)\$($Batch.Path)\$($Batch.Name)\"
get-QADComputer -searchRoot $OU | Select-Object Name | where {$_.Name -like 'PC*'} |
ForEach-Object {
$path = \"\\\" + $_.Name + \"\\" + $Batch.drive
$pathcmd = \"\\\" + $_.Name + \"\\" + $Batch.FullPath
$pathtasks = \"\\\" + $_.Name + \"\\" + $Batch.drive + \"\Windows\Tasks\\" + $job
$nametasks = $job.split('.job')
Test-Path -Path $pathcmd -OutVariable $result
Write-Host $result
if ($result = $true)
{
$_.Name + \": $($Batch.FullPath) trouvé\" | Out-File $log -Append -NoClobber
Test-Path -Path $pathtasks -OutVariable $result
if ($result = $true)
{
$_.Name + \": $($job) trouvé\" | Out-File $log -Append -NoClobber
}
else
{
schtasks /create /tn \"$($nametasks)\" /tr \"$($Batch.FullPath)\" /s $_.Name /sc once /st 05:00:00 /ru sftfdom\administrateur /rp password | Out-Null
$_.Name + \": Copy +Tasks OK\" | Out-File $log -Append -NoClobber
}
}
else
{
Copy-Item \"c:\PWRSHELL\BATCH\\" -Destination $path -Recurse -ErrorAction SilentlyContinue -ErrorVariable Copyerror
if ($?)
{
Test-Path $pathtasks -outVariable $result
if ($result = $true)
{
$_.Name + \": $($job) trouvé\" | Out-File $log -Append -NoClobber
}
else
{
schtasks /create /tn \"$($nametasks)\" /tr \"$($Batch.FullPath)\" /s $_.Name /sc once /st 05:00:00 /ru sftfdom\administrateur /rp password | Out-Null
$_.Name + \": Copy +Tasks OK\" | Out-File $log -Append -NoClobber
}
}
else
{
$_.Name + \": \" + $Copyerror | Out-File $log -Append -NoClobber
}
}
}[/code:1]
Message édité par: chm69, à: 17/11/08 13:11<br><br>Message édité par: chm69, à: 17/11/08 15:48
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 17 ans 6 mois #3253
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Déploiement d'un fichier
chm69 écrit:
Du coup cela simplifiera la lecture. Il reste l'usage du log qui je pense peut être amélioré, de plus au vue des 3-4 instructions le mieux est de ne tracer que les échecs, à moins que tu souhaites savoir si cela à fonctionné ou pas.<br><br>Message édité par: Laurent Dardenne, à: 17/11/08 13:12
Je comptais te demander le pourquoi d'un tel usage de Get-content, si c'est pour tester un chemin utilise Test-Path.mon test sur les résultat d'existence des fichiers via get-content n'était pas bon.
Du coup cela simplifiera la lecture. Il reste l'usage du log qui je pense peut être amélioré, de plus au vue des 3-4 instructions le mieux est de ne tracer que les échecs, à moins que tu souhaites savoir si cela à fonctionné ou pas.<br><br>Message édité par: Laurent Dardenne, à: 17/11/08 13:12
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- michault
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 128
- Remerciements reçus 0
il y a 17 ans 6 mois #3254
par michault
Réponse de michault sur le sujet Re:Déploiement d'un fichier
Salut à toi Laurent
Voilà je pense avoir trouver ma solution
[code:1]$result = Test-Path $pathtasks
if ($result -eq $true)[/code:1]
Pour le log, effectivement je préfère tout avoir.
Quand ce sera rodé, seuls les echecs seront stockés.
Il me reste à utiliser le crédential .
@+ et encore merci pour ton aide précieuse<br><br>Message édité par: chm69, à: 17/11/08 15:48
Voilà je pense avoir trouver ma solution
[code:1]$result = Test-Path $pathtasks
if ($result -eq $true)[/code:1]
Pour le log, effectivement je préfère tout avoir.
Quand ce sera rodé, seuls les echecs seront stockés.
Il me reste à utiliser le crédential .
@+ et encore merci pour ton aide précieuse<br><br>Message édité par: chm69, à: 17/11/08 15:48
Connexion ou Créer un compte pour participer à la conversation.
- michault
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 128
- Remerciements reçus 0
il y a 17 ans 6 mois #3263
par michault
Réponse de michault sur le sujet Re:Déploiement d'un fichier
Mon script de déploiement est réécrit (1ère version dans contribution sous le titre \"lancer un défrag à distant\"; Je le posterai quand il sera aux petits oignons)
Mon script de réveille dans PC et de l'éxécution de la tâche planifiée (dans le même post) ne fonctionne pas car il me manque encore une étape.
Explication:
Je réveille bien le PC mais le schtasks / run échoue.
Si après le réveil du PC, j'ouvre une session, il abouti.
Ma question comment puis-je ouvrir une session entre mon wakeuppc et mon schtasks / run?
je pense à mstsc par exemple.
Quelqu'un a-t-il déjà fait çà?
merci d'avance aux pros qui m'ont déjà beaucoup aidé et désolé d'avoir posté dans contribution 2 scripts pas tout à fait aboutis.
Mon script de réveille dans PC et de l'éxécution de la tâche planifiée (dans le même post) ne fonctionne pas car il me manque encore une étape.
Explication:
Je réveille bien le PC mais le schtasks / run échoue.
Si après le réveil du PC, j'ouvre une session, il abouti.
Ma question comment puis-je ouvrir une session entre mon wakeuppc et mon schtasks / run?
je pense à mstsc par exemple.
Quelqu'un a-t-il déjà fait çà?
merci d'avance aux pros qui m'ont déjà beaucoup aidé et désolé d'avoir posté dans contribution 2 scripts pas tout à fait aboutis.
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 17 ans 6 mois #3265
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Déploiement d'un fichier
chm69 écrit:
chm69 écrit:
As tu essayé avec /RU \"NT AUTHORITY\SYSTEM\"Je réveille bien le PC mais le schtasks / run échoue.
Si après le réveil du PC, j'ouvre une session, il abouti.
chm69 écrit:
\"pas encore aboutis\"et désolé d'avoir posté dans contribution 2 scripts pas tout à fait aboutis.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.045 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Déploiement d'un fichier