我正在尝试自动执行一个简单的 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
Run Code Online (Sandbox Code Playgroud)
我希望它可以通过双击它来工作,就像在 shell 中或在命令行中运行一样,但我不知道为什么它不这样做。
小智 9
创建一个指向您的 .ps1 文件的批处理文件。您可能需要以提升的权限运行批处理文件,具体取决于您的访问级别(登录帐户将用于执行)。
例如:
Powershell.exe -executionpolicy remotesigned -File "C:\Path\script.ps1"
Run Code Online (Sandbox Code Playgroud)
如果这仍然不起作用,请通过 CMD 执行您的批处理文件(将用引号括起来的路径复制到 CMD 中)并让我知道响应。
小智 5
有多种方法可以运行 .ps1 文件。最简单的方法是右键单击该文件并“使用 PowerShell 运行”。
正如其他人所建议的那样,您还可以在命令提示符下或从 BATCH 或 CMD 文件中使用 powershell.exe 运行 .ps1 文件。如下:
powershell.exe -File C:\Script.ps1
Run Code Online (Sandbox Code Playgroud)
如果您仍然遇到问题,则可能是执行策略。为此,只需将 -ExecutionPolicy Bypass 添加到您的命令中,如下所示:
powershell.exe -File C:\Script.ps1 -ExecutionPolicy Bypass
Run Code Online (Sandbox Code Playgroud)
要更改您的执行策略,您可以使用:
Set-ExecutionPolicy
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
39068 次 |
| 最近记录: |