Powershell [File size check]

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Chris-1992
  • Registratie: Maart 2018
  • Laatst online: 19-03-2024
Goedemiddag,

Ik zou graag willen monitoren hoe groot de bestanden zijn in een volledige mappen structuur.
Ik heb momenteel dit stukje powershell script:

Get-ChildItem "C:\mydocs" -recurse | Select-Object Name, @{Name="MegaBytes";Expression={"{0:F2}" -f ($_.length/1GB)}}

als resultaat krijg ik al mijn bestanden terug met de filesize.
Ik zou eigenlijk graag hebben dat dit script gaat controleren als er een file tussen zit groter als 1GB, als er dan effectief eentje tussen zit groter als 1GB zou die een exit code "exit 1001" moeten geven.
Zoniet moet de exit code "exit 0" zijn.


Maar ik geraak niet verder als het stukje dat ik al heb, hoe krijg ik hier "if, and & else" in verwerkt op het resultaat van dit script?

Groetjes,
Christiaan

Beste antwoord (via Chris-1992 op 25-03-2020 16:06)


  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Of zoiets? Ik vind dit zelf wat leesbaarder. Je kunt er ook vrij simpel een oneliner van maken.

PowerShell:
1
2
3
4
5
6
7
8
9
$Result = Get-ChildItem "E:\Dossiers" -Recurse | Measure-Object -Property Length -Maximum

If ($Result.Maximum -gt 2GB ) {
    'Er is een database groter als 2GB'
    Exit 1001
} Else {
    'Er is geen database groter als 2GB'
    Exit 0
}

Alle reacties


Acties:
  • +1 Henk 'm!

  • Umbrah
  • Registratie: Mei 2006
  • Nu online

Umbrah

The Incredible MapMan

Feitelijk is get-childitem al een 'for loop'. Je zult dus een if-statement met een conditie met als definitie "gt" willen opnemen.

Acties:
  • +1 Henk 'm!

  • Chris-1992
  • Registratie: Maart 2018
  • Laatst online: 19-03-2024
@Umbrah
Bedankt!

Hiermee is het gelukt

$result=(Get-ChildItem -path "E:\dossiers" -recurse | Where-Object {($_.Length /1GB) -gt 2 } | ForEach-Object {($_.length/1GB).Tostring("true")})
If ($result -eq 'true') {
echo 'Er is een database groter als 2GB'
exit 1001
} Else {
echo 'Er is geen database groter als 2GB'
exit 0
}

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Of zoiets? Ik vind dit zelf wat leesbaarder. Je kunt er ook vrij simpel een oneliner van maken.

PowerShell:
1
2
3
4
5
6
7
8
9
$Result = Get-ChildItem "E:\Dossiers" -Recurse | Measure-Object -Property Length -Maximum

If ($Result.Maximum -gt 2GB ) {
    'Er is een database groter als 2GB'
    Exit 1001
} Else {
    'Er is geen database groter als 2GB'
    Exit 0
}