我对 powershell 很陌生(大约 1 周),我正在尝试为我们的帮助台创建一个工具来导入和导出打印机。该工具运行良好,除了在运行代码时表单冻结。
为了减轻冻结,我发现将其作为作业运行可以完成任务,但是我遇到了两个问题。
- 由于工作完成,我无法让进度条增加 1 步。
我无法将变量传递给它。(我对此并不担心,因为它有大量信息,我只需要弄清楚它的语法。如果你也能提供帮助,那就太好了。)
start-job -scriptblock { C:\Windows\system32\spool\tools\PrintBrm.exe -b -f \\filestore\$EXPORTPRINTERS.printerExport $progressbarexportprinters.PerformStep() $progressbarexportprinters.TextOverlay = "Printer Export Complete" }
我找到了解决方案。表单仍然冻结,但我可以在进度条上显示移动。这已经足够好了。
C:\Windows\system32\spool\tools\PrintBrm.exe -r -f \\filestore\$EXPORTPRINTERS.printerExport | out-string -Stream | foreach-object {
$richTextBox1.lines = $richTextBox1.lines + $_
$richTextBox1.Select($richTextBox1.Text.Length, 0)
$richTextBox1.ScrollToCaret()
$progressbaraddprinters.PerformStep()
}