Почему мой блок elseif запускается при указании -WhatIf
Доброе утро,
У меня возникли некоторые проблемы с пониманием документации для , и я искал, может ли кто-нибудь разбить ее немного больше, чтобы я мог понять.
Используемые ссылки
- SupportsShouldProcessMS-SupportShouldProccess
- Все, что вы хотели знать о ShouldProcess
- SO Связанный вопрос
Текущий код
Function Test-ShouldProcess{
[CmdletBinding(SupportsShouldProcess)]
Param(
[Parameter(Mandatory=$false,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true)]
[String[]]$Path = "C:\Users\Abraham\Desktop\FileToDelete.txt",
[String[]]$ComputerName = $env:COMPUTERNAME
)
Begin{
$File = Get-Item -Path $Path
}
Process{
foreach($Computer in $ComputerName){
try {
#$PSSession = New-PSSession -ComputerName $Computer -ErrorAction Stop
if($PSCmdlet.ShouldProcess($Computer, "Removing: $File")){
"$($file.Name) deleted"
}
elseif ($WhatIfPreference.IsPresent) {
"Why does my what if switch go here?"
}
} catch [System.Management.Automation.Remoting.PSRemotingTransportException] {
"Unable to connect to $computer"
"Error: $($error[0].Exception.Message.Split(':')[1].Trim())"
}
}
}
}
Вопрос
В моем
Process{}
блока, у меня есть условие и, чтобы проверить,
-Whatif
было указано.
-
Test-ShouldProcess -WhatIf
Мне сложно понять, почему мой
elseif()
оператор запускается при указании, но я получаю сообщение в моем первом
if()
условие:
Что, если: Выполнение операции «Удаление: C:\Users\Abraham\Desktop\FileToDelete.txt.FullName» на целевом компьютере «DESKTOP-OEREJ77».
.. все же, он не запускает код в этом блоке только в моем
elseif
. Разве не было бы наоборот?
Я знаю, что я явно говорю ему запустить этот раздел, если
-WhatIf
указан (я знаю, вроде отвечает на мой вопрос), но я хочу посмотреть, есть ли в нем что-то еще. Вроде бы все было наоборот.
Это просто дополнительная опция для меня?
Я просто слишком много думаю об этом?(: