Autodefrag via a VBScript

Drive defragmentation is not a very exciting subject, however in the past I’ve had a need to automate drive defragmentation via a scheduled task so I’ve used the following VB script.  It allows for email notification and varying levels of status messages. The select \ case section is used to exclude drives that you don’t…


Removing a proxy address from an NT Account

Occasionally it might be necessary to remove one or more items from the ProxyAddresses array in AD, this array contains all the SMTP addresses stamped on the AD object.   Here’s a VBScript that you can use to clean proxies off your AD accounts. 1) Change the highlighted DC=Contoso,DC=COM at the top of the script to…


NT Account to SID translation …. and back again.

  I keep the following nifty functions in my Powershell profile, it helps when working with SIDs and Active Directory, it allows you to easily convert a SID back to the NTACCOUNT and vice versa…   function ConvertTo-Sid ($NtAccount) {(new-object$NTaccount)).translate([])} function ConvertTo-NtAccount ($sid) {(new-object$sid)).translate([])}


Group Nesting Powershell report using Quest Activeroles

  I was recently asked to provide a report on the number (and depth) of nested groups in AD. Getting a list of the groups inside a group is pretty simple using get-qadgroupmember <groupname> -type group, however getting the groups inside that group (inside that group) requires some iteration, and can be a bit tricky…


Zipping files older than X days

  Recently I was working with a firewall that wrote some tremendously large log files and was eating disk at an alarming rate, so to remedy this, and sharpen my Powershell pencil, I decided to write a script that could be setup with task scheduler to zip up older logfiles….   The script requires the…


Powershell and Hyper-V Management

  There’s an awesome tool on codeplex for managing Hyper-V using Powershell called PSHyperV, it’s especially handy if you’re working with Hyper-V on a Windows Server Core installation. Just download the library, drop the folder into the $pshome\modules directory, type import-module HyperV at a Powershell prompt and away you go…   This module adds some…


Powershell Remote User Logoff / Reboot

When patching servers, any disconnected user sessions typically prevent the post-patch auto reboot. To remedy this you could use the following Powershell script :   foreach ($_ in get-content servers.txt) {(gwmi win32_operatingsystem -ComputerName $_).Win32Shutdown(4)}   The script uses an input file named servers.txt populated with the names of all the servers targeted by auto-patching GPOs to…


Merging and appending to CSV files using Powershell

The time-tested approach of appending data to the end of a file using >> doesn’t necessarily work with CSV files in Powershell, and Out-File with the -append switch typically results in a corrupted CSV file. Recently I wrote a Powershell script for a customer to poll GPO information on a periodic basis and write that…


Powershell – Deleting files X days old

Here’s a powershell script you can use to delete files in a directory (and all sub-directories) X days old or older.   $Now= Get-Date $Days = “3” $TargetFolder = “u:\backup” $LastWrite = $Now.AddDays(-$days) $Files = get-childitem $TargetFolder -include *.txt, *.log, *.bak -recurse | Where {$_.LastWriteTime -le “$LastWrite”} foreach ($File in $Files) {   write-host “Deleting…


Creating secondary proxy addresses

Often times it may become necessary to stamp an additional SMTP address (proxy address) on a user account, either as part of a migration, or organizational domain name change etc…   Here’s a VBScript example of how to add a new SMTP domain name to each user account in AD, preserving the user’s name (everything to…