Alan's Blog

"Yeah. I wrote a script that will do that."

Fix Creation Date Later than Date Modified with PowerShell

Posted on August 13th, 2017

A weird and annoying thing happened to my home directory at work when it was moved from Windows to a storage appliance. The file CreationTime was lost on all the files and was set to the date of the data move. Particularly annoying was seeing the CreationTime being more recent than the LastWriteTime attribute. At one point in my IT career I thought that these attributes could not be changed by the user. I was wrong. In .NET these methods are available using System.IO. Here is the script — you will need to edit some choices a the top to use it.

Tags: , ,
Filed under PowerShell, Scripting, Scriptlets, Windows Administration | No Comments »

Adding Terminal Services Information to User Reports

Posted on February 4th, 2017

Add-ADTSInfo.ps1 adds TerminalServicesHomeDrive, TerminalServicesHomeDirectory, TerminalServicesProfilePath and AllowLogon as additional members returned by a query of Active Directory user objects.  As you may know, when looking at a user’s properties in the Active Directory Users and Computers MMC there is a tab for these fields.  However, if you look at the properties of a user object, these items simply aren’t there.  There are a few articles and scripts addressing this problem, and you will find that the only way to get the data is by binding to each individual user object and using the a method like this: $ADSIUser.psbase.InvokeGet(‘TerminalServicesProfilePath’).

My script differs from others in that you can pipe an object containing user objects with any properties, and it will add the fields listed above to your results.  I added sorting of the new resulting so that the property names are in order.  This is an advanced function with comment based help.

Script Text

Tags: , , ,
Filed under Active Directory, Functions, PowerShell, Scripting | No Comments »

Get Oldest Windows Event

Posted on February 13th, 2016

Get-OldestEvent.ps1 is a PowerShell advanced function which returns the oldest event from a Windows computer event log, and will help you determine the rollover time for an event log by also returning the age of the record as a time span with the time created. Optionally you can return the entire oldest record with the age as an added member. Age is calculated from the time the script collects the information.  You must, of course, have admin rights to query remote event logs. Running locally requires that PowerShell be run elevated. Because it is an advanced function, it must first be loaded with “dot sourcing”.

Example: Get the time created and age for the oldest event in the Security log of this computer.

Example: Get the time created and age for the oldest event in the Application log of this computer.
Get-OldestEvent -eLog Application

Example: Get the oldest event from the Security log on MyServerName, plus Age of event.
Get-OldestEvent -ComputerName MyServerName -eLog security -ReturnAll

Script Text

Tags: , ,
Filed under PowerShell, Scripting, Security, Windows Administration | No Comments »

Passwords for Password Resets

Posted on September 7th, 2015

I discovered that my script to generate passwords, RandomPW.vbs, isn’t popular with users because the passwords are random.  I have an even more complicated but unposted PowerShell version with the same issue.

I wanted to create something that was easier for the help desk and users.  Get-TempPW.ps1 is my answer to those objections.  This script is pretty well commented, so I won’t go into details about the code here.   What the script does is get a randomly selected word from the web, capitalizes a random letter within the word, then appends numbers and special characters to the end.  You can set the minimum word length and the number of numbers and special characters with variables within the code.  The default is and eight character word plus a number and special character.  The order of the numbers and special characters are randomized. An example password is “hypeRimmunization4&”.

Script Text


Tags: , , ,
Filed under PowerShell, Scripting, Security, Windows Administration | No Comments »

Test Whether Organizational Unit or Account Exists

Posted on September 7th, 2015

Here are two quick functions which I have recently found useful. The first tests whether a user account exists. It takes the Domain and Identity as arguments. Using the “Stop” error action with Try/Catch keeps it from showing any errors. You can do this with any of the AD cmdlets, such as Get-ADOrganizationalUnit, Get-ADComputer and others. The first example tests for the existence of a user account:

This tests whether an OU exists:

Tags: , ,
Filed under Active Directory, PowerShell, Scripting | No Comments »

That VbScript worked in XP, Why Not Now?

Posted on January 30th, 2014

Do you have a script that worked with your x32 XP computer, but no longer works in Windows 7 or 8 x64?  I am finding that some of the scripts I wrote have this problem.  Somethings may rely on an ActiveX control that was native to XP but not a later version.  What I am finding is that I have some scripts, such as this fragment fail:

A quick fix for this is to run the script with the X32 version of cscript or wscript.  You can try running the scripts with c:\windows\SysWow64\cscript.exe.  Otherwise, back to the debugger.

Filed under Scripting, VbScript, Windows 7, Windows 8 | No Comments »

Laptop Return Reminder

Posted on February 3rd, 2013

We love our users, yes we do!  Especially the ones who walk out the door with a laptop that they refuse to return.  Having a computer off the corporate network for an extended period of time can create problems with Active Directory,  some management software and some encryption software.  MakeLaptopWarning.vbs is a script which the admin runs before the laptop goes out the door.  It creates a reminder script on the laptop in the StartUp folder.  The user gets a countdown in days for when the laptop needs to be returned.

Tags: ,
Filed under Scripting, Security, VbScript, Windows Administration | No Comments »

Make RDP files

Posted on April 2nd, 2009

MakeRDPFiles.vbs is a vbscript based on the RDP History script posted earlier.  It take your RDP history and creates a folder with connection files for each of the systems you have previously connected to.  Rename from .txt to .vbs.

Tags: ,
Filed under Computing, Scripting | No Comments »

Remotely Enable Terminal Services and RDP

Posted on April 2nd, 2009

You build a Windows 2003 server and forget to enable RDP.  Very annoying.  Or you want to RDP to a workstation, and it is not set up.  Very annoying.  EnableTS_RDP.vbs allows you to remotely enable RDP.


Tags: ,
Filed under Computing, Scripting, Security | No Comments »

RDP History

Posted on January 8th, 2009

RDPHistory.vbs creates a text file with a list of systems you ever connected to using RDP.  Rename from .txt to .vbs


Tags: ,
Filed under Computing, Scripting, VbScript | No Comments »

Please Note

All the scripts are saved as .txt files. Newer files have a "View Script" button which will let you save or open a script in notepad. For earlier posts, the easiest way to download with IE is to right click on the link and use "Save Target As". Rename file from Name_ext.txt to Name.ext.

To see a full post after searching, please click on the title.

PowerShell Scripts were written with Version 3 or 4.

https connections are supported.

All new users accounts must be approved, as are comments. Please be patient. It is pretty easy to figure out my email address from the scripts, and you are welcome to contact me that way.

Site Search



SQL Site

Bad Behavior has blocked 262 access attempts in the last 7 days.