powershell - 使用 .exe 和 powershell 执行批处理脚本
问题描述
感谢 Windows 环境中的任务调度程序,我想执行一个脚本。该脚本有两部分,一部分是 PowerShell 脚本命令,另一部分是启动 program.exe 命令。
我希望它们在同一个脚本中并一个接一个地启动它们,如果脚本失败,则会显示错误消息。我有一个这样的脚本:
@echo off
cd "C:\App\Extract_Spool\" & Start program.exe
PowerShell -NoProfile -ExecutionPolicy Bypass -File ""C:\App\Script\Script_Extraction\script.ps1"" -Verb RunAs
pause
当我执行所有脚本时,它似乎不起作用。但是,当我独立启动 exe 程序或 PowerShell 时,它可以工作。
你知道为什么吗 ?你能帮我么 ?
谢谢 !
解决方案
由于您尝试运行提升权限的 PowerShell 脚本(以管理员身份),因此必须从-Verb RunAs
PowerShell 进程中调用Start-Process
cmdlet ,这意味着您必须使用( ) 而不是CLI参数:-Command
-c
-File
powershell -NoProfile -ExecutionPolicy Bypass -Command "Start-Process -Verb RunAs powershell '-NoProfile', '-ExecutionPolicy Bypass', '-File', C:\App\Script\Script_Extraction\script.ps1"
笔记:
需要另一个
powershell.exe
过程来调用具有高度的脚本。在Windows PowerShell(PowerShell 版本高达 v5.1)中,提升会话的工作目录将是
C:\Windows\System32
;在 PowerShell [Core] v6+ 中,调用者的工作目录被继承。在这两个版本中,您都可以使用-WorkingDirectory
参数直接明确指定工作。两者
program.exe
和您提升的脚本都将在一个新的控制台窗口中运行。
推荐阅读
- javascript - 摇树:捆绑包中是否包含未使用的功能?
- string - 在 golang tcp 服务器中修剪换行符
- node.js - Discord bot node.js linux没有声音
- python - Python Selenium WebDriver Chrome click() 不起作用
- linux - 我新编译的内核在 qemu 中丢失了网络
- regex - 等待期望 - 直到生成的程序完成
- python - django。我如何在模型中做一些数学运算
- regex - 如何在具有匹配子字符串的窗口中返回带有 findstr 的字符串
- php - 发送邮件成功但收不到
- r - 如何解决 y must be binary error on Hmisc?