¿Puedo hacer que este script de PowerShell acepte comas?

¿Puedo hacer que este script de PowerShell acepte comas?

El siguiente script de PowerShell genera los resultados dos veces cuando hay una coma. Separa las cadenas en dos entradas. ¿Cómo puedo hacer que lo trate como una cadena en lugar de dos?

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

Respuesta1

Recuerde también que cuando utiliza comillas simples "comillas simples (una cadena entre comillas simples), la cadena se pasa al comando exactamente como la escribe. No se realiza ninguna sustitución". En comparación con cuando se utilizan comillas dobles, "comillas dobles (una cadena entre comillas dobles), los nombres de variables precedidos por un signo de dólar ($) se reemplazan con el valor de la variable antes de pasar la cadena al comando para su procesamiento".

Esto es de:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules?view=powershell-6y es para PowerShell 6, pero se aplican las mismas reglas para PowerShell 1 a 6.

Entonces, a menos que necesite usar una variable dentro de la cadena, las comillas simples obligarán a PowerShell a usar la cadena exactamente como la escribió.

información relacionada