📖 Scenario: You are working as an assistant to organize files in a folder. You want to learn how to manage files using a script to save time and avoid mistakes.
🎯 Goal: Build a simple PowerShell script that creates a list of files, sets a filter for file size, selects files larger than the filter, and then displays those files. This shows how file management is a key part of scripting.
📋 What You'll Learn
Create a list of files with their sizes
Set a size filter variable
Use a loop or filtering to select files larger than the filter
Print the selected files
💡 Why This Matters
🌍 Real World
Automating file management saves time and reduces errors when handling many files, like cleaning up logs or organizing documents.
💼 Career
Many IT and automation jobs require scripting to manage files efficiently, making this skill essential for system administrators and developers.
Progress0 / 4 steps
1
Create a list of files with sizes
Create a variable called files that contains these exact file names and sizes: file1.txt with size 1200, file2.log with size 800, and file3.csv with size 1500. Use a list of custom objects with properties Name and Size.
PowerShell
Hint
Use @() to create an array and [PSCustomObject] to create objects with properties.
2
Set a size filter variable
Create a variable called sizeFilter and set it to 1000. This will be the minimum file size to select.
PowerShell
Hint
Just assign the number 1000 to the variable sizeFilter.
3
Select files larger than the size filter
Create a variable called largeFiles that contains only the files from files where the Size property is greater than sizeFilter. Use the Where-Object cmdlet with a script block.
PowerShell
Hint
Use Where-Object with { $_.Size -gt $sizeFilter } to filter files.
4
Display the selected large files
Use Write-Output to print the Name and Size of each file in largeFiles. Use a foreach loop with variables file.
PowerShell
Hint
Use a foreach loop and Write-Output to print each file's name and size.
Practice
(1/5)
1. Why is file management considered a core part of scripting in PowerShell?
easy
A. Because it slows down script execution
B. Because it only works with text files
C. Because it requires no commands to manage files
D. Because it automates organizing and handling many files efficiently
Solution
Step 1: Understand the role of file management in scripting
File management commands help automate organizing and changing files, which is essential for handling many files quickly and correctly.
Step 2: Evaluate the options
Because it automates organizing and handling many files efficiently correctly states the benefit of automating file handling. Options A, B, and C are incorrect because it does not slow down script execution, is not limited to text files, and requires commands.
Final Answer:
Because it automates organizing and handling many files efficiently -> Option D
Quick Check:
File management automates file handling = D [OK]
Hint: File management automates tasks to save time and reduce errors [OK]
Common Mistakes:
Thinking file management only works with text files
Believing file management slows down scripts
Assuming no commands are needed to manage files
2. Which of the following is the correct PowerShell command to list all files in the current directory?
easy
A. Get-ChildItem
B. Get-FileList
C. List-Files
D. Show-Files
Solution
Step 1: Identify the standard command for listing files
In PowerShell, the command to list files and folders is Get-ChildItem.
Step 2: Check the options
Only Get-ChildItem matches the correct PowerShell command. The others are invalid or do not exist.
Final Answer:
Get-ChildItem -> Option A
Quick Check:
List files command = Get-ChildItem [OK]
Hint: Remember: Get-ChildItem lists files and folders [OK]
Common Mistakes:
Using non-existent commands like Get-FileList
Confusing commands with similar names
Assuming 'List-Files' is a valid PowerShell command
3. What will be the output of this PowerShell command?
Get-ChildItem -Path . -Filter '*.txt' | Select-Object -ExpandProperty Name
medium
A. Lists all file names with .txt extension in the current directory
B. Lists all folders in the current directory
C. Shows full file paths of all files
D. Deletes all .txt files in the current directory
Solution
Step 1: Understand the command parts
Get-ChildItem with -Filter '*.txt' selects files ending with .txt. Select-Object -ExpandProperty Name extracts just the file names.
Step 2: Determine the output
The command outputs a list of .txt file names in the current directory, not folders or full paths, and does not delete files.
Final Answer:
Lists all file names with .txt extension in the current directory -> Option A
Quick Check:
Filter '*.txt' + expand Name = list of .txt file names [OK]
Hint: Filter '*.txt' lists text files; expand Name shows just names [OK]
Common Mistakes:
Thinking it lists folders instead of files
Assuming it shows full file paths
Confusing it with a delete command
4. Identify the error in this PowerShell script snippet that tries to move all .log files to a Logs folder:
Move-Item -Path *.log -Destination Logs
medium
A. The wildcard *.log is not allowed in Move-Item
B. The destination folder 'Logs' must be a full path or exist beforehand
C. Move-Item cannot move files, only folders
D. The command needs -Recurse to work
Solution
Step 1: Analyze Move-Item usage
Move-Item can move files using wildcards, but the destination folder must exist or be a full path.
Step 2: Check the options
The destination folder 'Logs' must be a full path or exist beforehand correctly points out the need for the destination folder to exist or be a full path. Options A, C, and D are incorrect because wildcards are allowed, Move-Item moves files, and -Recurse is not needed here.
Final Answer:
The destination folder 'Logs' must be a full path or exist beforehand -> Option B
Quick Check:
Destination folder must exist for Move-Item [OK]
Hint: Ensure destination folder exists before moving files [OK]
Common Mistakes:
Assuming wildcards are not allowed in Move-Item
Thinking Move-Item only moves folders
Adding -Recurse unnecessarily
5. You want to automate cleaning up old backup files in PowerShell. Which script snippet correctly deletes all .bak files older than 30 days in the Backup folder?
Step 1: Understand filtering by date and file type
Get-ChildItem with -Filter '*.bak' selects backup files. Where-Object filters files older than 30 days using LastWriteTime compared to current date minus 30 days.
Step 2: Confirm deletion command
Remove-Item deletes the filtered files. Options B, C, and D use invalid parameters or incorrect syntax.