当前位置: 首页 > 知识库问答 >
问题:

Powershell仅在我运行时出错。ps1文件

贺立果
2023-03-14

我在下面运行这个脚本,当我在powershell内部执行时,它会运行并提供我请求的确切链接。当我保存在一个ps1文件中并调用该文件时,我得到了这个错误。为什么它在powershell中运行良好,但在实际文件中却无法运行?

我的代码:

$year = $date.year
$date = GET-DATE 
$datemonth=$date.month
$month = (Get-Culture).DateTimeFormat.GetMonthName($datemonth)
$url = 'https://health.mil/Reference-Center/Technical-Documents?query=DMIS'
$links=((Invoke-WebRequest –Uri $url).Links | Where-Object {($_.innerHTML - 
like "*DMIS ID Monthly*") -and ($_.innerHTML -notlike "*Change*") -and 
($_.innerHTML -like "*$month*")}).href
$links

错误:

位于C:\Users\Documents\DMIS\web\u\2。ps1:6字符:178。。。HTML-不象“Change”)-和($u.innerHTML-象“$month”)})。href~~~~~~~~~表达式中的字符串缺少终止符:“.At C:\User\Documents\DMIS\web_scrape2.ps1:8 char:1缺少结束符”)。CategoryInfo:ParserError:(:)[],ParentContainerRorRecordException FullyQualifiedErrorId:TerminatorExpectedAtonForString

共有2个答案

宰父涵忍
2023-03-14

来自Unicode标准https://www.unicode.org/charts/PDF/U0000.pdf

代码使用“配对引号的英语首选字符”

0022 " QUOTATION MARK
• neutral (vertical), used as opening or closing
quotation mark
• preferred characters in English for paired
quotation marks are 201C “  & 201D ”

更新:

当我运行这段代码时,以下是结果。这样做正确吗?

PS H:\src\tws> Get-Content .\t.ps1
$year = $date.year
$date = GET-DATE
$datemonth=$date.month
$month = (Get-Culture).DateTimeFormat.GetMonthName($datemonth)
$url = 'https://health.mil/Reference-Center/Technical-Documents?query=DMIS'

$links = ((Invoke-WebRequest –Uri $url).Links |
    Where-Object {
        ($_.innerHTML -like "*DMIS ID Monthly*") -and
        ($_.innerHTML -notlike "*Change*") -and
        ($_.innerHTML -like "*$month*")
    }).href

$links

PS H:\src\tws> .\t.ps1
/Reference-Center/Technical-Documents/2018/09/27/DMIS-ID-Monthly-October-2018
龙智
2023-03-14

根据问题描述和原始形式或您的问题,听起来您有字符编码问题。

您的代码包含非ASCII范围的Unicode引号(左双引号,U 201c和右双引号,U 201d)和标点符号(EN-DASHU 2013)——PowerShell原则上将其识别为ASCII对应项,但前提是它正确解释了输入文件的字符编码。

请务必将您的脚本保存为带有BOM的UTF-8,以便Windows PowerShell正确识别这些字符。
(即使没有BOM,如果UTF-8编码,PowerShell Core也会正确识别它们)。

 类似资料:
  • 我是Node.js的新手,我试图通过Node.js运行我的测试文件。我只是简单地键入“node.\tut63.js”,但它显示了以下错误: 错误:在function.module._resolveFilename(internal/module/cjs/loader.js:880:15)(internal/module/cjs/loader.js:725:27) 在function.module.

  • 我正在尝试在windows 2012R2中运行powershell脚本版本5.1 powershell。exe-NoProfile D:\test2。powershell命令控制台上的ps1(我不使用系统上的任何配置文件编写脚本会话) $profile 我得到输出C:\Users\XXXXX\Documents\WindowsPowerShell\Microsoft。PowerShell\u配置文

  • 依赖项:flutter:sdk:flutter firebase_core:^0.7.0 firebase_auth:“^0.20.0+1” cloud_firestore:“^0.16.0” google_sign_in: shared_preferences:0.5.12+4 提供程序: fluttertoast:^7.1.6 firebase_database: CUPRINITIO_ICO

  • 本文向大家介绍PowerShell脚本写的文件.ps1文件介绍,包括了PowerShell脚本写的文件.ps1文件介绍的使用技巧和注意事项,需要的朋友参考一下 .ps1文件是PowerShell写好的脚本文件。在Windows系统中,默认情况下是不允许执行.ps1文件的,那么怎么才能让系统允许执行.ps1文件呢? 什么是“.ps1”文件? 这个是PowerShell写的脚本文本,你可以在记事本中写

  • 我假设需要额外的依赖项,但我不能确切地理解是什么。我很感激大家的帮助。 我的pom文件是:

  • D:\gatsby站点 盖茨比起动器-default@0.1.0开发D:\gatsby站点 盖茨比发展 错误 加载插件“gatsby plugin sharp”时出现问题。也许你需要安装它的软件包?使用--verbose查看实际错误。 错误#10226 CONFIG 找不到在“D:\gatsby site\gatsby config.js”中声明的“gatsby plugin sharp”插件。