以下 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
还请记住,当您使用单引号“单引号(单引号字符串)时,该字符串将完全按照您键入的方式传递给命令。不会执行任何替换。” 与使用双引号“双引号(双引号字符串)相比,在将字符串传递给命令进行处理之前,以美元符号 ($) 开头的变量名称将替换为变量的值。”
这来自:https ://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules?view= powershell-6 适用于 PowerShell 6,但同样的规则适用于 PowerShell 1 到 6。
因此,除非您需要在字符串中使用变量,否则单引号将强制 PowerShell 完全按照您编写的方式使用字符串。