Question Résultats multiples dans un seul TXT

Plus d'informations
il y a 2 ans 8 mois - il y a 2 ans 8 mois #31084 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 :) )
$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.

Plus d'informations
il y a 2 ans 8 mois #31087 par Laurent Dardenne
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 :
$o=[PsCustomObject]@{drivePercent = ($drive_space_used / $drive_size *100)}
$O|Export-csv

Tutoriels PowerShell

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

Plus d'informations
il y a 2 ans 8 mois #31088 par Anaraviel
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 :)

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

Plus d'informations
il y a 2 ans 8 mois #31089 par Laurent Dardenne
>>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 :
.\monScript.ps 1 > c:\temp\resultat.txt
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 :
$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
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

Tutoriels PowerShell

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

Plus d'informations
il y a 2 ans 8 mois #31093 par Anaraviel
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 :)

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

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