Richard Siddaway's Blog

A question on the forum about a function had me thinking. The user had defined two parameters for the function and then used Read-Host to get the values.

NO

Much better way is to use an advanced function and make the parameters mandatory

functionGetuserdetails{[CmdletBinding()]param([parameter(Mandatory=$true)][string]$Givenname,[parameter(Mandatory=$true)][string]$Surname)Get-ADUser-propertiestelephonenumber,office-Filter{(GivenName-eq$Givenname)-and(Surname-eq$Surname)}}

If you call the function and don’t give values for the parameters you will be prompted for them

The other point is the –Filter property on get-aduser.  Don’t put quotes round the variable

View original post