Windows PowerShell Files
The biggest danger when you employ PowerShell to manipulate files is ‘over-think’. Just keep in mind that PowerShell opens and closes files automatically. My point is there is no need to waste time looking for non-existent file-open, or file-save commands.
PowerShell File Topics
PowerShell supports a rich selection of cmdlets to deal with every aspect of file handling.
♣
Here is the 'Item' Family of Cmdlets
I find that these 'item' commands are the ones that that I use to manipulate 80% of all my file operations.
Copy-Item
Get-Item (gi)
Get-ChildItem (gci)
Get-ItemProperty
Invoke-Item
Move-Item
New-Item
Remove-Item
Set-Item
—————
I also created the function Get-File
File Content Family
As usual, note that PowerShell uses singular nouns, for example: File, Content, Item and Location. This observation about singular nouns helps when you build a cmdlet from scratch.
Add-Content (Appends)
Clear-Content
Get-Content
Set-Content (Replaces existing content)
————————
Out-File*
Out-file is an honorary member of the ‘Content’ family.
I prefer Out-File to Add-Content because it formats the data as I would like.
File Location Family
You can search for any group of cmdlet by employing the -Noun (or -Verb) parameter. For example: Get-Command -Noun Location.
Get-Location
Set-Location (cd)
Pop-Location
Push-Location
Recommended: Solarwinds’ Permissions Analyzer – Free Active Directory Tool
I like the Permissions Monitor because it enables me to see WHO has permissions to do WHAT at a glance. When you launch this tool it analyzes a users effective NTFS permissions for a specific file or folder, and takes into account network share access, then displays the results in a nifty desktop dashboard!
Think of all the frustration that this free SolarWinds utility saves when you are troubleshooting authorization problems for user’s access to a resource. Give this permissions monitor a try – it’s free!
Download SolarWinds’ Free Permissions Analyser – Active Directory Tool
Tasks for PowerShell File Cmdlets
Finding Files with Get-ChildItem
Firstly, we can find files with Get-ChildItem, incidentally gci is probably the most used alias for any PowerShell cmdlet, nevertheless I stick with fullname in my scripts. Get-ChildItem is also one of the most interesting and instructive cmdlets because of its wealth of parameters.
Let us use the classic research method of:
Get-Help Get-ChildItem -Full
What help does is give us a list of parameters such as -Recurse, -Force and also examples, which give ideas for our own projects. Both the technique of using Get-Help, and knowledge of parameters such as -Recurse or -Force will carry-over into other cmdlets.
Other Useful Parameters for GCI
Get-ChildItem -Exclude
Get-ChildItem -Filter
Get-ChildItem -Include
See also improvements for Get-ChildItem in PowerShell v3.0
Reading and Writing to Files
I like Out-File for saving data to disk, the main application is outputting the results of a script not to screen, but as a permanent record in a file.
Get-Process | Out-File D:\Process.txt
Result: This saves a list of running process to a file called process.txt. Observe the use of PowerShell's pipe-lining (|).
As for retrieving the information, Get-Content is excellent. What I appreciate is the way that these PowerShell cmdlets take care of the file open and file close operations without us having to add any further explicit instructions.
Get-Content D:\Process.txt
Result: PowerShell displays the text in the named file.
Try more examples with Get-ChildItem »
Summary: PowerShell Files
PowerShell probably has more cmdlets for files than any other object. Take the time to investigate both the file cmdlets and their numerous parameters.
On the other hand, realize that PowerShell opens and closes files automatically; thus there is no need to waste time looking for non-existent file-open, or file-save commands
If you like this page then please share it with your friends
See more Microsoft PowerShell file tutorials:
• PowerShell Home • Add-Content • Get-Content • Set-Content • PowerShell -Filter • Test-Path
• PowerShell Get-ChildItem • Get-ChildItem -Include • Get-ChildItem -Exclude • Compare-Object
• PowerShell Registry • Get-Credential • PowerShell ItemProperty • PowerShell ItemPropery GCI
Please email me if you have a better example script. Also please report any factual mistakes, grammatical errors or broken links, I will be happy to correct the fault.