我对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提示符。
答案 0 :(得分:1)
smCmnd是一串shell命令吗?如果是这样,您可以直接从PowerShell中调用它们,而无需像在VBScript中那样尝试使用wscript.shell COM对象来运行它们。
VBScript不是shell。 Powershell是。您可以直接在.ps1或.ps2文件中编写shell命令,就像在批处理文件中一样。
我不是这里的PowerShell专家,但是尝试做
& $smCmnd
答案 1 :(得分:1)
尝试直接运行$smCmnd
。如果失败,请使用Invoke-Expression $smCmnd
。
答案 2 :(得分: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。
How to run interactive commands in another application window from powershell