加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

如何在Windows批处理文件中运行PowerShell脚本

发布时间:2020-12-13 22:45:12 所属栏目:Windows 来源:网络整理
导读:如何将Power Shell脚本嵌入到与 Windows批处理脚本相同的文件中? 我知道这种事情在其他情况下是可能的: 使用sqlcmd在批处理脚本中嵌入SQL,并在文件开头巧妙安排goto和注释 在具有程序名称的* nix环境中,您希望在脚本的第一行上运行脚本,注释掉,例如#!/usr
如何将Power Shell脚本嵌入到与 Windows批处理脚本相同的文件中?

我知道这种事情在其他情况下是可能的:

>使用sqlcmd在批处理脚本中嵌入SQL,并在文件开头巧妙安排goto和注释
>在具有程序名称的* nix环境中,您希望在脚本的第一行上运行脚本,注释掉,例如#!/usr/local / bin / python.

可能没有办法这样做 – 在这种情况下,我必须从启动脚本调用单独的PowerShell脚本.

我认为一个可能的解决方案是回显PowerShell脚本,然后运行它.不这样做的一个很好的理由是,尝试这一点的原因之一是利用PowerShell环境的优势,而不会受到诸如escape characters

我有一些不寻常的限制,并希望找到一个优雅的解决方案.我怀疑这个问题可能是诱饵的反应:“为什么不尝试和解决这个不同的问题.只要说这些是我的限制,对此就不好意思.

有任何想法吗?有没有一个巧妙的评论和转义字符的组合,这将使我能实现这一点?

关于如何实现这一点的一些想法:

>一行的结尾处的一个克拉是一个延续 – 就像Visual Basic中的一个下划线
>和号&通常用于分隔命令echo Hello&回声世界在两条回归线上分开
>%0将给你当前运行的脚本

所以这样的东西(如果我可以使它工作)将是好的:

# & call powershell -psconsolefile %0
# & goto :EOF
/* From here on in we're running nice juicy powershell code */
Write-Output "Hello World"

除…

>它不工作,因为
>文件的扩展不是按照PowerShell的喜好:Windows PowerShell控制台文件“insideout.bat”扩展名不是psc1. Windows PowerShell控制台文件扩展名必须是psc1.
> CMD并不完全满足于这种情况 – 尽管它在’#’上绊倒,但它不被识别为内部或外部命令,可操作的程序或批处理文件.

这只通过正确的路线到PowerShell:

dosps2.cmd:

@findstr/v "^@f.*&" "%~f0"|powershell -&goto:eof
Write-Output "Hello World" 
Write-Output "Hello some@com & again"

regular expression不包括以@f开头的行,包括&并将所有其他内容传递给PowerShell.

C:tmp>dosps2
Hello World
Hello some@com & again

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读