powershell脚本能否运行时隐藏窗口?

功能建议 · 5206 次浏览
kersss 创建于 2019-03-30 10:51

如题,不知可不可以。谢谢!


Marcusx 2019-03-30 11:13 :

我忘了是什么情况下不可以了,但是可以用隐藏窗口运行vbs,vbs隐藏运行bat,bat隐藏运行Powershell。


vbs:

set ws=WScript.CreateObject("WScript.Shell")

ws.Run "D:\Test\Run.bat",0


bat:

powershell D:\Test\Run.ps1


Powershell:

D:\Test\Run.ps1

云之轩 2019-03-30 16:00 :


kersss 回复 Marcusx 2019-03-30 23:22 :

多谢我试试

kersss 回复 云之轩 2019-03-30 23:23 :

cmd无法运行稍微复杂一点点的powershell脚本,我说的是隐藏powershell窗口,不是cmd

kersss 回复 云之轩 2019-03-30 23:39 :

另外在cmd里用 powershell 加命令的方式也有很大局限性,只适合一行代码,而且还不能是稍微高级点的。如下设个变量就挂了:


云之轩 回复 kersss 2019-03-31 11:07 :

这只是你的双引号是非法的罢了,poweshell将双引号内的内容视为命令,跟变量没关系

云之轩 2019-03-31 11:08 :

另外,如果是脚本,poweshell -file xxx.ps1 啊....


还有poweshell可以运行base64编码的命令,管你脚本里面多复杂,编个码什么非法字符都没了

powershell.exe -encodedCommand $encodedCommand

kersss 回复 云之轩 2019-03-31 11:14 :

完全一样的括号在powershell里毫无压力

另外为什么最开始就用这个quicker内置的脚本功能?因为不需要把脚本写到别的地方。按你的方法把脚本写到文件里那还得记得存在哪。。。

kersss 回复 云之轩 2019-03-31 11:16 :

原来是引号,之前没看清

云之轩 回复 kersss 2019-03-31 11:16 :

要在cmd里跑方法很多,转义也可以

不需要把脚本写别的地方,直接写到临时文件里再运行即可

kersss 回复 云之轩 2019-03-31 11:20 :

多谢,我试试

云之轩 2019-03-31 11:20 :

quicker运行的脚本本来就是写到临时目录再运行的

kersss 回复 云之轩 2019-04-01 07:56 :

我又试了一次,和这个图里同样的命令在cmd里可以用(有结果显示),但是在quicker里选“cmd(完成后保留窗口)”,运行完以后什么结果都不显示

kersss 回复 云之轩 2019-04-01 08:02 :

而把中间.Net的文件操作换成比较简单的 $stream = 123 则在quicker里能看到结果。似乎quicker对通过cmd使用powershell时代码内的.Net支持有问题?

CL 回复 kersss 2019-04-01 08:30 :

cmd 是转换到命令行的,不适合多行的代码。 多行的需要用脚本。

kersss 回复 CL 2019-04-01 08:47 :

嗯,我意思是提一下看是不是未被发现的bug,毕竟直接在cmd窗口和通过quicker的结果不同。如果是已知情况的话那我就用别的方法了,谢谢!

云之轩 回复 kersss 2019-04-01 23:31 :

是因为你命令中间的::被当做注释,导致后面语句没有执行

你运行的时候仔细看cmd的弹窗标题中的命令

还是用写临时脚本文件的方法吧


kersss 回复 云之轩 2019-04-01 23:42 :

是这样的,我之前以为是因为窗口大小不够没有显示完整。多谢!


回复内容
暂无回复
回复主贴