Benutzer mit den meisten Antworten
PS Remoting: Copy Files

Frage
-
Hallo,
ich möchte per Powershell Remoting Files kopieren kopieren.
Mir steht nur der Standard WinRM Port zur Verfügung, so dass SMB, WMI, SSH etc. nicht funktioniert.
Kennt jemand einen Trick bzw. ein Modul mit dem dies mit Remote Session möglich ist?
PS: PowerShell 3.0 bietet leider IMHO diesbezüglich auch nichts :-(
Gruss Olaf
Antworten
-
Du kannst eine Datei (auch eine binäre) mit Get-Content einlesen und diese dann wieder mit Set-Content herausschreiben ;-))
Die Datei muss dabei natürlich in den Speicher passen!get-help > c:\temp\help.txt # ganze Textdatei einlesen (-ReadCount 0) und wieder abspeichern Get-Content c:\temp\help.txt -ReadCount 0 | Set-Content c:\temp\help2.txt # Get-Content und Set-Content unterstützen den Parameter -Encoding wenn dieser # auf Byte gesetzt wird, kann man Binäre Dateien einlesen und speichern ohne # das diese geändert werden. # ganze binärdatei einlesen (-ReadCount 0) und wieder abspeichern mit Set-Content und -encoding byte Get-Content -Encoding Byte c:\temp\Bild.bmp -ReadCount 0 | Set-Content -Encoding byte c:\temp\Bild2.bmp
Um das ganze Remote durchzuführen nutzt du natürlich Invoke-Command -Scriptblock -Computername dazu !
Das ganze ist etwas langsam aber es geht!
Mit Invoke-Command und dem Parameter kannst du -Scriptblock müsstes du auch .NET Klassen nutzen können (probieren).
Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
- Bearbeitet Peter Kriegel Dienstag, 24. Juli 2012 11:13
- Als Antwort markiert Denniver ReiningMVP, Moderator Mittwoch, 25. Juli 2012 10:30
Alle Antworten
-
Du kannst eine Datei (auch eine binäre) mit Get-Content einlesen und diese dann wieder mit Set-Content herausschreiben ;-))
Die Datei muss dabei natürlich in den Speicher passen!get-help > c:\temp\help.txt # ganze Textdatei einlesen (-ReadCount 0) und wieder abspeichern Get-Content c:\temp\help.txt -ReadCount 0 | Set-Content c:\temp\help2.txt # Get-Content und Set-Content unterstützen den Parameter -Encoding wenn dieser # auf Byte gesetzt wird, kann man Binäre Dateien einlesen und speichern ohne # das diese geändert werden. # ganze binärdatei einlesen (-ReadCount 0) und wieder abspeichern mit Set-Content und -encoding byte Get-Content -Encoding Byte c:\temp\Bild.bmp -ReadCount 0 | Set-Content -Encoding byte c:\temp\Bild2.bmp
Um das ganze Remote durchzuführen nutzt du natürlich Invoke-Command -Scriptblock -Computername dazu !
Das ganze ist etwas langsam aber es geht!
Mit Invoke-Command und dem Parameter kannst du -Scriptblock müsstes du auch .NET Klassen nutzen können (probieren).
Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
- Bearbeitet Peter Kriegel Dienstag, 24. Juli 2012 11:13
- Als Antwort markiert Denniver ReiningMVP, Moderator Mittwoch, 25. Juli 2012 10:30
-
Hallo Peter,
Habe mal testweise mit Deinem Ansatz damit einen Ordner mit ca. 10MB (68 Dateien, 11Ordner) kopiert.
Funktioniert soweit. Habe allerdings nach ca. 10min abgebrochen, da die Performance grottenschlecht ist.
Man könnte sicherlich vorher noch zippen, ist aber auch nicht optimal.
Ist also so nicht zu gebrauchen und ich werde mich wohl um eine andere Lösung bemühen müssen.
Aber danke trotzdem!
Gruss Olaf
- Bearbeitet Olaf.Stagge Dienstag, 24. Juli 2012 13:00
-
Du musst immer bedenken das WinRM über HTTP arbeitet!
Das heisst, das Intern immer nur Text verarbeitet wird (die Bytes werden als Buchstaben transportiert!).
Ich kenne sonnst nichts schnelleres über WinRM!Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '- Als Antwort markiert Olaf.Stagge Mittwoch, 25. Juli 2012 07:21
- Tag als Antwort aufgehoben Denniver ReiningMVP, Moderator Mittwoch, 25. Juli 2012 10:30