Remko Weijnen's Blog (Remko's Blog)

About Terminal Server, Citrix, Delphi and other stuff

Archive for the ‘PowerShell’ Category

imageAfter reading Andy Morgan’s (excellent) blog post about Removing Screen Resolution and Personalize shell extensions from a users desktop session I couldn’t help it.

imageI had to write a PowerShell script to take ownership of the mentioned registry keys. So here goes:

(more…)

imageI needed to read out the Maximum Password age with a PowerShell script in a Windows 2003 domain.

Reading out the maxPwdAge attribute is a trivial task  in PowerShell (I am re-using the function AdsLargeIntegerToInt64):

# Read Maximum Password Age (from Domain Policy)
# Read maxPwdAge attribute and convert to Int64
$maxPwdAge = AdsLargeIntegerToIn64 $Domain.maxPwdAge.Value(

In my case this returns the value -78624000000000 but how do we interpret this?

(more…)

Embedding images in HTML

I was creating a small dialog in an .hta file and to make a little prettier for the user I included a company logo:

SNAGHTMLdfa805

But I wanted to deploy the .hta as a single file.

(more…)

Some Active Directory attributes return an 8 byte integer in the form of an IADsLargeInteger interface. An example is the pwdLastSet attribute from a user object.

Because the IADsLargeInteger object doesn’t provide type information PowerShell cannot read the HighPart and LowPart properties.

So I wrote the function below to get the Int64 value of an IADsLargeInteger:

(more…)

imageToday one of my collegues asked me to write a script that performs two actions for all users of a certain Organizational Unit:

  1. Ensure that each user has modify permissions on their homefolder
  2. Make each user visible in the Exchange Address List.

Sounds like a PowerShell job right?

I reused my function to set NTFS Permissions by SID:

(more…)

imageFor a script I needed to create an AQS (Advanced Query Syntax) Query that contained a date range.

An example of such is a range is: date:11/05/04..11/10/04

However we need to account for regional settings where for example the data seperator and the order of day and month may be different.

In my example I wanted to match any data that is 30 days or older so let’s do this in PowerShell:

(more…)

In Part 2 I showed some details about Mailbox Rule corruptions that can disturb Mailbox Moves.

For this part the topic is Mailbox size, which can be an important factor in deciding which mailboxes you want to move first.

In my case the mailbox size was important because we agreed to move smaller mailboxes during the day but larger mailboxes only outside working hours.

For Exchange 2010 mailboxes it’s very easy to obtain the size using PowerShell.

Example:

Get-Mailbox "rweijnen" | Get-MailboxStatistics | select DisplayName, ItemCount, TotalItemSize
DisplayNameItemCountTotalItemSize
Remko Weijnen31334.87 MB (36,564,183 bytes

But how can we get the Mailbox Size for Exchange 2003 mailboxes?

 

(more…)

Inline arrays in PowerShell

imageSometimes I want to process a list of “things” easily in PowerShell where the list is not in an external file but in the script itself.

Ideally this list would not be separated by e.g. a comma so it can be easily copy/pasted from external data sources.

Something like this:

$List = @("
John Doe
Jane Doe
James Bond
And so the list goes on
"
)

(more…)

I am currently creating a PowerShell script that creates a user with all needed Active Directory attributes, Exchange mailbox, (TS) Home- and Profile directories and so on.

In such a script you can easily get failures because of Active Directory replication.

(more…)

Function below can be used to check if a given Username exists in Active Directory:

function UserExists([string]$Username)
{
   $strFilter = "(&(objectCategory=person)(sAMAccountName=$Username))"

   $objDomain = New-Object System.DirectoryServices.DirectoryEntry

   $objSearcher = New-Object System.DirectoryServices.DirectorySearcher
   $objSearcher.SearchRoot = $objDomain
   $objSearcher.PageSize = 1000
   $objSearcher.Filter = $strFilter
   $objSearcher.SearchScope = "Subtree"

   $colResults = $objSearcher.FindAll()
   return [bool]($colResults -ne $null)
}
 

Profile

Recent Tweets

Views