Question [Résolu]execution script en tache planifier

Plus d'informations
il y a 8 ans 5 mois #24666 par Ludovic B
bonjour à tous,

contexte :
1 .exécution d'un script en tache planifier qui ne fini pas entièrement.
2 .le même script lancer directement fini correctement

dans le script powershell:
0. RunAs
1 . PSSession sur un serveur de fichier pour avoir les quotas , les resultats dans la variable de l'invoke-command . alertes email , remove-Pssession
2 . création objet Excel pour ecrire les resulat sur un fichier en paratge reseau

probleme :
1. en tache planifier , quotas + alerte mail ok ,le fichier Excel n'est pas renseigné
2. directement , tout fonctionne.

merci pour vos remarques.<br><br>Message édité par: ludoob, à: 14/12/17 13:48

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

Plus d'informations
il y a 8 ans 5 mois #24671 par Philippe
salut ludoob

c'est probablement du au double hop !
d'autre explication ici !

essai d'utilisé l'authentification credSSP pour ton invoke-command

sinon ça peut être un problème de droit utilisateur, quel utilisateur utilise tu dans ta tache planifier ?<br><br>Message édité par: 6ratgus, à: 12/12/17 14:41

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

Plus d'informations
il y a 8 ans 5 mois #24672 par Ludovic B
en utilisant la commande start-transscript

voici le message d'erreur:
Les result des quotas apres la PSSession
RemoteSigned
Microsoft Excel ne peut accéder au fichier «c:\Commandes\Quotas\Calcul_auto_serveur_de_fichier.xlsx». Plusieurs raisons
sont possibles:

• Le nom du fichier ou le chemin d'accès n’existe pas.
• Ce fichier est actuellement utilisé par un autre programme.
• Le classeur que vous essayez d’enregistrer porte le même nom qu’un classeur actuellement ouvert.
Au caractère C:\Commandes\Quotas\quotas-sfic10.ps1:371 : 2
+ $ExcelWordBook = $ObjExcel.Workbooks.Open($ExcelPath) # ouverture ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException

un probleme avec System.Runtime.InteropServices.COMException

je ne suis pas développeur , je ne sais pas par ou chercher.

le PSSession sur le serveur de fichier pour avoir les quotas avec un compte du domaine admin du serveur

Pour le fichier excel utilisation du même compte qui les droit pour modifier le fichier excel

Pour l'execution de la tache planifier utilisation du même compte avec le runas .

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

Plus d'informations
il y a 8 ans 5 mois #24674 par Philippe
est il possible d'avoir le script que tu utilise en enlevant les informations sensible (nom de ton entreprise, login, mot de passe, etc)

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

Plus d'informations
il y a 8 ans 5 mois #24675 par Ludovic B
[code:1]#region PSSession
$Session = New-PSSession -ComputerName xxxxx-fic -Credential $cred
#$resultats = Invoke-Command -Session $Session -ScriptBlock {
$Result = Invoke-Command -Session $Session -ScriptBlock {


#region capacité disk D:
$DiskInfos = Get-WmiObject -class Win32_Volume | where { $_.driveletter -eq 'D:' } | select Capacity
# $DiskInfos.Capacity
$Capacity_Letter_D = [System.Math]::Round($DiskInfos.Capacity /1gb)
# $Capacity_Letter_D
# $Capacity
#endregion capacité disk D:


#region Calcul quota par rapport aux modeles
#region 10 Go - Bureaux


$UsageQuotas_10GoBureaux = Get-FSRMQuota | Where-Object { $_.Template -eq \&quot;10 Go - Bureaux\&quot; }
[int]$nbrsFolderQuotas = $UsageQuotas_10GoBureaux | Measure-Object | Select-Object -ExpandProperty count
$nbrsFolderQuotas # result[0]
$quotasTotal = $nbrsFolderQuotas * 10
# $quotasTotal
$seuil80poucent = $quotasTotal * 0.8
# $seuil80poucent
$UsageQuotas_10GoBureaux = Get-FSRMQuota | Where-Object { $_.Template -eq \&quot;10 Go - Bureaux\&quot; } | Select-Object Usage | Sort-Object Usage | Measure-Object -Property Usage -Sum
$resul_UsageQuotas_10GoBureaux = [System.Math]::Round($UsageQuotas_10GoBureaux.sum /1gb)
$resul_UsageQuotas_10GoBureaux # result[1]]
if ($resul_UsageQuotas_10GoBureaux -gt $seuil80poucent)
{
Write-Host \&quot;La capacité totale utilisé par le quota 10 Go - Bureaux est de : $resul_UsageQuotas_10GoBureaux Go\&quot; -ForegroundColor Red
}
if ($resul_UsageQuotas_10GoBureaux -ge $seuil80poucent)
{
Write-Host \&quot;La capacité totale utilisé par le quota 10 Go - Bureaux est de : $resul_UsageQuotas_10GoBureaux Go\&quot; -ForegroundColor Yellow
}
if ($resul_UsageQuotas_10GoBureaux -lt $seuil80poucent)
{
Write-Host \&quot;La capacité totale utilisé par le quota 10 Go - Bureaux est de : $resul_UsageQuotas_10GoBureaux Go\&quot; -ForegroundColor Green
}
#endregion 10 Go - Bureaux

#region 20 Go - Bureaux
$UsageQuotas_20GoBureaux = Get-FSRMQuota | Where-Object { $_.Template -eq \&quot;20 Go - Bureaux\&quot; }
[int]$nbrsFolderQuotas = $UsageQuotas_20GoBureaux | Measure-Object | Select-Object -ExpandProperty count
$nbrsFolderQuotas # result[2]
$quotasTotal = $nbrsFolderQuotas * 20
# $quotasTotal
$seuil80poucent = $quotasTotal * 0.8
# $seuil80poucent
$UsageQuotas_20GoBureaux = Get-FSRMQuota | Where-Object { $_.Template -eq \&quot;20 Go - Bureaux\&quot; } | Select-Object Usage | Sort-Object Usage | Measure-Object -Property Usage -Sum
$resul_UsageQuotas_20GoBureaux = [System.Math]::Round($UsageQuotas_20GoBureaux.sum /1gb)
$resul_UsageQuotas_20GoBureaux # result[3]
if ($resul_UsageQuotas_20GoBureaux -gt $seuil80poucent)
{
Write-Host \&quot;La capacité totale utilisé par le quota 20 Go - Bureaux est de : $resul_UsageQuotas_20GoBureaux Go\&quot; -ForegroundColor Red
}
if ($resul_UsageQuotas_20GoBureaux -ge $seuil80poucent)
{
Write-Host \&quot;La capacité totale utilisé par le quota 20 Go - Bureaux est de : $resul_UsageQuotas_20GoBureaux Go\&quot; -ForegroundColor Yellow
}
if ($resul_UsageQuotas_20GoBureaux -lt $seuil80poucent)
{
Write-Host \&quot;La capacité totale utilisé par le quota 20 Go - Bureaux est de : $resul_UsageQuotas_20GoBureaux Go\&quot; -ForegroundColor Green
}
#endregion 20 Go - Bureaux


#endregion Calcul quota par rapport aux modeles

#region Calcul total des quotas
$totauxquotas = $resul_UsageQuotas_10GoBureaux + $resul_UsageQuotas_20GoBureaux
Write-Host \&quot;La capacité totale est de : $totauxquotas Go\&quot;
$totauxquotas # result [28]
#endregion Calcul total des quotas

#region comparaison quotas et capacite volume D:
$Capacity_Letter_D # result [29]

$seuil80poucent = $Capacity_Letter_D * 0.8
$seuil80poucent
$seuil95poucent = $Capacity_Letter_D * 0.95
$seuil95poucent
if ($totauxquotas -ge $seuil95poucent)
{

$chaine = \&quot;&lt;head&gt;
&lt;style&gt;
table{
width: auto;
border: 2px solid black;
border-collapse: collapse;
}
#tocolor{
background-color:red;
height:50px;
font-size:20;
}
td{
border-collapse:collapse;
border: 2px solid black;
}
.erreur{
border : 2px solid black;

overflow:«»scroll;
}
.error{
border : 2px solid black;
}

&lt;/style&gt;
&lt;/head&gt;
&lt;table&gt;
&lt;tr id=`\&quot;tocolor`\&quot; &gt;
&lt;th &gt;Info - Quotas sur le serveur FIC - CRITIQUE&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; Le fichier Quotas serveur de fichier a été mis à jour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; La capacité totale des quotas est de : $totauxquotas Go / $Capacity_Letter_D Go de la capacité totale du disque &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;\&quot;
Send-MailMessage -SmtpServer \&quot;xxxx.xxx\&quot; -To \&quot;xxxxx@xxx\&quot; -From \"alerte-orchestrator@xxxx\&quot; -Subject \"[Info] Quotas du Serveur de fichier - CRITIQUE\&quot; -BodyAsHtml $chaine -Encoding UTF8
Write-Host \&quot;La capacité totale des quotas est de : $totauxquotas Go\&quot; -ForegroundColor Red
}
if (($totauxquotas -ge $seuil80poucent) -and ($totauxquotas -lt $seuil95poucent))
{

$chaine = \&quot;&lt;head&gt;
&lt;style&gt;
table{
width: auto;
border: 2px solid black;
border-collapse: collapse;
}
#tocolor{
background-color:yellow;
height:50px;
font-size:20;
}
td{
border-collapse:collapse;
border: 2px solid black;
}
.erreur{
border : 2px solid black;

overflow:«»scroll;
}
.error{
border : 2px solid black;
}

&lt;/style&gt;
&lt;/head&gt;
&lt;table&gt;
&lt;tr id=`\&quot;tocolor`\&quot; &gt;
&lt;th &gt;Info - Quotas sur le serveur SFIC - WARNING&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; Le fichier Quotas serveur de fichier a été mis à jour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; La capacité totale des quotas est de : $totauxquotas Go / $Capacity_Letter_D Go de la capacité totale du disque &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;\&quot;
Send-MailMessage -SmtpServer \&quot;xxxx.xxxx\&quot; -To \&quot;xxxx@xxxxx\&quot; -From \"alerte-orchestrator@xxx\&quot; -Subject \"[Info] Quotas du Serveur de fichier - WARNING\&quot; -BodyAsHtml $chaine -Encoding UTF8
Write-Host \&quot;La capacité totale des quotas est de : $totauxquotas Go\&quot; -ForegroundColor Yellow
}
if ($totauxquotas -lt $seuil80poucent)
{

$chaine = \&quot;&lt;head&gt;
&lt;style&gt;
table{
width: auto;
border: 2px solid black;
border-collapse: collapse;
}
#tocolor{
background-color:green;
height:50px;
font-size:20;
}
td{
border-collapse:collapse;
border: 2px solid black;
}
.erreur{
border : 2px solid black;

overflow:«»scroll;
}
.error{
border : 2px solid black;
}

&lt;/style&gt;
&lt;/head&gt;
&lt;table&gt;
&lt;tr id=`\&quot;tocolor`\&quot; &gt;
&lt;th &gt;Info - Quotas sur le serveur SFIC - OK&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; Le fichier Quotas serveur de fichier a été mis à jour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; La capacité totale des quotas est de : $totauxquotas Go / $Capacity_Letter_D Go de la capacité totale du disque &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;\&quot;
Send-MailMessage -SmtpServer \&quot;xxxxxxxx.xxxx\&quot; -To \&quot;xxx@x\&quot; -From \"alerte-orchestrator@x\&quot; -Subject \"[Info] Quotas du Serveur de fichier - OK\&quot; -BodyAsHtml $chaine -Encoding UTF8
Write-Host \&quot;La capacité totale des quotas est de : $totauxquotas Go\&quot; -ForegroundColor Green
}
#endregion comparaison quotas et capacite volume D:




}

remove-pssession $Session


#region resultats quotas
Write-Host \&quot;Les result des quotas apres la PSSession\&quot; -ForegroundColor Green
$Count_10GoBureaux = $Result[0]
$Quotas_10GoBureaux = $Result[1]
$Count_20GoBureaux = $Result[2]
$Quotas_20GoBureaux = $Result[3]

$totauxquotas = $Result[28]
$Capacity_Letter_D = $Result[29]

#endregion resultats quotas

#endregion PSSession

# region Excel
$ObjExcel = New-Object -ComObject Excel.application
$ObjExcel.visible = $false # pour cacher le fichier excel
# $ExcelPath = 'C:\Users\xx\Documents\WindowsPowerShell\Scripts\EXCEL\Calcul auto serveur de fichier.xlsx'
$ExcelPath = '\\xxxxx\xx\S2\B1\SERVEUR\SFIC\Calcul_auto_serveur_de_fichier.xlsx'
$SheetName = \&quot;SFIC\&quot;
$ExcelWordBook = $ObjExcel.Workbooks.Open($ExcelPath) # ouverture du fichier
$ExcelWorkSheet2 = $ExcelWordBook.Sheets.item($SheetName) # ouverture de la Worksheet


$ExcelWorkSheet2.Cells.Item(14, 6) = $Result[1] #10GoBureaux
$ExcelWorkSheet2.Cells.Item(15, 6) = $Result[3] #20GoBureaux



$ExcelWorkSheet2.Cells.Item(14, 4) = $Result[0]
$ExcelWorkSheet2.Cells.Item(15, 4) = $Result[2]




#$ExcelWorkSheet2.Columns.autofit()

$ExcelWordBook.Save()

$ObjExcel.Quit()

function Release-Ref ($ref)
{
([System.Runtime.InteropServices.Marshal]::ReleaseComObject([System.__ComObject]$ref) -gt 0)
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()
}
## close all object references
Release-Ref($ExcelWorkSheet2)
Release-Ref($ExcelWordBook)
Release-Ref($ObjExcel)


# #endregion Excel[/code:1]

Message édité par: ludoob, à: 13/12/17 15:49<br><br>Message édité par: ludoob, à: 13/12/17 15:51

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

Plus d'informations
il y a 8 ans 5 mois #24677 par Philippe
désolé je n'est rien trouver de probant dans ton script


tu peut peut être rajouter juste avant le $ObjExcel.Workbooks.Open($ExcelPath) du fichier excel un test de présence du ficher excel
avec test-path
[code:1]if (Test-Path -Path $ExcelPath) {
write-host \&quot;le fichier existe deja\&quot;
}[/code:1]


sinon je vois pas
mais regarde dans le forum il y a déjà eu plusieurs problèmes avec les taches planifiés peut etre une solution fonctionnera pour toi !

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

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