首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从另一个PowerShell向PowerShell传递多行脚本?

从另一个PowerShell向PowerShell传递多行脚本?
EN

Stack Overflow用户
提问于 2018-08-29 02:26:53
回答 2查看 423关注 0票数 0

我刚接触Powershell,我发现很难告诉我的第一个powershell命令行(powershell_1):启动一个新的powershell命令行(powershell_2)并让它( powershell_2)执行我的多行脚本(在powershell下编写)。

我的脚本是:

代码语言:javascript
复制
$wshell = New-Object -ComObject Wscript.Shell -ErrorAction Stop;
$wshell.Popup("Are you looking at me?",0,"Hey!",48+4);

我用来启动第一个powershell命令行并将其设置为按预期工作的代码

代码语言:javascript
复制
    Process powershell_1 = new Process();
    powershell_1.StartInfo.FileName = "powershell";

    string argPowershell_2 = "help";

    powershell_1.StartInfo.Arguments = "Start-Sleep -Milliseconds 500; start powershell -argumentlist \" "+ argPowershell_2 + " \"";
    MessageBox.Show(powershell_1.StartInfo.Arguments);

    powershell_1.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    powershell_1.Start();

在上面的例子中,我可以告诉第二个命令行在第二个命令行中执行help。我正在寻找一个好的方法来逃避引号问题,并以正确的方式告诉它如何执行myscript。

编辑

Ps :我并没有试图将someScript.ps的路径传递给第二个powershell命令行。我想按字面意思传递,以多行格式。

EN

回答 2

Stack Overflow用户

发布于 2018-08-29 03:00:34

我不知道这是不是正确的方式,但是你可以用下面的代码做同样的事情

代码语言:javascript
复制
$argPowershell_2 = "help";
Start-Process -Wait powershell -ArgumentList "Start-Sleep -Milliseconds 500; start powershell -argumentlist $argPowershell_2" 
票数 0
EN

Stack Overflow用户

发布于 2018-08-29 07:07:55

解决方案

在我的例子中,传递给powershell_1进程的参数可能是:

代码语言:javascript
复制
start powershell -argumentlist "-noexit","start-job -scriptblock { help; start-sleep 1;}

使用这行代码,并通过跟踪新powershell进程中的后台作业,我得到了以下结果:

如果您愿意,可以在scriptblock中运行类似于(声明变量,定义/调用自定义函数,...等):

代码语言:javascript
复制
$a = new-object System.net.webclient;
$a.downloadfile('https://www.stackoverflow.com','d:\file');

您需要转义美元符号($)以及任何其他双引号("),使用` char。

代码语言:javascript
复制
start powershell -argumentlist "-noexit","start-job -scriptblock { `$a = new-object system.net.webclient; `$a.downloadfile('https://www.stackoverflow.com','d:\file');}

有关后台作业的更多详细信息,请参阅以下链接。这解决了我的问题。谢谢你们所有人。

PowerShell: Start-Job -scriptblock Multi line scriptblocks?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52064203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档