Question
Aide PS V2 - V3
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
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:
ah la mémoire
on en rajoute aux ordinateurs mais pas aux cerveaux
Ensuite, le pb est de se souvenir de cette passionnante lecture
ah la mémoire
on en rajoute aux ordinateurs mais pas aux cerveaux
Connexion ou Créer un compte pour participer à la conversation.
- Fred
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 10
- Remerciements reçus 0
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 ?
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 10 ans 6 mois #20705
par Laurent Dardenne
Tutoriels PowerShell
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
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.
- Fred
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 10
- Remerciements reçus 0
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
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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Aide PS V2 - V3