2

我很陌生powershell,有时这个问题可能很简单

可以请任何人请告诉我PowerShell中的以下(vbscript)是什么

set obj = wscript.createobject( wscript.shell )  
Obj.Run $smCmnd  

有什么用wscript.shell
经过一番搜索,我发现第一行可以表示为;

$obj  = New-Object -ComObject WScript.Shell  

但不知道如何调用 Run 方法($obj.run(...) ???)

如果我cmd.exe使用一些命令作为运行smCmnd,如何在不关闭的情况下保留 cmd.exe 并稍后在同一控制台中运行另一个命令?

编辑
我正在写PS script,它将被另一个应用程序调用。基本上它会做一些文件夹创建和文件复制等。我想打开 CMD.exe 并显示所有在其上运行的命令。如何在我的整个脚本中使用相同的 cmd 提示符。

4

3 回答 3

1

尝试$smCmnd直接运行。如果失败,请使用Invoke-Expression $smCmnd.

于 2013-07-19T18:55:54.553 回答
1

smCmnd 是一串 shell 命令吗?如果是这样,您可以直接从 PowerShell 调用它们,而无需像在 VBScript 中那样尝试获取 wscript.shell COM 对象来运行它们。

VBScript 不是外壳。Powershell 是。您可以直接在 .ps1 或 .ps2 文件中编写 shell 命令,就像在批处理文件中一样。

我不是这里的powershell专家,但尝试做

& $smCmnd
于 2013-07-19T18:53:22.893 回答
0

如果您确实需要使用 CMD.EXE(可能是因为您想运行预先存在的 BAT 文件),并且您希望所有输出都在一个 CMD 窗口中,您可以像这样一次将所有输入通过管道传输到 cmd:

# Powershell script to execute existing BAT file
cmd.exe /k "cd c:\batchfiles & firstone.bat & second.bat & echo that's all folks"
# CMD will remain open (/k). User will have to type exit to return to powershell

# Or if you want user just to hit any key to leave CMD prompt:
cmd.exe /c "c:\batchfiles\mybatchfile.bat & pause"
# /C means CMD should close after is has executed the commands on the command line

但是,如果您想在 CMD 中执行某些内容,则在您的 Powershell 脚本中决定下一步在 CMD 中执行什么,然后执行类似于以下链接中的答案的操作,该链接在 powershell 脚本和 CMD.exe 之间传递输入和输出.

如何从 powershell 在另一个应用程序窗口中运行交互式命令

于 2013-07-20T23:30:29.003 回答