Presentation Materials from my sessions at SQL Saturday 423 in Baton Rouge

This past Saturday, I presented two sessions at SQL Saturday #423 in Baton Rouge. The code and slides that I used during my "PS C:\> Get-Started -With 'PowerShell for SQL Server'" presentation can be downloaded from here and the code and slides from my "PS C:\> Get-Started -With 'PowerShell Desired State Configuration'" presentation can be downloaded from here. The code from both sessions reference PowerShell functions that are part of script modules that can be downloaded from my Read more [...]
Posted in Desired State Configuration, PowerShell, SQL Server | Tagged , , , | Leave a comment

Use caution when updating to Windows 10 RTM with data deduplication enabled volumes

I recently decided to reload my computer, moving from Windows 8.1 Enterprise Edition to Windows 10 Enterprise Edition. I had previously enabled the data deduplication feature on my Windows 8.1 installation with an unsupported hack by using the source files from Server 2012 R2. Deduplication was enabled on my SSD drive for the VHDX files that I use for my test and demonstration environment that runs via Hyper-V VM's. In my opinion, Microsoft should support data deduplication on enterprise edition Read more [...]
Posted in Hyper-V | Tagged , , | 4 Comments

The PowerShell return keyword

The return keyword is probably the most over used keyword in PowerShell that’s used in unnecessary scenarios. You’ll often find it used to simply return the output of a function:In that scenario, using the return keyword is totally unnecessary. If you do want to return the value of the variable, simply let PowerShell take care of returning the output:I received a comment on Twitter from Bill Hurt about using the Write-Output cmdlet Read more [...]
Posted in PowerShell | Tagged | 2 Comments

Determine who deleted SQL Server database records by querying the transaction log with PowerShell

Have you ever had a scenario where records from one or more SQL server database tables mysteriously came up missing and no one owned up to deleting them? Maybe it was an honest mistake or maybe a scheduled job deleted them. How do you figure out what happened without spending thousands of dollars on a third party product? You need to determine what happened so this doesn't occur again, but the immediate crisis is to get those records back from a restored copy of the database. How do you determine Read more [...]
Posted in PowerShell, SQL Server | Tagged , | 1 Comment

Query SQL Server from PowerShell without the SQL module or snapin

There are several different ways to query a SQL Server from PowerShell but most often you'll find that they're dependent on the SQL PowerShell module or snapin. To eliminate that dependency, you can query a SQL Server from PowerShell using the .NET framework. There are several different options to accomplish this including using a DataReader or a DataSet and there are plenty of tutorials on those topics already on the Internet so there's no reason to duplicate that information here. Most of the Read more [...]
Posted in PowerShell, SQL Server | Tagged , | 3 Comments

PowerShell $Profile: The six options and their precedence

There are a total of six different profiles than can be created in PowerShell by default. Four of them can exist that are applied to the PowerShell console:And four of them can also exist that are applied to the PowerShell ISE (Integrated Scripting Environment):Two of the profiles are the same between the PowerShell console and ISE which gives you a total of six possible profile combinations that can be used to load items Read more [...]
Posted in PowerShell | Tagged | Leave a comment

Renewed as a Microsoft MVP on Windows PowerShell for 2015

I received the official notification earlier today confirming that I've been renewed as a Microsoft MVP on Windows PowerShell for 2015: I would like to thank everyone who has helped me along the way! Here's to another year of writing more awesome blogs on this site as well as guest blogs for other sites, speaking at conferences and for user groups, and running the Mississippi PowerShell User Group. µ Read more [...]
Posted in PowerShell | Tagged | 2 Comments

Function to Import the SQLPS PowerShell Module or Snap-in

The SQL Server 2014 basic management tools have been installed on the Windows 8.1 workstation that's being used in this blog article. When attempting to import the SQLPS (SQL Server PowerShell) module on your workstation, you'll be unable to import it and you'll receive the following error message if the PowerShell script execution policy is set to the default of restricted:Import-Module : File C:\Program Files (x86)\Microsoft SQL Server\120\Tools\PowerShell\Modules\SQLPS\Sqlps.ps1 Read more [...]
Posted in PowerShell, SQL Server | Tagged , | Leave a comment

Walkthrough: An example of how I write PowerShell functions

A couple of days ago I posted a blog article titled "PowerShell function: Test-ConsoleColor provides a visual demonstration of the foreach scripting construct" and today I thought I would walk you through that function step by step since it's what I consider to be a well written PowerShell function. It starts out by using the #Requires statement to require at least PowerShell version 3 or it won't run. It also requires that the PowerShell Community Extensions module be installed since it uses Read more [...]
Posted in PowerShell | Tagged | 1 Comment

Video: PS C:\> Get-Started -With ‘PowerShell for SQL Server’

I presented a beginner level session for the PowerShell Virtual Chapter of PASS yesterday titled "PS C:\> Get-Started -With 'PowerShell for SQL Server'". The session is entry level PowerShell and designed for those people who haven't yet embraced PowerShell because I often hear "How do I get started with PowerShell"? My new answer: Watch this video. The first two thirds or so of the presentation is more or less generic because the basics for someone Read more [...]
Posted in PowerShell, SQL Server | Tagged , , | 1 Comment

PowerShell function: Test-ConsoleColor provides a visual demonstration of the foreach scripting construct

Test-ConsoleColor is a PowerShell function that I recently wrote to provide a visual demonstration of how to loop through a series of objects in PowerShell using the foreach scripting construct, not to be confused with the ForEach-Object cmdlet. The Test-ConsoleColor function shown in this blog article can be downloaded from GitHub. µ Read more [...]
Posted in PowerShell | Tagged | 2 Comments

Using a .NET Enumeration for PowerShell Parameter Validation

I recently ran into an issue where I wanted to use the values from a .NET enumeration as the default values for a parameter. That was easy enough:Although the previous code met my initial requirements, I decided that I also wanted the user to be able to tab expand the values and to validate the values based on the list of colors found in the enumeration without a requirement of having to hard code the values. My first thought was to use the ValidateSet parameter Read more [...]
Posted in PowerShell | Tagged | 2 Comments