首页 > 解决方案 > Windows 命令控制台运行 powershell 脚本(ps1)

问题描述

我想从批处理文件中运行 .ps1 。我需要在网站上下载一个只需要 http 请求的可执行文件。

我的 .ps1 代码在 Windows Powershell ISE(未提升)中工作,但从我的批处理文件运行时却不行。

我的批处理和 .ps1 文件如下,有人可以帮助我吗?

这是批处理文件

echo test

powershell -noexit -file C:\Users\username\Desktop\tyty.ps1

pause

这是ps.1

$userAgent = [Microsoft.PowerShell.Commands.PSUserAgent]::InternetExplorer
$downloadUrl = ((Invoke-WebRequest –Uri "http://tax.nat.gov.tw/info_BLR_download.html?id=2").Links | Where-Object {$_.href -like “*BLR_*I.exe” -and $_.href -notlike “*BLRATH*” } | Select-Object -ExpandProperty href)
Invoke-WebRequest -Uri $downloadUrl -OutFile "C:\Temp\BLR.exe" -UserAgent $userAgent

错误

[Microsoft.PowerShell.Commands.PSUserAgent]。 C:\Users\username\Desktop\tyty.ps1:1 字元:14
+ $userAgent = [Microsoft.PowerShell.Commands.PSUserAgent]::InternetExp ...
+              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (Microsoft.Power...nds.PSUserAgent:TypeName) [],RuntimeException
    + FullyQualifiedErrorId : TypeNotFound

标签: powershell

解决方案


要使某个类型可用,如果 PowerShell 尚未自动加载它,只需使用Import-Moduleor手动添加相应的模块或程序集Add-Type。在您的情况下,您必须加载一个可以从文档(Microsoft.PowerShell.Commands.PSUserAgent)派生的程序集:

Add-Type -AssemblyName Microsoft.PowerShell.Commands.Utility

推荐阅读