VB相当于powershell

时间:2013-07-19 18:51:08

标签: powershell

我对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提示符。

3 个答案:

答案 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