2013-07-19 38 views
2

我很新的powershell有时这个问题可能是这么简单VB相当于PowerShell的

可以请任何人请告诉我什么是PowerShell中

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

相当于以下(VBScript)的wscript.shell有何用途?
经过一番搜索,我发现第一行可以表示为;

$obj = New-Object -ComObject WScript.Shell 

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

如果我运行cmd.exe一些命令为smCmnd,怎么能我保持cmd.exe没有关闭,稍后在相同的控制台中运行另一个命令?

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

+0

请退后一步,并说明你正在试图解决的,而不是你所认为的解决实际问题。你想通过从PowerShell运行CMD来实现什么? –

+0

@AnsgarWiechers - 我想展示什么是发生在 –

+2

你可以使用'启动Transcript'并且因为它是写在一个寻呼机显示生成文件的用户。 –

回答

1

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

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

我不是一个PowerShell的专家在这里,但尝试做

& $smCmnd 
+0

wscript.shell的确切用途是什么 –

+0

我在我的问题中添加了一些信息。是否有可能打开CMD并发送不同的命令给它时间在PS像Vb一样 –

+3

在PowerShell中没有'WScript.Shell'的用法。没有必要。 –

1

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

+0

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

+0

当您使用PowerShell时,请勿使用CMD。我之前提到过,不是吗? –

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