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.