我正在Windows RT中开发一个应用程序。我确实需要在Windows RT(C#)中运行/调用PowerShell或CMD命令。请帮我弄清楚。 提前致谢
答案 0 :(得分:1)
虽然您无法直接针对Windows RT中的PowerShell .NET引擎进行编程,但您可以通过套接字访问桌面。但是,这假设您能够确保安装了桌面套接字侦听器。运行。然而,随着这一点,&运行你可以向它发出命令,让它调用cmd.exe(或通过EXE或进程内引擎的powershell)。在WinRT中有什么好处的是引擎件,可以让你连接到&使用PowerShell远程端点。考虑到最终只是一个套接字,可以由微软以外的人完成,但是你必须通过很多WS-MAN协议来弄清楚它是如何工作的。我认为通过套接字发送的简单字符串可能更容易,例如'powershell -command "& { Get-Process }"'
或'cmd /c dir c:\'
。 : - )
以下是一些代码片段作为概念证明:
WinRT代码段:
private async void _button_OnClick(object sender, RoutedEventArgs e)
{
string content;
try
{
var client = new HttpClient();
client.DefaultRequestHeaders.Add("user-agent",
"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");
var response = await client.GetAsync("http://localhost:54649/");
if (response.StatusCode == HttpStatusCode.OK)
{
content = await response.Content.ReadAsStringAsync();
}
else
{
content = response.StatusCode.ToString();
}
}
catch (Exception ex)
{
content = ex.Message;
}
await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
_textBlock.Text = content;
});
}
在桌面方面,这是一个脑死MVC控制器的片段:
public class HomeController : Controller
{
//
// GET: /Home/
public string Index()
{
return "Hello World. The time is " + DateTime.Now;
}
}