Почему мой блок elseif запускается при указании -WhatIf

Доброе утро,

У меня возникли некоторые проблемы с пониманием документации для , и я искал, может ли кто-нибудь разбить ее немного больше, чтобы я мог понять.

Используемые ссылки


Текущий код

      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указан (я знаю, вроде отвечает на мой вопрос), но я хочу посмотреть, есть ли в нем что-то еще. Вроде бы все было наоборот.

Это просто дополнительная опция для меня?

Я просто слишком много думаю об этом?(:

0 ответов

Другие вопросы по тегам