我有一个单独的测试项目来测试我的cmdlet项目,该项目的调用如下:
pSCmdletObject.InvokeCommand.InvokeScript("Write-Host " + outputString); and
pSCmdletObject.InvokeCommand.InvokeScript("Read-Host");
我使用了C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0 \ Samples \ sysmgmt \ WindowsPowerShell \ csharp \ Host03
中给出的PSHostUserInterface,PSRawUserInterface,PSHost实现示例问题在于:
TestClass.cs(Test项目):
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调用,我想避免使用控制台。我想以某种方式根据测试用例对输入进行硬编码,因为实际的Custom Cmdlet项目是一个完全不同的项目,可以独立运行。可以这样做吗?如果是这样,怎么样?还有其他方法可以达到这个目的吗?
提前致谢