이 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-6PowerShell 6용이지만 PowerShell 1~6에도 동일한 규칙이 적용됩니다.

따라서 문자열 내부에 변수를 사용해야 하는 경우가 아니면 작은따옴표를 사용하면 PowerShell에서 사용자가 작성한 문자열을 정확하게 사용하게 됩니다.

관련 정보