如何从.ps1文件运行PowerShell脚本?

17

我正在尝试自动执行一个简单的PowerShell脚本(用于删除某个.txt文件)。显然,我对PowerShell很陌生 :) 当我在Shell中运行代码时,它可以无误地运行。但是当我将代码保存为.ps1文件并双击它(或远程执行它)时,它只会弹出一个窗口并且什么都不做。

我已经尝试将代码保存为.bat文件并在Windows命令行上执行它,但结果相同:在直接编写提示符的情况下可以正常工作,但是通过执行.bat文件就不起作用。

$Excel = New-Object -ComObject Excel.Application
$Workbook = $Excel.Workbooks.Open('H:\codes\test1.xlsm')
$workSheet = $Workbook.Sheets.Item(2)
$str_name = $WorkSheet.Cells.Item(2,1).Text
Remove-Item -Path "H:\text files\$str_name.txt" -Force

我原本以为双击它就可以像在 shell 或命令行中运行一样工作,但我不知道为什么它不能正常运行。


1
powershell.exe -File "C:\your\script.ps1" - Mathias R. Jessen
1
我认为你在这方面遇到了一些麻烦:关于执行策略 - Patrick
2个回答

19
创建一个批处理文件,指向您的 .ps1 文件。根据您的访问级别,可能需要使用提升的权限运行批处理文件(登录的帐户将用于执行)。
例如:
Powershell.exe -executionpolicy remotesigned -File  "C:\Path\script.ps1"
如果这仍然无法正常工作,请通过CMD执行批处理文件(将路径复制到CMD中并用引号括起来),然后告诉我响应结果。

13

有几种方法可以运行.ps1文件。最简单的方法是右键单击该文件,然后选择 '使用PowerShell运行'

正如其他人建议的那样,您也可以在命令提示符或批处理或CMD文件中使用powershell.exe来运行您的.ps1文件。具体步骤如下:

powershell.exe -File C:\Script.ps1

如果您仍然遇到问题,可能是由于执行策略。在此情况下,请按照以下方式向您的命令添加-ExecutionPolicy Bypass

如果你还是有问题可能是因为执行策略。为此,只需将-ExecutionPolicy Bypass添加到您的命令中,如下所示:

powershell.exe -File C:\Script.ps1 -ExecutionPolicy Bypass

您可以使用以下命令更改执行策略:

Set-ExecutionPolicy

没错,它可以工作!! - Felipe Markakis
值得注意的是,“使用PowerShell运行”快捷菜单命令不会保持脚本运行所在的窗口打开,因此,除非脚本被设计为通过在结尾处使用“暂停”(Read-Host)语句来保持自身打开状态,否则您可能无法看到结果。 - mklement0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接