none
scp Gegenstück mit Powershell RRS feed

  • Frage

  • Hi, ich versuche Daten zwischen drei Windows Servern auszutauschen und suche einen Weg, wie ich ihn unter Linux mit scp umsetzen würde.

    Ich würde gerne eine bestimmte Datei (C:\Backup\Backup_{DATUM}.7z) ohne Netzwerkfreigabe zu einem anderen Verzeichnis auf einen anderen Server kopieren. Wenn es sein müsste, würde ich den Zwischenschritt akzeptieren, dass ich von dem Server auf dem Server auf dem das PowerShell Script läuft kopieren und von dem aus weiter auf den dritten Server.

    Ich hoffe ich konnte mein Problem ausreichend darstellen und jemand kann mir meine Frage beantworten.

    Donnerstag, 2. April 2015 11:28

Antworten

  • Ich bin davon ausgegangen das du eingebundene Netzlaufwerke meinst.
    Um auf einen Windowsserver zuzugreifen, brauchst du irgend eine Netzwerkfreigabe. Eine Netzwerkfreigabe ist die Erlaubnis für bestimmte Accounts vom Netz aus auf eine lokale Ressource zuzugreifen. Wenn das auch einfach ohne ginge, was wäre dann die Existenzberechtigung von solchen Freigaben oder überhaupt von Benutzerrechten? :)
    Falls der ausführende Account Adminrechte auf den Zielservern hat, kannst du aber auch die Admin-Freigabe benutzen "c$,d$, etc.", diese existieren standardmässig.
     
    Fall du da noch weitere Infos brauchst, würde ich dich bitten, da das hier jetzt doch eher auf die Grundlagen von Windows-Netzwerkkonfiguration abzielt und nichts mit Powershell zu tun hat, das Thema doch im Windows Server Forum zu vertiefen.
     
    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Snippet Manager v3: Link
    (Schneller, besser + einfacher scripten.)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Donnerstag, 2. April 2015 13:13
    Moderator
  • Hallo Nohrolin!

    Das ist keine PowerShell Frage sonder Windows Grundwissen!

    Kennst du Windows?

    Jedes Laufwerk in Windows hat eine, so genannte, Administrative Freigabe, die man benutzen kann ohne eine Freigabe zu erstellen.
    Diese Freigaben sind unsichtbar weil sie ein $ am ende haben.
    Diese Freigaben können meisten auch nur benutzt werden, wenn man Administrator auf dem Rechner ist, der die Freigabe zur Verfügung stellt.

    Unter Windows wird Standardmäßig jede Festplatte freigegeben  C: hat die Freigabe C$, D: hat die Freigabe D$, usw...
    Es gibt noch andere Freigaben für andere zwecke wie IPC$, Admin$ usw....

    Beispiel mit Robocopy. Quelle ist Server1 Laufwerk D: Ziel ist Server3 laufwerk E:

    Robocopy.exe \\Server1\D$\MeinOrdner \\Server3\E$\meinOrdner

    ACHTUNG in PowerShell sind Dollarzeichen $ Sonderzeichen!!!!
    Hier benutzt man am besten die einfachen Anführungsstriche (die in der DOS Konsole nicht funktionieren! Dort benutzt man die Doppelten Anführungsstriche)

    Robocopy.exe '\\Server1\D$\MeinOrdner' '\\Server3\E$\meinOrdner'

    Sieh hier: How to get robocopy running in powershell?

    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    Donnerstag, 2. April 2015 13:10

Alle Antworten

  • Hi,

    sofern Zugriffsrechte kein Problem sind, ist das integrierte Kommandozeilenprogramm Robocopy am schnellsten und sicher für dich auch am einfachsten umzusetzen. Wenn sich Quell+Ziel-Server untereinander erreichen können, kannst du auch ohne Umweg direkt zwischen den beiden kopieren.
    Wenn du es in ein Powershell Script einbauen und mit zusätzlichen Features versehen willst, findest du bei Google unzählige Beispiele.

     

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Snippet Manager v3: Link
    (Schneller, besser + einfacher scripten.)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.


    Donnerstag, 2. April 2015 11:53
    Moderator
  • Hallo Denniver, robocopy hatte ich mir auch schon angesehen. Kannst du mir ein beispiel nennen, wie man das umsetzt? Wenn ich das richtig hatte, kann man das nur auf zwei Wege lösen, beide benötigen meines Wissens nach Netzwerkfreigaben.

    Gruß Nohrolin

    (Die zwei Wege die ich kenne sind: per "net use" ein Laufwerk einbinden oder direkt über eine Netzwerkfreigabe zugreifen)

    Donnerstag, 2. April 2015 12:29
  • Hallo Nohrolin!

    Das ist keine PowerShell Frage sonder Windows Grundwissen!

    Kennst du Windows?

    Jedes Laufwerk in Windows hat eine, so genannte, Administrative Freigabe, die man benutzen kann ohne eine Freigabe zu erstellen.
    Diese Freigaben sind unsichtbar weil sie ein $ am ende haben.
    Diese Freigaben können meisten auch nur benutzt werden, wenn man Administrator auf dem Rechner ist, der die Freigabe zur Verfügung stellt.

    Unter Windows wird Standardmäßig jede Festplatte freigegeben  C: hat die Freigabe C$, D: hat die Freigabe D$, usw...
    Es gibt noch andere Freigaben für andere zwecke wie IPC$, Admin$ usw....

    Beispiel mit Robocopy. Quelle ist Server1 Laufwerk D: Ziel ist Server3 laufwerk E:

    Robocopy.exe \\Server1\D$\MeinOrdner \\Server3\E$\meinOrdner

    ACHTUNG in PowerShell sind Dollarzeichen $ Sonderzeichen!!!!
    Hier benutzt man am besten die einfachen Anführungsstriche (die in der DOS Konsole nicht funktionieren! Dort benutzt man die Doppelten Anführungsstriche)

    Robocopy.exe '\\Server1\D$\MeinOrdner' '\\Server3\E$\meinOrdner'

    Sieh hier: How to get robocopy running in powershell?

    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    Donnerstag, 2. April 2015 13:10
  • Ich bin davon ausgegangen das du eingebundene Netzlaufwerke meinst.
    Um auf einen Windowsserver zuzugreifen, brauchst du irgend eine Netzwerkfreigabe. Eine Netzwerkfreigabe ist die Erlaubnis für bestimmte Accounts vom Netz aus auf eine lokale Ressource zuzugreifen. Wenn das auch einfach ohne ginge, was wäre dann die Existenzberechtigung von solchen Freigaben oder überhaupt von Benutzerrechten? :)
    Falls der ausführende Account Adminrechte auf den Zielservern hat, kannst du aber auch die Admin-Freigabe benutzen "c$,d$, etc.", diese existieren standardmässig.
     
    Fall du da noch weitere Infos brauchst, würde ich dich bitten, da das hier jetzt doch eher auf die Grundlagen von Windows-Netzwerkkonfiguration abzielt und nichts mit Powershell zu tun hat, das Thema doch im Windows Server Forum zu vertiefen.
     
    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Snippet Manager v3: Link
    (Schneller, besser + einfacher scripten.)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Donnerstag, 2. April 2015 13:13
    Moderator
  • Eine Freigabe brauchst du zwingend als Minimum. Ein Laufwerks-Mapping brauchst du nicht unbedingt. Wenn du ein Domänenkonto mit Schreibrechten im Zielverzeichnis hast, kannst du direkt einen UNC-Pfad angeben. Ein (einfaches) Beispiel für einen Robocopy-Aufruf aus PowerShell:

    [CmdletBinding()]
    Param
    (
        [Parameter(Mandatory=$true,Position=0)]
        [ValidateScript({Test-Path $_ -PathType Container})]
        [string]$Path,
    
        [Parameter(Mandatory=$true,Position=1)]
        [ValidateScript({Test-Path $_ -PathType Container})]
        [string]$Destination,
    
        [Parameter(Mandatory=$true,Position=2)]
        [string]$FileSpec
    )
    
    $Cmd = @{
        FilePath = Join-Path ([Environment]::SystemDirectory) -ChildPath 'Robocopy.exe';
        ArgumentList = "$Path $Destination $FileSpec"
    }
    $Return = Start-Process @Cmd -Wait -PassThru
    $Return.ExitCode

    Gruß
    Joachim



    Donnerstag, 2. April 2015 13:26
  • Ok, die administrativen Netzwerkfreigaben hatte ich vollkommen vergessen. 

    Ich denke, dass ich dank eurer Hinweise wieder voran komme.

    Danke und wünsche euch frohe Ostertage.

    Gruß Nohrolin

    Donnerstag, 2. April 2015 14:43