Question Aide PS V2 - V3

Plus d'informations
il y a 10 ans 7 mois #20668 par Philippe
Réponse de Philippe sur le sujet Re:Aide PS V2 - V3
Laurent Dardenne écrit:

Ensuite, le pb est de se souvenir de cette passionnante lecture :P


ah la mémoire
on en rajoute aux ordinateurs mais pas aux cerveaux :(

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

Plus d'informations
il y a 10 ans 6 mois #20704 par Fred
Réponse de Fred sur le sujet Re:Aide PS V2 - V3
Je me permets de rebondir,
mon script est terminé mais je souhaiterais l'améliorer sans savoir comment faire, le voici :

[code:1]

function getDirSize {
param ([string]$chemin)

$i=0
gci $chemin -recurse -force| foreach -process {$i+=$_.length}
return $i
}

$profiles = gci $env:USERPROFILE\AppData\Roaming\Thunderbird\profiles

if ($Profiles.count -eq $null -or $profiles.count -eq 1) {
$Profile0 = $Profiles
}
else {
$Profile0 = $Profiles[0]
}

if ($Profile0 -ne $null)
{
$ProfilSize = getDirSize $profiles0.FullName 2>$null
$ProfilSizeMo = $profilSize/(1024*1024)
$ProfilSizeMo = [math]::round($ProfilSizeMo,0)
$LWT = $profile0.LastWriteTime
$RH = $env:USERNAME.Substring($env:USERNAME.length-5,5)

$PSObject = New-Object PSObject
$PSObject | Add-Member -Name Computername -MemberType NoteProperty -Value \"$env:COMPUTERNAME\"
$PSObject | Add-Member -Name Chemin -MemberType NoteProperty -Value \"$($profile0.Fullname)\"
$PSObject | Add-Member -Name Dossier -MemberType NoteProperty -Value \"$($profile0)\"
$PSObject | Add-Member -Name Username -MemberType NoteProperty -Value \"$env:USERNAME\"
$PSObject | Add-Member -Name RH -MemberType NoteProperty -Value \"$RH\"
$PSObject | Add-Member -Name Taille -MemberType NoteProperty -Value \"$ProfilSize\"
$PSObject | Add-Member -Name TailleMo -MemberType NoteProperty -Value \"$ProfilSizeMo\"
$PSObject | Add-Member -Name DateModifDir -MemberType NoteProperty -Value \"$LWT\"

$TabThun = @()
$TabThun += $PSObject

foreach ($item in $profiles)
{
write-host -ForegroundColor Red \"`n $item\"
if ($item -ne $profile0)
{
write-host \"`nBoucle IF $item\"
$ProfilSize = getDirSize $item.FullName 2>$null
$ProfilSizeMo = $profilSize/(1024*1024)
$ProfilSizeMo = [math]::round($ProfilSizeMo,0)
$LWT = $item.LastWriteTime
Write-Host $item $ProfilSize $ProfilSizeMo $LWT

#$TabThun += addUser -Chemin \"$($item.Fullname)\" -Dossier \"$item\" -Taille \"$ProfilSize\" -TailleMos \"$ProfilSizeMo\" -DateModifDir \"$LWT\"

$d=New-Object PSObject
$d | Add-Member -Name Computername -MemberType NoteProperty -Value $env:COMPUTERNAME
$d | Add-Member -Name Chemin -MemberType NoteProperty -Value $($item.Fullname)
$d | Add-Member -Name Dossier -MemberType NoteProperty -Value $item
$d | Add-Member -Name Username -MemberType NoteProperty -Value $env:USERNAME
$d | Add-Member -Name RH -MemberType NoteProperty -Value $RH
$d | Add-Member -Name Taille -MemberType NoteProperty -Value $ProfilSize
$d | Add-Member -Name TailleMo -MemberType NoteProperty -Value $ProfilSizeMo
$d | Add-Member -Name DateModifDir -MemberType NoteProperty -Value $LWT
$TabThun += $d
}

}
$TabThun | Export-Csv -NoTypeInformation -path \"Thunderbird-$env:computername-$env:USERNAME.csv\"

}
[/code:1]
Si vous connaissez un peu Thunderbird, il existe un fichier sous
C:\Users\XXXXXX\AppData\Roaming\Thunderbird\profiles.ini
de la forme :

[General]
StartWithLastProfile=1

[Profile0]
Name=default
IsRelative=1
Path=Profiles/1k3g1kco.default
Default=1

[Profile1]
Name=IMAP
IsRelative=0
Path=C:\Thunderbird\Profiles\ud5evm5i.IMAP

Je souhaiterai récupérer le champ \"Name\" dans mon tableau (et donc mon csv) en le recoupant avec le nom du dossier profil (champ Path).
Pour couronner le tout, ce champ peut être un chemin complet ou relatif.

Et là franchement, ça dépasse mes compétences.

Une piste ?

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

Plus d'informations
il y a 10 ans 6 mois #20705 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Aide PS V2 - V3
Tu peux renommer ta fonction getDirSize en Get-SizeDirectory.
je crois qu'i l existe une autre approche pour ce traitement...
Pour
[code:1]
$PSObject = New-Object PSObject
$PSObject | Add-Member -Name Computername -MemberType NoteProperty -Value \"$env:COMPUTERNAME\"
[/code:1]
Tu peux créer une fonction de création d'objet, voir sur le forum la fonction New-PSCustomObjectFunction.
Mais il faut retravailler le résultat obtenu.
Si possible et à moins de manipuler une dizaine d'objets, cette syntaxe est à éviter :
[code:1]
$TabThun += $PSObject
[/code:1]
Chaque exécution crée un nouveau tableau, l'ancien étant supprimé automatiquement. Mieux vaut utiliser un autre type de collection, un Arraylist( [System.Collections.Araylist]) par exemple

Pour les fichiers ini il existe des fonctions dédiées, recherche sur le forum.
Pour les path, un tuto sur le sujet . Il est surement indigeste pour un débutant, au cas où et une fois ta gestion du fichier .ini implémenté reviens nous voir :-)

Tutoriels PowerShell

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

Plus d'informations
il y a 10 ans 6 mois #20710 par Fred
Réponse de Fred sur le sujet Re:Aide PS V2 - V3
Je te remercie pour tes corrections.

Je n'ai pas la commande Get-SizeDirectory V3, encore moins en V2 version que j'ai sur les PC en W7.
Et pour le moment, je ne peux faire un upgrade du framework.

Vu le temps que j'ai je crois que je vais différer et m'intéresser à la question lorsque j'aurais élevé mon niveau PS.

Je te remercie néanmoins de tes remarques, c'est toujours enrichissant :)

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

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