Posts Tagged ‘Powershell Scriptlets’

Export to HTML with Style Sheet Header

Saturday, February 25th, 2017


This a modification of something I picked up on the web.  It allows you to export to an HTML file with a centered table and centered title.  Any number of properties in the data are made into auto-sized columns.


A Dot Source Reminder for Advanced Functions

Saturday, February 25th, 2017

One of the problems with writing advanced functions is that new PowerShell users think that they don’t do anything.  Frankly, I couldn’t figure out a way to get a notification to work, so I reached out to the sponsor for the Charlotte PowerShell User Group, Microsoft PFE Brian Wilhite. Brian sent me some code  which I incorporated into the following snippet:

If you expect to have the end user save the function with code calling it at the bottom of the script, try this version which won’t prompt if there is additional text at the bottom:

Put either bit of code at the bottom of any advanced function. If the script is run inside the ISE, you will get something like this:

If you run it inside the PowerShell console you will see:

If you use the shell menu option to Run with PowerShell, it adds a pause so the script does not close.  Note that the colors are not rendered properly in the example text  — the first line has green text, subsequent lines are default.

Fix User’s Home Directory Permissions with Take Ownership

Wednesday, February 15th, 2017

Fix-HomeDrivePerms.ps1 is a PowerShell script which attempts to reset folder security when the permissions are really hosed.  It uses a take ownership function, Set-Owner, by Boe Prox, instead of takeown.exe, but does shell out to iCacls.exe.  I wrote this to fix home directories where a user might be logged on with files open a the time, and so it doesn’t rip out the old permissions and replace.

This will require a some editing to run, and this code fragment is set up to do one user folder at a time.  But it might get you going in the right direction.

Script Text

Consolidating Data For Report: Getting from Group-Object to CSV

Saturday, February 4th, 2017

I am working on some scripts which show AD domain controllers by their site.  My goal was to have the data combined so that  each site has a single row, with the server name and IP address for each site being shown joined by semi-colons.






None of the examples for doing this worked for me. But this did:

Function to Get Splat Parameters from a CSV File

Saturday, October 1st, 2016

Splatting is the use of a hash table to pass parameters to a PowerShell script.  As PowerShell scripts grow in complexity, you may want to pass a large number of parameters multiple times, for scripts which spin up a lab environment, or for Desired State Configuration.  It took me a while to figure out how to read a CSV file and pass the data out for splatted parameters.  Export-CSVtoSplats.ps1 is an function that does this, with an example of usage in the comments.

This is not as elegant as the solution proposed by Jaap Brasser, but I couldn’t manage to get his to work with my test function.
Script Text

Suggesting a default filename

Friday, January 3rd, 2014

I like to leave log files where people can find them.  Typically this is on their desktop, or in the same folder where the script ran from.  I wrote the following bit of code which creates a date based report file and offers it as a default.  It is pretty straightforward, but I did not know about the date formatting bit until I did this.

#Define default log
$lfd ="$env:userProfileDesktop"+$(Get-Date).ToString("yyyyMMdd_HHmm")+"_Report.txt"

#prompt for logfile unless specfied with -Logfile parameter (not shown)
if (!$LogFile){
    $logfile = Read-Host "Enter path to text log file, or ENTER for default,`n$lfd"

#use default log if not specified
if ($LogFile.Length -eq 0) {$LogFile = $lfd}

Write-Host $LogFile