移动文件时弹出Powershell弹出窗口

时间:2014-09-23 21:51:15

标签: powershell popup

当我的脚本启动时,它会将文件从一个目录移动到另一个目录。文件完全下载后,我启动了一个应用程序 这一切都有效,但我想要的是在移动文件时出现的弹出窗口(大文件)。
当我调试我的代码一旦它到达Move-Item Cmdlet时,它会一直等到该命令完成后再继续运行。我想要做的是在Move-Item Cmdlet运行时,弹出一个信息窗口。 我知道如何做弹出窗口和Move-Item,我只是不知道如何让它以我想要的方式工作。有什么想法吗?

弹出代码

 #pop up window letting mechanic know we are waiting for the files to be downloaded before opeing the SMT application
            $wshell = New-Object -ComObject Wscript.Shell
            $wshell.Popup("The EAFR file is still being moved to the correct directory, please wait.",0,"SMT Status",0)

#Move-Item
    $MLMoveDir = "C:\move\data\AutoUpload\"
    Move-Item -LiteralPath ($filePath) $MLMoveDir

2 个答案:

答案 0 :(得分:1)

一种选择是使用WinForms显示请等待对话框,而不是必须由用户解散的弹出窗口。类似的东西:

Add-Type -AssemblyName System.Windows.Forms 
$Form = New-Object system.Windows.Forms.Form
$Label = New-Object System.Windows.Forms.Label
$Form.Controls.Add($Label)
$Label.Text = "Copying file, please wait."
$Label.AutoSize = $True
$Form.Visible = $True
$Form.Update()

#Move-Item
$MLMoveDir = "C:\move\data\AutoUpload\"
Move-Item -LiteralPath ($filePath) $MLMoveDir

#Hide popup
$Form.Close()

答案 1 :(得分:0)

所以你可以做的是将Move-Item作为一个工作,然后做一个While((get-job“jobname”)。state -ne completed){do popup}。我会看起来像这样:

#Move-Item
    $MLMoveDir = "C:\move\data\AutoUpload\"
    $MoveJob = Start-Job -scriptblock {Move-Item -LiteralPath ($filePath) $MLMoveDir}
#Show Popup
    While($movejob.state -ne "Completed"){
        $wshell = New-Object -ComObject Wscript.Shell
        $wshell.Popup("The EAFR file is still being moved to the correct directory, please wait.",1,"SMT Status",0)
    }

这样弹出窗口显示1秒钟,如果移动仍然发生,它会再次显示。我不知道它甚至会消失/重新显示,所以它可能是无缝的。