Posso fazer com que este script do PowerShell aceite vírgulas?

Posso fazer com que este script do PowerShell aceite vírgulas?

O script PowerShell a seguir gera os resultados duas vezes quando há uma vírgula. Ele separa as strings como duas entradas. Como posso tratá-lo como uma string em vez de duas?

Function Get-Weather {
    [Alias('Wttr')]
    [Cmdletbinding()]
    Param(
            [Parameter(
                Mandatory = $true,
                HelpMessage = 'Enter name of the City to get weather report',
                ValueFromPipeline = $true,
                Position = 0
            )]
            [ValidateNotNullOrEmpty()]
            [string[]] $City,
            [switch] $Tomorrow,
            [switch] $DayAfterTomorrow
    )

    Process
    {
        Foreach($Item in $City){
            try {

                # Check Operating System Version
                If((Get-WmiObject win32_operatingsystem).caption -like "*Windows 10*") {
                    $Weather = $(Invoke-WebRequest "http://wttr.in/$City" -UserAgent curl -UseBasicParsing).content -split "`n"
                }
                else {
                    $Weather = (Invoke-WebRequest "http://wttr.in/$City" -UseBasicParsing).ParsedHtml.body.outerText  -split "`n"
                }

                If($Weather)
                {
                    $Weather[0..16]
                    If($Tomorrow){ $Weather[17..26] }
                    If($DayAfterTomorrow){ $Weather[27..36] }
                }
            }
            catch {
                $_.exception.Message
            }
        }            
    }

}

Get-Weather Shrewsbury,MA?n1

Responder1

Lembre-se também de que quando você usa aspas simples "aspas simples (uma string entre aspas simples), a string é passada para o comando exatamente como você a digita. Nenhuma substituição é executada." Em comparação com quando você usa aspas duplas "aspas duplas (uma string entre aspas duplas), os nomes das variáveis ​​precedidos por um cifrão ($) são substituídos pelo valor da variável antes que a string seja passada ao comando para processamento."

Isto é de:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules?view=powershell-6e é para o PowerShell 6, mas as mesmas regras se aplicam ao PowerShell 1 a 6.

Portanto, a menos que você precise usar uma variável dentro da string, as aspas simples forçarão o PowerShell a usar a string exatamente como você a escreveu.

informação relacionada