以下为PowerShell多行脚本,脚本内容如下,复制到PowerShell中能正确执行:
$DICOM_PATH = "D:\DICOMFILE\20250117\1.2.156.112605.137174094780284.250117011704.2.10460.27099"
$Socket = New-Object System.Net.Sockets.TcpClient("localhost", 17179)
$Stream = $Socket.GetStream()
$Writer = New-Object System.IO.StreamWriter($Stream)
$Writer.WriteLine("dicom:get -l `"$DICOM_PATH`"")
$Writer.Flush()
$Socket.Close()
C#编程,我用以下代码执行上述PowerShell多行脚本,不成功,请查看原因,谢谢。
private void button22_Click(object sender, EventArgs e)
{
// 构建 PowerShell 脚本
StringBuilder psCommand = new StringBuilder();
psCommand.Append("$DICOM_PATH = \"" + lujin.Replace("\"", "\\\"") + "\"\n");
psCommand.Append("$Socket = New-Object System.Net.Sockets.TcpClient(\"localhost\", 17179)\n");
psCommand.Append("$Stream = $Socket.GetStream()\n");
psCommand.Append("$Writer = New-Object System.IO.StreamWriter($Stream)\n");
psCommand.Append("$Writer.WriteLine(\"dicom:get -l `\"$DICOM_PATH`\"\")\n");
psCommand.Append("$Writer.Flush()\n");
psCommand.Append("$Socket.Close()\n");
// 启动 PowerShell 进程
try
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "powershell.exe";
startInfo.Arguments = "-NoExit -Command \"" + psCommand.ToString().Replace("\"", "\\\"") + "\"";
startInfo.UseShellExecute = false;
startInfo.Verb = "runas";
Process process = new Process();
process.StartInfo = startInfo;
process.Start();
}
catch (Exception ex)
{
Console.WriteLine("无法以管理员方式启动PowerShell: " + ex.Message);
}
}