TFS Powershell脚本 我有一个脚本,它运行在本地服务器上没有问题,但是当我在Team Foundation Server(UpDeD2017)中执行一个任务并从那里运行它时,它会引发一个错误,这个错误是在脚本引用之后的。 param( [string]$ServiceNames ) if([string]::IsNullOrWhiteSpace($ServiceNames)) { throw "Missing argument [-ServiceNames $ServiceNames]" } $Services=$ServiceNames.Split(",") foreach($Service in $Services) { if(Get-Service $Service | Where {$_.status –eq 'Stopped'}) { Get-Service $Service | Where {$_.status –eq 'Stopped'} | Start-Service Write-Host "$Service has been started." } else { Write-Host "$Service is already running." } }

TFS Powershell脚本 我有一个脚本,它运行在本地服务器上没有问题,但是当我在Team Foundation Server(UpDeD2017)中执行一个任务并从那里运行它时,它会引发一个错误,这个错误是在脚本引用之后的。 param( [string]$ServiceNames ) if([string]::IsNullOrWhiteSpace($ServiceNames)) { throw "Missing argument [-ServiceNames $ServiceNames]" } $Services=$ServiceNames.Split(",") foreach($Service in $Services) { if(Get-Service $Service | Where {$_.status –eq 'Stopped'}) { Get-Service $Service | Where {$_.status –eq 'Stopped'} | Start-Service Write-Host "$Service has been started." } else { Write-Host "$Service is already running." } },powershell,encoding,Powershell,Encoding,这个错误来了 if(Get-Service $Service | Where {$_.status â?"eq 'Stopped'}) 意外的标记“已停止”?(eq“已停止”) 提前感谢。是的,从Word或Outlook复制/粘贴总是会在编辑器中插入您不需要的字符。为此,我在Powershell配置文件中添加了以下函数 这并不是对这个问题的直接回答,因为我们已经给出了答案。 然而,它可能会帮助其他人 function Editor-ReplaceSmartQuotes { ## thi

这个错误来了

if(Get-Service $Service | Where {$_.status â?"eq 'Stopped'})
意外的标记“已停止”?(eq“已停止”)


提前感谢。

是的,从Word或Outlook复制/粘贴总是会在编辑器中插入您不需要的字符。为此,我在Powershell配置文件中添加了以下函数

这并不是对这个问题的直接回答,因为我们已经给出了答案。 然而,它可能会帮助其他人

function Editor-ReplaceSmartQuotes {
    ## this function replaces "smart-qoutes" and long dashes you get 
    ## when pasting from Word into normal straight characters (" ' -)
    $text = Editor-GetSelectedText
    $psISE.CurrentFile.Editor.InsertText(($text -creplace '[\u201C\u201D\u201E\u201F\u2033\u2036]', '"' `
                                                -creplace "[\u2018\u2019\u201A\u201B\u2032\u2035]", "'" `
                                                -creplace "[\u2013\u2014\u2015]", "-"))
}
并将其添加到我的ISE菜单中:

Editor-AddMenu "Replace Smart_Quotes in Selection" {Editor-ReplaceSmartQuotes} "Alt+Q"

这是一个编码问题。您的脚本是否保存在UTF8-BOM中?我不确定,但万一它不是如何保存的?对不起,ISE已被弃用并受到限制。我看不到从它更改编码的方法。我建议您移动到带有PowerShell扩展的VSCode,因为这是MSFT创建PowerShell脚本的方向。从那里,您可以更新右下角的文件编码。您需要使用BOM将文件转换为UTF8。此外,在
-eq
中使用长破折号而不是短破折号,这是编码问题的原因(charcode 8211与charcode 45)。您是否从电子邮件或自动转换破折号的东西中复制/粘贴了此代码?作为一条额外信息,Windows PowerShell的引擎将所有内容解析为“ANSI”,除非其编码为“UTF8 with BOM”。另一条额外信息:Microsoft Office软件包(如Word和Outlook)倾向于自动更改破折号(从charcode 45到8211)围绕短语。我建议避免这些应用程序复制PowerShell脚本(或至少小心使用它们)。