Я пишу инструмент GUI с помощью powershell, который вытаскивает информацию отслеживания сообщений с сервера обмена. На основе того, что пользователь выбирает, будет определяться тип поиска. Если не все аргументы передаются при запуске Get-MessageTrackingLog, будет ли команда просто удалить этот параметр или передать значение null? Пример: если ничто не передается в «-sender $ sender», значение просто будет «null» или параметр также будет удален, как это?Передача различных аргументов в функции с Powershell
Get-MessageTrackingLog -server $ HTS -sender $ отправителем # значение в настоящее время прошло или Get-MessageTrackingLog -server $ HTS # никакого значения для отправителя не передается
Другими словами, если я не» t передать arg с параметром, то я не хочу, чтобы этот параметр был включен в команду.
Я стараюсь избегать писать get-messagetrackinglog для каждого другого сценария, основанного на выборе пользователя.
Надеюсь, это имеет смысл для всех, спасибо!
If ($sender -and $chk_Mailbox.checked -and $chk_End.checked -and $chk_start.checked){Msg -sender **$sender** -Start **$Start** -End **$End** -max_res_size **$max_res_size**}
If ($sender -and $chk_Mailbox.checked -and (!$chk_End.checked) -and (!$chk_start.checked)){Msg -sender $sender -max_res_size **$max_res_size**}
Function Msg{
[CmdletBinding()]
Param(
[Parameter(Position=0,Mandatory=$false)]
$Sender,
[Parameter(Position=1,Mandatory=$false)]
$Start,
[Parameter(Position=2,Mandatory=$false)]
$End,
[Parameter(Position=3,Mandatory=$true)]
$max_res_size,
[Parameter(Position=4,Mandatory=$false)]
$EventID,
[Parameter(Position=5,Mandatory=$false)]
$MsgID
)
BEGIN
{
If ($max_res_size -match "unlimited"){$maxloop = 100000000} else {$maxloop = $max_res_size}
$ht = Get-ExchangeServer | ?{$_.admindisplayversion -match '14.3' -and $_.ServerRole -match 'HubTransport'} |% {$_.name}
$startstop = $true
Foreach ($hts in $ht)
{
Get-MessageTrackingLog -server $hts -sender **$sender** -Start **$Start** -End **$End** -resultsize **$max_res_size** -EventID **$EventID** -MessageId **$MsgID** -warningaction 0 |
%{
if ($rescount -ge $maxloop){$startstop = $false; break}
$dataGridView1.rows.add($_.TimeStamp,$_.Sender,[string]$_.Recipients,$_.RecipientCount,`
$_.TotalBytes,$_.ReturnPath,$_.MessageLatency,$_.MessageLatencyType,$_.EventId,$_.Source,$_.ServerHostname,$_.ConnectorId,$_.MessageId)
$rescount++
$Res_Count.text = $rescount
}
}
}
}
@ Matt Таким образом, это будет выглядеть следующим образом: \t 'Get-MessageTrackingLog @MsgTrkParm \t $ MsgTrkParm = @ { 'отправителя' = $ Sender; \t \t 'server' = $ HTS; \t \t «Старт» = $ Пуск; 'end' = $ End; \t \t 'EventID' = $ EventID} ' – PdeRover
См. Мой ответ, где я пытаюсь его покрыть. – Matt