- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用带有 3 个文件的 GUI 编写 PowerShell 脚本:
window1.ps1
- 输入变量并启动start.vbs
start.vbs
- 启动window2.ps1
window2.ps1
- 显示在 window1 中输入的值在 window1 中,我在 textbox1
中输入 value1
并单击按钮
。
通过单击它,value1
应存储到全局变量
中,以便 window2
可以弹出(通过 VBS)并使用 值1
。
window1
中按钮
的代码:
$button_OnClick=
{
$global:value1 = $textBox1.Text
start-process .\start.vbs
}
start.vbs:
Set objShell = CreateObject("Wscript.Shell")
objShell.run("powershell.exe -nologo -file .\window2.ps1"), 0, True
到目前为止一切顺利。据我了解,value1
是一个全局变量,可以在window2.ps1
中使用。
因此 window2
是一个空窗口,只有应显示 value1
的文本。
$label1.Text = "$value1"
但由于某种原因,变量为空,window2
为空。
我错过了什么?我仍在学习 PowerShell,可能会遗漏一些细节。
note: I know the way I open up
window2
via .vbs is weird. But that way, the GUI opens up without any PowerShell window in the background.
最佳答案
“全局变量”并不是神奇地可供计算机上的每个进程使用的东西。您正在启动两个完全独立的 PowerShell 进程。他们的任何东西都不会被共享。
如果您想在第二个 PowerShell 进程中使用该值,则需要将该值作为命令行参数提供给第二个 PowerShell 进程。
这意味着您必须将第一个 PowerShell 脚本生成的值作为命令行参数提供给中间 VBScript,因为这也是一个完全独立的过程。
第一个 PowerShell 脚本使用两个参数(脚本名称和值)调用 wscript.exe:
$button_OnClick=
{
$value1 = $textBox1.Text
Start-Process wscript.exe "window2.vbs","`"$value1`""
}
假设用户输入了 Hello World!
,这将执行命令行(注意引号,它们确保带空格的值不会被视为单独的参数):
wscript.exe window2.vbs "Hello World!"
然后,VBS 中介可以从第一个命令行参数中读取 Hello World!
(引号将被删除,因此我们需要在下一次调用时将它们添加回来):
value1 = WScript.Arguments.Unnamed(0)
Set objShell = CreateObject("Wscript.Shell")
objShell.run("powershell.exe -nologo -file .\window2.ps1 """ & value1 & """"), 0, True
现在执行以下命令行:
powershell.exe -nologo -file .\window2.ps1 "Hello World!"
然后,第二个 PowerShell 脚本可以从其第一个命令行参数中提取 Hello World!
,就像 VBScript 所做的那样(引号将再次被删除):
$label1.Text = $args[0]
<小时/>
我建议您制作一个 VBScript windowless.vbs
,它可以无窗口运行任何命令:
' windowless.vbs
For Each arg In WScript.Arguments
If InStr(arg, " ") > 0 Then
cmd = cmd & """" & arg & """ "
Else
cmd = cmd & arg & " "
End If
Next
CreateObject("WScript.Shell").Run(Trim(cmd)), 0, True
然后在 PowerShell 脚本中使用它
$value1 = "Hello World!"
Start-Process wscript.exe "windowless.vbs","powershell.exe","-nologo","-file window2.ps1","`"$value1`""
这将创建这个命令行
powershell.exe -nologo -file .\window2.ps1 "Hello World!"
这正是我们所需要的,并且可以轻松地在其他情况下重用它。
关于winforms - 如何通过 VBS 将变量从一个 PS 脚本传递到另一个 PS 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60510519/
我在 tomcat 8.0.24 上运行 Atlassian Bitbucket,在 Ubuntu 14.04.5 LTS 上运行 Java 1.8.0 31-b13(64 位),内核 3.13.0-
docker命令reference for ps提到 docker ps -a docker ps --all 命令显示所有容器的列表。 在docker上工作时,我错误地使用了以下命令 docker
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
docker ps 不让我知道容器本身的 pid。在主机上运行的 docker ps 和 ps 的输出之间进行命令字符串匹配并不是万无一失的,因为我可以在主机上运行相同的命令。 有没有人有确定的方法将
如何通过命令“ps”或“ps -ef”知道进程是在后台运行还是在前台运行? 我首先想到的是,当我输入 ps -ef 时,有一个名为 TTY 的部分。 当我查看 TTY 列表时,大多数都是“?” (问号
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在使用带有 3 个文件的 GUI 编写 PowerShell 脚本: window1.ps1 - 输入变量并启动start.vbs start.vbs - 启动window2.ps1 window
这似乎是一个愚蠢的问题,但我一直无法找到明确的答案。 This website指出破折号是可选的 ps aux 然而,ps aux有效但 ps -aux出现错误 no user named 'x' .
我有一个 bash 脚本 (ScreamDaemon.sh),在其中添加了检查它的示例是否已经运行的检查。 numscr=`ps aux | grep ScreamDaemon.sh | wc -l`
我需要解释一下 ps -ef 命令的四个字段(4 或 0),这个数字的含义谢谢你 root 27116 27112 4 15:25 pts/0 00:00:00 grep -qsRw -m1 moni
我刚开始学习 linux 命令,请帮助我找出 ps -ef 和 ps -ef | 之间的区别 | linux 中的 more 命令 最佳答案 与 ps -ef | more你管| ps 的输出至 mo
# ps | grep safe 14592 root 136m S /tmp/data/safe/safe 16210 root 1664 S grep safe
我有一个 bash 脚本 (ScreamDaemon.sh),在其中添加了检查它的示例是否已经运行的检查。 numscr=`ps aux | grep ScreamDaemon.sh | wc -l`
为什么 docker compose 创建的容器只能从 docker-compose ps 访问并且在杀死正在运行的容器后仍然存在? 最佳答案 不是。 docker ps只显示正在运行的容器,dock
我试图在 unix 框中找到所有正在运行的 java 进程。我很困惑 ps –ef|grep java 和 ps –ef|grep *.java 哪一个是正确的,确切的区别是什么? PS:两者都返回不
给定一个 pid 数组和代码: for i in ${listedPids[@]} do runningCheck="ps -u $USER | grep $i"
我的 PowerShell 配置文件 (CurrentUser.AllHosts) 中有两个脚本让我抓狂,因为它们在看似相同的控制台上给出了不同的结果。在 Powershell(提升版)上,脚本没有任
对于我正在创建的 python 脚本,我需要先获取进程的 PID(基于其名称),然后使用其 PID、持续时间从该进程获取,从下面的打印输出中,将是“00:00:00” root 5686
前言 大家好,我是 god23bin。欢迎来到《 一分钟学一个 Linux 命令 》系列, 每天只需一分钟,记住一个 Linux 命令不成问题 。今天要说的是 ps 命令。
我发现 ps aux 列出了当前正在运行的进程,我发现其他人提到了 ps auxwww .我想知道这是什么意思?或者它有什么作用? ps aux有什么区别和 ps auxwww ? 最佳答案 引用 m
我是一名优秀的程序员,十分优秀!