如何从Azure VM内部访问数据
本文关键字:内部 访问 数据 VM Azure | 更新日期: 2023-09-27 18:03:57
假设我有一个VM (windows)运行在MS-Azure上。假设我在VM上有程序Y和Z,它们正在记录一些关键数据。假设我在VM中也有一个程序X,它接受一些参数并根据过滤器返回一些关键数据。
现在,我正在构建一个前端web应用程序,一个ASP。. NET网站,上面提到的虚拟机的所有者可以登录并查看X程序提供的数据。
我已经有我的日志程序运行在VM和程序X安装。我怎么能访问一个VM内的可执行文件,传递参数给它,运行它,并得到结果返回给我?这可行吗?有人能建议我怎样才能做到这一点吗?
谢谢。
如果您的程序X不涉及GUI,您可以尝试在PS远程会话上运行它。下面是一个关于如何配置powershell远程的很好的指南。
另外,这里有一篇关于防火墙上需要打开的端口的文章。
默认情况下,PowerShell将使用以下端口进行通信(它们与WinRM是相同的端口)
TCP/5985 = HTTP TCP/5986 = HTTPS
如果它涉及GUI,据我所知,唯一的解决方案是使用RDP远程到VM。
此外,在internet上公开WinRM或RDP端口不是一个好主意。我建议你在Azure上创建一个VPN,并在VPN上使用WinRM或RDP。
您可以使用System.Diagnostic.Process
类运行另一个可执行文件:
// Start the child process.
Process p = new Process();
// Redirect the output stream of the child process.
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "X.exe";
p.Start();
// Do not wait for the child process to exit before
// reading to the end of its redirected stream.
// p.WaitForExit();
// Read the output stream first and then wait.
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
复制:在c#中使用参数