Можно ли заставить этот скрипт PowerShell принимать запятые?

Можно ли заставить этот скрипт PowerShell принимать запятые?

Следующий скрипт powershell выводит результаты дважды, если есть запятая. Он разделяет строки как две записи. Как сделать так, чтобы он обрабатывал их как одну строку, а не как две?

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

решение1

Также помните, что при использовании одинарных кавычек "одинарные кавычки (строка в одинарных кавычках) строка передается команде точно так же, как вы ее вводите. Никакой замены не выполняется". В отличие от использования двойных кавычек "двойные кавычки (строка в двойных кавычках) имена переменных, которым предшествует знак доллара ($), заменяются значением переменной до того, как строка передается команде для обработки.

Это из:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules?view=powershell-6и предназначен для PowerShell 6, но те же правила применяются к PowerShell 1–6.

Таким образом, если вам не нужно использовать переменную внутри строки, одинарные кавычки заставят PowerShell использовать строку именно так, как вы ее написали.

Связанный контент