Quantcast
Channel: PowerShell.org » All Posts
Viewing all articles
Browse latest Browse all 13067

Reply To: Mandatory only in a specific parameterset

$
0
0

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.


Viewing all articles
Browse latest Browse all 13067

Trending Articles