4

ターゲット マシンでスクリプトを実行できる Windows サービス アプリケーションを使用しています。私がしなければならないことの 1 つは、ホスト マシンから別のユーザーのターゲット マシンにファイルをコピーすることです。いくつかの解決策を検討しましたが、まだ良い解決策が見つかりません。私が試したすべてをリストしています。誰かが別の/より良い解決策を持っていれば幸いです

  • start-bitstransfer: このサービスは、システム アカウントで実行されます。そのため、システム アカウントのサービスのみが使用できます。
  • get-content/set-content: ターゲットへの psession を確立し、セッション内で set-content を使用します。このアプローチは大量のメモリを消費し、時間がかかります。1.02 MB のファイルの場合、2 分以上かかりました。

    測定コマンド{$outp = icm -Session $s -ScriptBlock {get-content C:\Programdata\karan\bigfile.txt}; $outp > bfile.txt}

    TotalMinutes      : 2.20191604
    TotalSeconds      : 132.1149624
    TotalMilliseconds : 132114.9624
    

    大きなファイルの場合、ファイルをチャンクでロードしてコピーする必要があり、さらに時間がかかる可能性があります

  • PowerShell 3.0 では、別の資格情報でネットワーク ドライブをマッピングした後に Copy-Item を使用できます。ただし、複数のユーザーを同時に使用することはできません。これは、自動化の目的を打ち負かす New-PSDrive を使用したネットワーク ドライブのマッピングに関する問題

  • Web サーバーを実行し、http get/post を実行します。これは最も速く確実ですが、ポートとファイアウォールの問題を開きます。
4

1 に答える 1

0

Robocopy が最速の方法です。Start-Process コマンドを使用して、別の資格情報で Robocopy を起動します。

 Start-Process -FilePath "$env:SystemRoot\system32\WindowsPowerShell\v1.0\powershell.exe" -ErrorAction SilentlyContinue -windowstyle hidden -Credential $credentials -ArgumentList ("-NoLogo -NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy ByPass",“Robocopy <command line options>”)

毎回異なる資格情報を使用して、コンピューターから別のコンピューターにファイルをコピーする必要がある理由がわかりません。PowerShell のこの手法は機能するはずですが、単一のアカウントに両方の場所への適切なアクセスを許可することで解決できる可能性があります

于 2015-05-18T16:40:49.853 に答える