Question
Résultats multiples dans un seul TXT
- Anaraviel
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 2 ans 8 mois - il y a 2 ans 8 mois #31084
par Anaraviel
Résultats multiples dans un seul TXT a été créé par Anaraviel
Bonjour
Alors je vous explique mon soucis. Nous sommes entrain de faire un très gros inventaire de plusieurs parcs informatiques. Et, comme tout bon informaticien, je suis un feignant. Du coup je tâche de m'éviter un maximum de déplacements au travers un script que nous exécuterons à distance.
Le script en lui-même marche très bien, mon soucis étant que j'aimerais qu'une fois qu'il a finit de répertorier les choses, qu'il me colle tout ça dans un petit fichier texte.
Pour info ce script récupère le nom du PC, le nom d'utilisateur, le processeur, la quantité de ram, si le DD est un HDD ou SDD, la place restant sur le DD (en GO et en %), les emails connectés sur ce PC et les 5 derniers caractères de la clé Office (si office est installé).
J'aimerais pouvoir tout retranscrire dans un fichier .txt par PC. Quelque chose comme \\srvdata\inventaire\$pc_name.txt
Sauf que j'ai beau chercher un peu partout je n'arrive pas à trouver une solution fonctionnelle.
Ci-dessous vous trouverez le-dit script si ça peut aider. (Petite précision, tout le script n'est pas de moi, la partie check de matériel a été gentilment emprunter, promis j'ai dit merci )
Alors je vous explique mon soucis. Nous sommes entrain de faire un très gros inventaire de plusieurs parcs informatiques. Et, comme tout bon informaticien, je suis un feignant. Du coup je tâche de m'éviter un maximum de déplacements au travers un script que nous exécuterons à distance.
Le script en lui-même marche très bien, mon soucis étant que j'aimerais qu'une fois qu'il a finit de répertorier les choses, qu'il me colle tout ça dans un petit fichier texte.
Pour info ce script récupère le nom du PC, le nom d'utilisateur, le processeur, la quantité de ram, si le DD est un HDD ou SDD, la place restant sur le DD (en GO et en %), les emails connectés sur ce PC et les 5 derniers caractères de la clé Office (si office est installé).
J'aimerais pouvoir tout retranscrire dans un fichier .txt par PC. Quelque chose comme \\srvdata\inventaire\$pc_name.txt
Sauf que j'ai beau chercher un peu partout je n'arrive pas à trouver une solution fonctionnelle.
Ci-dessous vous trouverez le-dit script si ça peut aider. (Petite précision, tout le script n'est pas de moi, la partie check de matériel a été gentilment emprunter, promis j'ai dit merci )
$pc_name = $env:COMPUTERNAME
$user_name = $env:USERNAME
Write-Host "Nom du PC: $pc_name `r`n" -ForegroundColor DarkYellow
Write-Host "Nom de l'Utilisateur is: $user_name `r`n" -ForegroundColor DarkYellow
$proc = gwmi win32_processor
if($proc -ne $null)
{
if($proc.GetType().Name -eq "ManagementObject")
{
$count = 1
$proc_name = $proc.Name
} else {
$count = $proc.count
$proc_name = $proc.Name[0]
}
write-host "$count x $proc_name `r`n" -ForegroundColor Green
$total_slots = gwmi win32_physicalMemoryArray
if($total_slots -ne $null)
{
$total_slot_count = $total_slots.MemoryDevices
}
$used_slots = ((gwmi win32_physicalmemory | select BankLabel) | Measure-Object BankLabel).count
if($used_slots -ne $null)
{
$used_slot_count = $used_slots
}
if($used_slot_count -eq $total_slot_count)
{
Write-Host "$used_slot_count RAM slots used out of $total_slot_count `r`n" -ForegroundColor Green
}
elseif($used_slot_count -eq 1)
{
Write-Host "$used_slot_count RAM slot used out of $total_slot_count `r`n" -ForegroundColor Green
}
else
{
Write-Host "$used_slot_count RAM slots used out of $total_slot_count `r`n" -ForegroundColor Green
}
$free_slots = $total_slot_count - $used_slot_count
$ram_total = ((gwmi win32_PhysicalMemory | Select Capacity) | Measure-Object -Sum -Property capacity).sum
$ram_in_kb = $ram_total / 1024
$ram_in_mb = $ram_in_kb / 1024
$ram_in_gb = $ram_in_mb / 1024
if($ram_in_gb -le 8)
{
Write-Host "There is $ram_in_gb GB of RAM `r`n" -ForegroundColor Green
}
else
{
Write-Host "There is $ram_in_gb GB of RAM `r`n" -ForegroundColor Green
}
$drive_type = (Get-PhysicalDisk | Select "MediaType").MediaType.Contains("SSD")
if($drive_type)
{
write-host "C Drive is an SSD `r`n" -ForegroundColor Green
} else {
write-host "C Drive is not an SSD, upgrade! `r`n" -ForegroundColor Green
}
$get_drive_size = Get-WmiObject -class win32_logicalDisk -Filter "DeviceID = 'C:'"
$drive_size = ($get_drive_size).Size
$drive_size_string_len = ($drive_size).ToString().Length
$size_in_kb = $drive_size / 1024
$size_in_mb = $size_in_kb / 1024
$size_in_gb = $size_in_mb / 1024
$size_in_tb = $size_in_gb / 1024
if($drive_size_string_len -le 9)
{
Write-Host "C Drive size is $([math]::Truncate($size_in_mb)) MB `r`n" -ForegroundColor Green
}
elseif($drive_size_string_len -gt 9 -and $drive_size_string_len -le 12)
{
Write-Host "C Drive size is $([math]::Truncate($size_in_gb)) GB `r`n" -ForegroundColor Green
}
elseif($drive_size_string_len -gt 12)
{
Write-Host "C Drive size is $([math]::Truncate($size_in_tb)) TB `r`n" -ForegroundColor Green
}
$get_drive_free_space = Get-WmiObject -class win32_logicalDisk -Filter "DeviceID = 'C:'"
$drive_free_space = ($get_drive_free_space).FreeSpace
$drive_space_used = $drive_size - $drive_free_space
$drive_percent = $drive_space_used / $drive_size *100
if($drive_percent -le 85)
{
Write-Host "C Drive is $([math]::Truncate($drive_percent))% full. `r`n" -ForegroundColor Green
}
else
{
Write-host "C Drive is $([math]::Truncate($drive_percent))% full. `r`n" -ForegroundColor Green
}
if($drive_percent -gt 85)
{
Write-Host "C Drive is almost full! `r`n"
}
if($drive_type -eq $false -and $ram_in_gb -lt 8)
{
Write-Host "RAM and Drive Update needed. 'r'n"
}
}
$Outlook = New-Object -comobject Outlook.Application
$namespace = $Outlook.GetNameSpace("MAPI")
$namespace.Accounts| select -Property SmtpAddress
get-ciminstance win32_bios | format-list serialnumber
$Fichier1 = "C:\Program Files\Microsoft Office\Office16\ospp.vbs"
$Fichier2 = "C:\Program Files\Microsoft Office\Office14\ospp.vbs"
$Fichier3 = "C:\Program Files\Microsoft Office\Office10\ospp.vbs"
$Fichier4 = "C:\Program Files (x86)\Microsoft Office\Office16\ospp.vbs"
$Fichier5 = "C:\Program Files (x86)\Microsoft Office\Office10\ospp.vbs"
if(Test-Path $Fichier1){
cscript $Fichier1 /dstatus
}else{
}
if(Test-Path $Fichier2){
cscript $Fichier2 /dstatus
}else{
}
if(Test-Path $Fichier3){
cscript $Fichier3 /dstatus
}else{
}
if(Test-Path $Fichier4){
cscript $Fichier4 /dstatus
}else{
}
if(Test-Path $Fichier5){
cscript $Fichier5 /dstatus
}else{
}
Dernière édition: il y a 2 ans 8 mois par Laurent Dardenne. Raison: balise code
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 2 ans 8 mois #31087
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Résultats multiples dans un seul TXT
Salut,
>>une fois qu'il a finit de répertorier les choses, qu'il me colle tout ça dans un petit fichier texte.
Si tu peux déterminer ce qu'est le 'tout' tu peux créer un objet personnalisé, ensuite tu l'enregistres dans le format que tu souhaites ( csv;txt,xml,..)
Exemple :
>>une fois qu'il a finit de répertorier les choses, qu'il me colle tout ça dans un petit fichier texte.
Si tu peux déterminer ce qu'est le 'tout' tu peux créer un objet personnalisé, ensuite tu l'enregistres dans le format que tu souhaites ( csv;txt,xml,..)
Exemple :
$o=[PsCustomObject]@{drivePercent = ($drive_space_used / $drive_size *100)}
$O|Export-csv
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Anaraviel
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 2 ans 8 mois #31088
par Anaraviel
Réponse de Anaraviel sur le sujet Résultats multiples dans un seul TXT
Merci de la réponse mais pas sur que cela m'aide (ou bien peut-être ai-je mal visualisé ce que tu me suggères).
Pour faire simple mon script me renvoie ça quand je le lance
Et j'aimerais que tout ça aille gentiment s'enregistrer dans un fichier txt. A la rigueur le nom du fichier pour le moment n'a pas d'importance ^^
Merci
Pour faire simple mon script me renvoie ça quand je le lance
Et j'aimerais que tout ça aille gentiment s'enregistrer dans un fichier txt. A la rigueur le nom du fichier pour le moment n'a pas d'importance ^^
Merci
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 2 ans 8 mois #31089
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Résultats multiples dans un seul TXT
>>Pour faire simple mon script me renvoie ça quand je le lance
Il affiche sur la console pas dans le pipeline ou dans un objet.
Soit tu remplaces tout tes Write-Host par Write-Output dans ces cas là ton script émet des informations sur la sortie standard qui peuvent être redirigées dans un fichier texte :Soit tu crées un objet qui collecte au fur et à mesure tes données ( le PSCustomObject), ensuite à partir de cet objet tu crées un fichier texte que tu construis :Donc en premier tu collectes les informations ensuite tu les traites, là tu couples les 2 traitements de collecte et d'affichage. Si demain on te demande un ficheir pdf ou un Word tu seras obligé de tout réécrire, avec un objet tu auras 'juste' le traitement de formatage/enregistrement à coder.
Un exemple, certes de niveau avancé, mais qui correspond parfaitement à cette manière de procéder : github.com/iainbrighton/PScribo
Il affiche sur la console pas dans le pipeline ou dans un objet.
Soit tu remplaces tout tes Write-Host par Write-Output dans ces cas là ton script émet des informations sur la sortie standard qui peuvent être redirigées dans un fichier texte :
.\monScript.ps 1 > c:\temp\resultat.txt
$o=[PsCustomObject]@{
drivePercent = ($drive_space_used / $drive_size *100)
#à la suite les autres propriétés
}
#here string avec substitution
@"
C Drive is $([math]::Truncate($O.DrivePercent))% full.
la suite $(o.info2)
etc
@" > > c:\temp\resultat.txt
Un exemple, certes de niveau avancé, mais qui correspond parfaitement à cette manière de procéder : github.com/iainbrighton/PScribo
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Anaraviel
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 2 ans 8 mois #31093
par Anaraviel
Réponse de Anaraviel sur le sujet Résultats multiples dans un seul TXT
Merci de la réponse, au final je n'ai pas fait ce que tu m'as suggéré car, je le reconnais, je ne comprenais pas totalement la syntaxe.
En revanche tu m'as fait comprendre mon erreur avec la différence entre Write-Host et Write-Output.
Au final j'ai collé après chaque fonction | Out-File -append D:\test.txt
Merci encore
En revanche tu m'as fait comprendre mon erreur avec la différence entre Write-Host et Write-Output.
Au final j'ai collé après chaque fonction | Out-File -append D:\test.txt
Merci encore
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.079 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Résultats multiples dans un seul TXT