2013-07-19 42 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