PowerShell: Finding Files Only or Folders Only

In PowerShell v2, to list only files or only folders you had to do filtering yourself: Get-ChildItem $env:windir | Where-Object { $_.PSIsContainer -eq $true } Get-ChildItem $env:windir | Where-Object { $_.PSIsContainer -eq $false } In PowerShell v3, Get-ChildItem is smart enough to do that for you: Get-ChildItem $env:windir  -File Get-ChildItem $env:windir –Directory

Continue Reading

PowerShell: Colorizing PowerShell ISE v3

The new PowerShell ISE script editor in PowerShell v3 lets you customize a lot of colors, so if a particular color does not show well on a projector, for example, simply change it. You can do that via GUI, but you can also do it programmatically. For example, from your profile script: $psISE.Options.RestoreDefaultConsoleTokenColors $psISE.Options.RestoreDefaultTokenColors $psISE.Options.RestoreDefaultXmlTokenColors…

Continue Reading

PowerShell: Getting Relative Dates

Here’s a quick and fast way of generating relative dates in any format: (Get-Date).AddDays(-1).ToString(‘yyyy-MM-dd’) This would return yesterday’s date in the format year-month-day. Remove the ToString() method if you want the relative date as a true DateTime object. This returns all error events from the System event log in the past 48 hours: Get-EventLog -LogName…

Continue Reading

PowerShell: Finding Current Script Path

Here’s a useful function that you can paste into your scripts. It will tell you the current location the script is executed from. function Get-ScriptDirectory{ $Invocation = (Get-Variable MyInvocation -Scope 1).Value try { Split-Path $Invocation.MyCommand.Path -ea 0 } catch { Write-Warning ‘You need to call this function from within a saved script.’ } } Get-ScriptDirectory…

Continue Reading

PowerShell: Finding Built-In Administrators Group

Using System User or group names like ‘Administrators’ in scripts may not always be a good idea because they are localized and may not work on machines that use a different UI language. Here is a rather long one-liner that always returns the name of the local Administrators group, regardless of current culture settings: (New-Object…

Continue Reading