我正在使用 GUI 创建一个 powershell 脚本,它将用户配置文件从选定的源磁盘复制到目标磁盘。我使用 VS Community 2019 在 XAML 中创建了 GUI。该脚本的工作原理如下:您选择源磁盘、目标磁盘、用户配置文件和要复制的文件夹。当您按下“开始”按钮时,它会调用一个名为 Backup_data 的函数,在其中创建一个运行空间。在这个运行空间中,只有一个小的复制项,其中包含您选择的参数。
该脚本工作正常,所有想要的项目都被正确复制。问题是 GUI 在复制过程中冻结(没有“无响应”消息或其他任何信息,它只是完全冻结;无法单击任何地方,无法移动窗口)。我已经看到使用运行空间可以解决这个问题,但对我来说却不然。我错过了什么吗?
这是函数Backup_Data:
Function BackupData {
##CREATE RUNSPACE
$PowerShell = [powershell]::Create()
[void]$PowerShell.AddScript( {
Param ($global:ReturnedDiskSource, $global:SelectedUser, $global:SelectedFolders, $global:ReturnedDiskDestination)
##SCRIPT BLOCK
foreach ($item in $global:SelectedFolders) {
Copy-Item -Path "$global:ReturnedDiskSource\Users\$global:SelectedUser\$item" -Destination "$global:ReturnedDiskDestination\Users\$global:SelectedUser\$item" -Force -Recurse
}
}).AddArgument($global:ReturnedDiskSource).AddArgument($global:SelectedUser).AddArgument($global:SelectedFolders).AddArgument($global:ReturnedDiskDestination)
#Invoke the command
$PowerShell.Invoke()
$PowerShell.Dispose()
}
Run Code Online (Sandbox Code Playgroud)