Похоже, вы пытаетесь выполнить код на основе имени набора параметров, а не когда используются переключатели.Если это так, то вы можете изменить свои условия оператора if
.
function Get-EventCounts
{
[CmdletBinding(DefaultParameterSetName = "Count")]
param (
[Parameter(ParameterSetName = "Count", Mandatory = $false)]
[Switch]$Count,
[Parameter(ParameterSetName = "Message", Mandatory = $false)]
[Switch]$Message,
[Parameter(ParameterSetName = "Message", Mandatory = $true)]
[String]$EventID,
[Parameter(ParameterSetName = "Message", Mandatory = $true)]
[Parameter(ParameterSetName = "Count", Mandatory = $true)]
[String]$Source,
[String[]]$DaysBack = ("7", "30", "60")
)
If ($PSCmdlet.ParameterSetName -eq "Message")
{
foreach ($int in $DaysBack)
{
$EventList = Get-EventLog System -Source $Source -After (Get-Date).AddDays(- $int) | select EventID, EntryType, TimeGenerated, Message
$MessageReturn = $EventList | Sort-Object -Property EventID | Where-Object -Property EventID -EQ $EventID
}
Return $MessageReturn.Message | Select-Object -Unique
}
If ($PSCmdlet.ParameterSetName -eq "Count")
{
foreach ($int in $DaysBack)
{
$EventList = Get-EventLog System -Source $Source -After (Get-Date).AddDays(- $int) | select EventID, EntryType, TimeGenerated, Message
$UniqueID = $EventList.EventID | Sort | Get-Unique
foreach ($Event in $UniqueID)
{
$Counting = $EventList | Where-Object -Property EventID -Like $Event
$EventArray += @(
[PSCustomObject]@{
EventID = $Event; TimeFrame = $int; Rate = $Counting.Count; PossibleMessage = $($($eventlist | where-object { $_.EventID -eq $event }))[0].Message
}
)
}
}
Return $EventArray
}
}
Если вы действительно пытаетесь принимать решения, основываясь на коммутаторах, вам нужно будет установить значение по умолчанию для$Count
или добавьте дополнительную логику, если $Count
отсутствует.