Windows PowerShell Tip bepalen van de grootte van een map

Windows PowerShell Tip bepalen van de grootte van een mapWindows PowerShell Tip van de Week

Hier is een snelle tip over het werken met Windows PowerShell. Deze worden gepubliceerd elke week voor zo lang als we kunnen komen met nieuwe tips. Als u een tip die je wilt dat wij of een vraag over hoe iets te doen te delen, laat het ons weten .

Vind meer tips in de Windows PowerShell Tip van de Week archief .

Het bepalen van de grootte van een map

“Hey, Scripting Guys: Bijvoorbeeld, in de afgelopen weken hebben we een aantal e-mails lijken op dit gekregen. Ik heb de darnedest tijd met de meest eenvoudige PowerShell script dat je kunt bedenken. Alles wat ik wil doen is het bepalen van de grootte van een map, maar ik kan het gewoon niet doen; het maakt niet uit wat ik probeer de map grootte komt leeg. Wat doe ik verkeerd?”

Zo blijkt, je bent niet iets verkeerd te doen. (Nou ja, met uitzondering van het stellen van de Scripting Guys om hulp, dat is.) Waarschijnlijk u een opdracht zoals deze, een commando dat bindt aan de map C: \ Scripts en keert dan terug wat basisinformatie, met inbegrip van de map grootte (Lengte ):

Dus wat is de grootte van de map C: \ Scripts? Volgens Meet-object het is 1.244.611 bytes. (De Som eigenschap zal u vertellen het antwoord.)

Dat is niet slecht; zoals we al zeiden, we komen met het antwoord dat we naar op zoek waren. Aan de andere kant, het is nog steeds niet gemakkelijk om te zeggen, in één oogopslag, wat dat antwoord is; Dat is zowel te wijten aan de iets rommelig-uitgang en het feit dat het antwoord wordt weergegeven in bytes in plaats van bijvoorbeeld megabytes. Met dat in gedachten, laten we proberen het uitvoeren van deze opgevoerde blok code in plaats daarvan:

OK, dus deze twee lijnen zien er echt ingewikkeld, nietwaar? Misschien kunnen we beter uit te leggen wat er aan de hand hier. In lijn 1 zijn we doen wat we wilden: het gebruik van Get-ChildItem om een ​​verzameling van alle items in de map C terug: \ Scripts, dan vraagt ​​Measure-object aan de som van de al punt lengtes van de te berekenen. Echter, dit keer zijn we niet onmiddellijk verslag uit het antwoord; in plaats daarvan, nemen we dat de output en oppotten in een variabele met de naam $ colItems.

In lijn 2 dan passen we een beetje opmaak naar de uitgang. Om te beginnen, we gebruiken deze constructie om de waarde van het onroerend goed Sum te nemen en om te zetten in megabytes:

Zoals u kunt zien, dat alles werkt geweldig. Behalve één ding: als we het openstellen van Windows Verkenner en controleer de grootte van de map C: \ Scripts, Windows Verkenner dringt erop aan dat de grootte moet echt zijn 3.60 megabytes:

Yikes! Hebben we iets aan doen het weer mis?

Waarschijnlijk. Maar niet als het gaat om het berekenen van de grootte van een map met Windows PowerShell. Als je kijkt naar de grootte van een map in Windows Explorer, Windows Explorer vertelt u de totale grootte van de map; dat omvat niet alleen de bestanden gevonden in de bovenliggende map (C: \ Scripts), maar ook alle bestanden gevonden in submappen van die map. Als we de bestanden in de bovenliggende map (dat is wat ons script deed), dan komen we uit op een map grootte van 1,19 megabytes. Als we de grootte van alle bestanden te vinden in alle submappen van C: \ Scripts dan eindigen we met een map grootte van 3,60 megabytes.

Natuurlijk, het script toonden we je gewoon niet optellen van de grootte van alle bestanden gevonden in de submappen van C: \ Scripts. En dat is een probleem als we willen dat de absolute totale grootte van de map. Als we dat doen, nou, dan gaan we moeten ons script aan te passen een beetje.

Wat is dat? Hoeveel is “een beetje? ‘Nou, zo blijkt, niet veel helemaal; alles wat we moeten doen is het toevoegen van de -recurse parameter om Get-ChildItem; dat vertelt Get-ChildItem om alle bestanden in C terug: \ Scripts plus alle bestanden gevonden in een (en al) submappen van C: \ Scripts. Hier is wat onze gewijzigde script eruit ziet:

En hier is wat we terug wanneer we het script uitvoeren:

Laten we proberen iets een beetje liefhebber. Stel, u wilt een volledige ineenstorting van de grootte van C: \ Scripts en elk van de submappen; je weet wel, een rapport ongeveer zo uit:

Bron: technet.microsoft.com

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

5 × drie =