【问题标题】:How to run powershell script from .ps1 file?如何从 .ps1 文件运行 powershell 脚本?
【发布时间】:2021-11-23 16:47:12
【问题描述】:

我正在尝试自动执行一个简单的 PS 脚本(删除某个 .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 或命令行中运行一样,但我不知道为什么它没有。

【问题讨论】:

标签: powershell cmd


【解决方案1】:

创建一个指向 .ps1 文件的批处理文件。您可能需要以提升的权限运行批处理文件,具体取决于您的访问级别(登录帐户将用于执行)。

例如:

Powershell.exe -executionpolicy remotesigned -File  "C:\Path\script.ps1"

如果这仍然不起作用,请通过 CMD 执行您的批处理文件(复制路径,用引号括起来,到 CMD 中)并让我知道响应。

【讨论】:

    【解决方案2】:

    有几种方法可以运行 .ps1 文件。最简单的方法是右键单击该文件并选择'Run with PowerShell'

    正如其他人所建议的,您还可以在命令提示符下或从 BATCH 或 CMD 文件中使用 powershell.exe 运行 .ps1 文件。如下:

    powershell.exe -File C:\Script.ps1
    

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

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

    要更改您的执行策略,您可以使用:

    Set-ExecutionPolicy
    

    【讨论】:

    • 是的,它有效!!
    • 不错;值得注意的是,Run with PowerShell 快捷菜单命令不会使运行脚本的窗口保持打开状态,因此除非脚本被设计为通过在最后,您可能看不到结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 2013-08-29
    相关资源
    最近更新 更多