Ich schreibe ein PowerShell- Skript, das ich von Server A ausführen möchte. Ich möchte eine Verbindung zu Server B herstellen und eine Datei als Backup auf Server A kopieren.
Wenn dies nicht möglich ist, möchte ich von Server A aus eine Verbindung zu Server B herstellen und eine Datei in ein anderes Verzeichnis in Server B kopieren.
Ich sehe den Copy-Item
Befehl, aber ich sehe nicht, wie ich ihm einen Computernamen geben soll.
Ich hätte gedacht, ich könnte so etwas tun
Copy-Item -ComputerName ServerB -Path C:\Programs\temp\test.txt -Destination (not sure how it would know to use ServerB or ServerA)
Wie kann ich das machen?
powershell
powershell-2.0
chobo2
quelle
quelle
Antworten:
Dies funktioniert nur, wenn eine PowerShell-Sitzung unter dem Benutzer ausgeführt wird, der über Rechte für beide Administratorfreigaben verfügt.
Ich schlage vor, die reguläre Netzwerkfreigabe auf Server B mit schreibgeschütztem Zugriff auf alle Benutzer zu verwenden und einfach anzurufen (von Server A):
quelle
Copy-Item -FromSession
).Ab PowerShell Version 5 (in Windows Server 2016 enthalten, als Teil von WMF 5 für frühere Versionen herunterladbar ) ist dies mit Remoting möglich. Dies hat den Vorteil, dass es auch dann funktioniert, wenn Sie aus irgendeinem Grund nicht auf Freigaben zugreifen können.
Damit dies funktioniert, muss in der lokalen Sitzung, in der das Kopieren gestartet wird, PowerShell 5 oder höher installiert sein. Die Remote - Sitzung ist nicht brauchen , um Powershell 5 installiert - es arbeitet mit Powershell - Versionen so niedrig wie 2 und Windows Server - Versionen so günstig wie 2008 R2. [1]
Erstellen Sie von Server A aus eine Sitzung zu Server B:
Und dann noch von A:
Das Kopieren von Elementen nach B erfolgt mit
-ToSession
. Beachten Sie, dass in beiden Fällen lokale Pfade verwendet werden. Sie müssen verfolgen, auf welchem Server Sie sich befinden.[1]: Achten Sie beim Kopieren von oder auf einen Remote-Server, auf dem nur PowerShell 2 installiert ist, auf diesen Fehler in PowerShell 5.1. Dies bedeutet zum Zeitpunkt des Schreibens, dass das rekursive Kopieren von Dateien nicht funktioniert
-ToSession
und das Kopieren anscheinend nicht funktioniert alle mit-FromSession
.quelle
scp
überssh
auf Linux ... keine Notwendigkeit , mit lästigen Aktien zu stören!Verwenden Sie
net use
oderNew-PSDrive
, um ein neues Laufwerk zu erstellen:New-PsDrive: Erstellen Sie ein neues PsDrive, das nur in der PowerShell-Umgebung sichtbar ist:
Nettonutzung: Erstellen Sie ein neues Laufwerk, das in allen Teilen des Betriebssystems sichtbar ist.
quelle
New-PSDrive : A specified logon session does not exist. It may already have been terminated
-> Ich denke, eine vorherige Sitzung läuft noch -> Also habe ich versucht zu verwendenRemove-PSDrive
-> es funktioniert immer noch nicht. Hatnet use <driveLetter> /delete
auch nicht geholfen. Kann ich diesen Befehl auch in einer Software-Build-Konfiguration ausführen?New-PSDrive
zweimal zu laufen, die Sie haben solltenA drive with the name 'Y' already exists.
Nur für den Fall, dass für den Zugriff auf die Remote-Datei Ihr Berechtigungsnachweis erforderlich ist, können Sie mit dem Cmdlet New-Object ein System.Net.WebClient- Objekt generieren, um die Datei remote zu kopieren
Wenn Sie eine Datei hochladen müssen, können Sie UploadFile verwenden:
quelle
Keine der oben genannten Antworten hat bei mir funktioniert. Ich bekam immer wieder diesen Fehler:
Also das hat es für mich:
Dann habe ich von meinem Host auf meinem Computer in der Run-Box Folgendes getan:
quelle