4

選択したソース ディスクからターゲット ディスクにユーザー プロファイルをコピーする 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()
}
4

2 に答える 2