Useful PowerShell Scriptlets for Files and Folders

  • Scripting
  • Published Sep 15, 2009 Updated Oct 27, 2010

What is the best way to learn PowerShell? Never use cmd.exe again!

With PowerShell 2.0 on my Windows 7 machine I decided it finally is time to polish my rusty knowledge of the language dating back to the days when PowerShell was still called Monad. In my attempt to re-familiarize myself with PoSh I consciously use it for tasks that would take me mere seconds with other tools like cmd.exe, or even old friends like Perl. But, hey, learning takes time, and there is nothing better than practice! Here are a couple of things I have learned en route.

Searching for a Particular File

Long version:

Get-ChildItem c:\ -Include advapi32.dll -Recurse -Force -ErrorAction SilentlyContinue | Select-Object FullName

Short version:

gci c:\ advapi32.dll -r -fo -ea silentlycontinue | select fullname

This recursively scans drive C: for the file advapi32.dll, looks at hidden and system files (-Force) and ignores errors that might be caused by insufficient permissions. For each file found, the full path is displayed.

Sample Output:

FullName
--------
C:\Windows\System32\advapi32.dll
C:\Windows\SysWOW64\advapi32.dll
C:\Windows\winsxs\amd64_microsoft-windows-advapi32_31bf3856ad364e35_6.1.7600.16385_none_3f3d4351a032bf57\advapi32.dll
C:\Windows\winsxs\x86_microsoft-windows-advapi32_31bf3856ad364e35_6.1.7600.16385_none_e31ea7cde7d54e21\advapi32.dll

Cmd.exe equivalent:

dir /a /s /b c:\advapi32.dll

Listing Encrypted Files and Folders

Long version:

Get-ChildItem c:\ -Include * -Recurse -Force -ErrorAction SilentlyContinue | Where-Object {$_.Attributes -ge "Encrypted"} | Select-Object FullName

Short version:

gci c:\ * -r -fo -ea silentlycontinue | ? {$_.attributes -ge "encrypted"} | select fullname

This iterates over all objects on drive C: and displays the full path of those that have the encrypted attribute set.

Cmd.exe equivalent:

None (without resorting to external tools, which would be possible with PowerShell, too).

Improvements?

Is there a more elegant way of doing this? If so, please let me know by posting a comment.

Update 1: Thanks to Shay Levy I replaced -gt with -ge in the search for encrypted files. Now the scriptlet also finds files that only have the encrypted attribute set.

Comments

Related Posts

PowerShell Script Lists App-V Package Dependencies (Dynamic Suite Composition, DSC)

Update 2010-04-20: Thanks to Stefan Henseler the script now works correctly with multiple dependencies in a single file. Be sure to download the current version below. App-V’s Dynamic Suite Composition is a powerful feature in that it allows multiple “bubbles” to share the same virtual environment. In other words, package A can be made dependent on package B. But if DSC is used extensively, dependencies between packages tend to become difficult to manage - there seems to be no simple way of listing all packages’ dependencies. Well, I have written a PowerShell script that does just that.
Scripting

PowerShell Script: Test Chrome, Firefox & IE Browser Performance

PowerShell Script: Test Chrome, Firefox & IE Browser Performance
There is more than one way to test the performance of web browsers like Chrome, Firefox, or IE, but regardless of how you do it, you need a consistent workload that makes the browsers comparable. Unless you are testing with synthetic benchmarks (which come with a plethora of problems of their own) you need a way to automate browsers opening tabs and loading URLs. This article presents a simple solution to do just that.
Scripting

Latest Posts

Filebrowser to Be Archived. Migrate to a Modern Alternative: Sambee

Filebrowser to Be Archived. Migrate to a Modern Alternative: Sambee
Filebrowser is being archived. As the author writes, the codebase dates back to when he was but 15 years old. Having created such a popular file management tool is a more than impressive achievement for anyone, let alone a teenager. However, when it comes to security and reliability, Filebrowser seems to be built on a less than ideal foundation, so much so that the author states:
Home Automation, Networking & Self-Hosting