Adam, see if this helps, this is the param set I ended up with when doing my inactive computer script. I'm not a fan of the massive param set, but when I got done with the whole ordeal it produced what I needed. What you'll notice is I have things set in a default, but then also in the email param set.
Param ( # Machines older than this date will be included on the report [Parameter(Mandatory = $false, Position = 0, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Default Param Set")] [Parameter(ParameterSetName = "Email Param Set")] [datetime] $ReportDate = (get-date).AddDays(-45), # Machines older than this date will be moved to the Holding OU [Parameter(Mandatory = $false, Position = 1, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Default Param Set")] [Parameter(ParameterSetName = "Email Param Set")] [datetime] $MoveDate = (get-date).AddDays(-60), # Machines older than this date will be disabled if within the proper Holding OU [Parameter(Mandatory = $false, Position = 2, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Default Param Set")] [Parameter(ParameterSetName = "Email Param Set")] [datetime] $DisableDate = (get-date).AddDays(-60), # Machines older than this date, previously disabled, and in the Holding OU will be removed [Parameter(Mandatory = $false, Position = 3, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Default Param Set")] [Parameter(ParameterSetName = "Email Param Set")] [datetime] $RemoveDate = (get-date).AddDays(-90), # Name of OU to place machines in to older than the MoveDate, will be found with Get-ADOrganizationUnit -Filter {name -eq $HoldingOU} [Parameter(Mandatory = $false, Position = 4, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Default Param Set")] [Parameter(ParameterSetName = "Email Param Set")] [string] $HoldingOU = $null, # Text that will be used to exclude computers by name from the 'To be reviewed' portion of the report. [Parameter(Mandatory = $false, Position = 5, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Default Param Set")] [Parameter(ParameterSetName = "Email Param Set")] [string[]] $IgnoreComputerName = ", # Text that will be used to exclude computers by description from the 'To be reviewed' portion of the report. [Parameter(Mandatory = $false, Position = 6, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Default Param Set")] [Parameter(ParameterSetName = "Email Param Set")] [string[]] $IgnoreComputerDescription = ", # The output path of the HTML report document [Parameter(Mandatory = $false, Position = 7, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Default Param Set")] [Parameter(ParameterSetName = "Email Param Set")] [string] $OutFilePath = $null, # If the report should be sent out as an email [Parameter(Mandatory = $false, Position = 8, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Email Param Set")] [switch] $SendEmail, # Used with $SendEmail, determines the SMTP server to use for relaying the email message [Parameter(Mandatory = $true, Position = 9, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Email Param Set")] [string] $SMTPServer, # Sets the EMail Subject line [Parameter(Mandatory = $false, Position = 10, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Email Param Set")] [string] $EmailSubject = "Inactive Computer Report", # List of Email Recpients in the form of NAME [Parameter(Mandatory = $true, Position = 11, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Email Param Set")] [string[]] $EmailRecpients, # Sets the Sender information for the email in the form of NAME [Parameter(Mandatory = $false, Position = 12, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Email Param Set")] [string] $EmailSender = "Do Not Reply ", # Will not move the machines to the Active Directory specified holding OU, but will include them on the report. [Parameter(Mandatory = $false, Position = 13, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Default Param Set")] [Parameter(ParameterSetName = "Email Param Set")] [switch] $DoNotMove = $false, # Will not disable machines in Active Directory, but will include them on the report. [Parameter(Mandatory = $false, Position = 14, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Default Param Set")] [Parameter(ParameterSetName = "Email Param Set")] [switch] $DoNotDisable = $false, # Will not delete machines from Active Directory, but will include them on the report. [Parameter(Mandatory = $false, Position = 15, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Default Param Set")] [Parameter(ParameterSetName = "Email Param Set")] [switch] $DoNotDelete = $false )
edit: some how entirely skipped over the fact that Richard answered in the same way already.