我有一個單獨的測試項目來測試我的cmdlet的項目,有一個像電話用戶輸入自定義的PowerShell命令:如何給從另一個項目
pSCmdletObject.InvokeCommand.InvokeScript("Write-Host " + outputString); and
pSCmdletObject.InvokeCommand.InvokeScript("Read-Host");
我已經使用了PSHostUserInterface,PSRawUserInterface,PSHost實施例子給出在C:\ Program Files文件(x86)的\微軟的SDK \的Windows \ V7.0 \樣本\ SYSMGMT \ WindowsPowerShell \ CSHARP \ Host03
這裏的問題是:
TestClass.cs(測試項目) :
using (Runspace runSpace = RunspaceFactory.CreateRunspace(new Host(new TestClass())))
{
runSpace.Open();
using (Pipeline pipeline = runSpace.CreatePipeline())
{
pipeline.Commands.Add("CustomCommand-Get");
var output = pipeline.Invoke(); //<<< (1)
}
}
在「(1)」調用「Invoke」時,調用寫在實際項目中的「CustomCommand」實現。在實際cmdlet項目的「CustomCommand」的「ProcessRecord()」中,當調用「Read-Host」時,該項目只是等待我目前無法提供的輸入,因爲我無法找到某種方式。我的測試項目有Invoke調用,我想避免使用控制檯。我想根據測試用例以某種方式對輸入進行硬編碼,因爲實際的自定義Cmdlet項目是一個完全不同的項目,可以獨立運行。這可以做到嗎?如果是這樣,怎麼樣?任何其他方式來實現這一目標?
在此先感謝
謝謝,它的工作原理! – user3575135