選択したソース ディスクからターゲット ディスクにユーザー プロファイルをコピーする GUI を使用して、powershell スクリプトを作成しています。VS Community 2019 を使用して、XAML で GUI を作成しました。スクリプトは次のように機能します。コピー元ディスク、コピー先ディスク、ユーザー プロファイル、およびコピーするフォルダーを選択します。「開始」ボタンを押すと、Runspace が作成される Backup_data という関数が呼び出されます。この実行空間には、選択したものを引数として持つ小さなCopy-Item があります。
スクリプトは正常に動作し、必要なすべてのアイテムが正しくコピーされます。問題は、コピー中に 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()
}