powertips

Finding Dates Between Two Dates

If you must know how many days are between two dates, you can easily find out by using New-TimeSpan: $startdate = Get-Date $enddate = Get-Date -Date...

Using Default Parameters

In PowerShell 3.0, an option was added to define default values for arbitrary cmdlet parameters. This line, for example, would set the default value...

Finding Working Days

To find all working days in a given month, here is a neat little one-liner: $month = 7 1..31 | ForEach-Object { Get-Date -Day $_ -Month $month } |...

Why Directories Have a Size of 1

Occasionally, you may notice that folders have a length of 1 byte. This was introduced in PowerShell 3.0. In PowerShell 2.0, they did not report...

Speeding Up Background Jobs

Background jobs can be a great thing to speed up scripts because they can do things in parallel. However, background jobs only work well if the code...

Understanding the statement "exit"

PowerShell supports the keyword "exit" which is a scope-based. It may work much differently than you assumed it would. Let's take a...

Using break, continue, and return

There are two special keywords in PowerShell that you can use in loops: break and continue. With continue, the loop continues but skips the...

Dealing with Environment Variables

To read a Windows environment variable in PowerShell, simply use the prefix "env:": PS> $env:windirC:\WindowsPS> $env:USERNAMETobias...

Using Nested Hash Tables

Nested hash tables can be a great alternative to multidimensional arrays. They can be used to store data sets in an easy-to-manage way. Have a look:...

Speeding Up Arrays

When you assign new items to an array often, you may experience a performance problem. Here is a sample that illustrates how you should not do it:...

Using Event Logs Instead of Log Files

Often, people use file-based logging. There is nothing wrong about that, but using the built-in event log system provided by Windows may be much...

Fun with Path Names

You can use the -split operator to easily split a path in its components. The result is always an array. Simply use comparison operators to exclude...

Skipping Profile on Keystroke

Maybe you'd like to be able to occasionally skip certain parts of your profile script. For example, in the ISE editor, simply add this...

Using Profile Scripts

You probably know that PowerShell supports profile scripts. Simply make sure the file found in $profile exists. It's a plain script that gets...

Be Aware of Side Effects

There are plenty of low level system functions that PowerShell can use. This one, for example, creates a temporary file name:...

Bulk File Renaming

Let's assume you have a bunch of scripts (or pictures or log files or whatever) in a folder, and you'd like to rename all files. The new file name...

Reading Installed Software Remotely

Most software registers itself in the Registry. Here is a piece of code that reads all installed software from the 32-bit and 64-bit hive and works...

gpupdate on Remote Machines

To run gpupdate.exe remotely, you could use a script like this: function Start-GPUpdate { param ( [String[]] $ComputerName ) $code = { $rv = 1 |...

Getting Database Connection String

Have you ever been puzzled just what the connection string would look like for a given database? When you create a new data source in Control Panel,...

Use Splatting to Encapsulate WMI Calls

Splatting is a great way of forwarding parameters to another cmdlet. Here is an example that can be used to encapsulate WMI calls and make them...

Submitting Parameters through Splatting

Splatting was introduced in PowerShell 3.0, but many users still never heard of this. It is a technique to programmatically submit parameters to a...

Getting Group Membership – Fast

If you need to find out the Active Directory groups your user account is in, typically you would query the Active Directory, and you would have to...

Setting Registry Permissions

Setting permissions for Registry keys isn't trivial. With a little trick, though, it is no big deal anymore. First, open REGEDIT and create a...

Blocking Administrator Scripts

If you know that your script requires Administrator privileges, then you should add this to the top of your script: #requires -runasadministrator...

Removing Selected NTFS Permissions

Maybe you need to remove some permission settings from NTFS permissions. Let's assume you want to remove all permissions for a specific user...

PowerShell God Mode

Before you can run a PowerShell script, the execution policy needs to allow this. Typically, you would use this line to enable script execution:...

1 52 53 54 55 56 98