Kann ich dieses PowerShell-Skript so einstellen, dass es Kommas akzeptiert?

Kann ich dieses PowerShell-Skript so einstellen, dass es Kommas akzeptiert?

Das folgende Powershell-Skript gibt die Ergebnisse zweimal aus, wenn ein Komma vorhanden ist. Es trennt die Zeichenfolgen als zwei Einträge. Wie kann ich erreichen, dass es als eine Zeichenfolge statt als zwei behandelt wird?

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

Antwort1

Denken Sie auch daran, dass bei Verwendung von einfachen Anführungszeichen (einfache Anführungszeichen, Zeichenfolge in einfachen Anführungszeichen) die Zeichenfolge genau so an den Befehl übergeben wird, wie Sie sie eingeben. Es wird keine Ersetzung durchgeführt. Im Gegensatz dazu werden bei Verwendung von doppelten Anführungszeichen (doppelte Anführungszeichen, Zeichenfolge in doppelten Anführungszeichen) Variablennamen, denen ein Dollarzeichen ($) vorangestellt ist, durch den Wert der Variablen ersetzt, bevor die Zeichenfolge zur Verarbeitung an den Befehl übergeben wird.

Das ist von:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules?view=powershell-6und ist für PowerShell 6, aber für PowerShell 1 bis 6 gelten die gleichen Regeln.

Sofern Sie also keine Variable innerhalb der Zeichenfolge verwenden müssen, zwingen die einfachen Anführungszeichen PowerShell, die Zeichenfolge genau so zu verwenden, wie Sie sie geschrieben haben.

verwandte Informationen