2017-02-10 3 views
0

OK, so unten ist mein kleines Skript, das ich habe, dass Dateien von meinem lokalen Laufwerk auf einen Remote-Server mit einem lokalen Server Admin-Benutzer kopieren sollte.Kopieren von Dateien über das Netzwerk

$User = "SERVER-NAME\MyUser" 
$Password = "Password" 

$net = new-object -ComObject WScript.Network 
$net.MapNetworkDrive("X:", "\\SERVER-NAME\c$\MyTestFolder\", $false, $User, $Password) 
Copy-Item -Path "D:\Path\To\Copy\From" -Destination "X:\" -Recurse -Force -PassThru -Verbose 

Aus irgendeinem Grund habe ich die folgende Störung erhalte, obwohl der Server von meiner Maschine erreichbar ist:

Exception calling "MapNetworkDrive" with "5" argument(s): "The network path was not found." 
+0

Warum in erster Linie das Laufwerk zuordnen? Wenn Sie auf die Freigabe mit UNC zugreifen können, verwenden Sie den UNC-Pfad und übergeben die Anmeldeinformationen an "Copy-Item". – Fairy

+0

Versuchen Sie das Dollarzeichen in 'c $' mit einem Backtick zu entkommen. – vonPryz

+0

@Fairy Ich versuchte das in einer früheren Version des Skripts, aber als ich versuchte, die Anmeldeinformationen zu übergeben, die ich bekam. 'Der FileSystem-Anbieter unterstützt nur die Anmeldeinformationen für das Cmdlet New-PSDrive.' – Andrew

Antwort

0

So scheint es, dass das Skript in der Lage ist, Dateien kopieren nur, wenn der Ordner war tatsächlich über das Netzwerk freigegeben (Ordnereigenschaften -> Freigabe -> Erweiterte Freigabe). Kein tatsächlicher Fernzugriff auf ein Dateisystem (was irgendwie enttäuschend ist). Hier ist die vereinfachte Version des Skripts ich am Ende mit:

$User = "SERVER-NAME\AdminUser" 
$Password = "Password" 

$net = new-object -ComObject WScript.Network 
$net.MapNetworkDrive("x:", "\\SERVER-NAME\TestFolder", $false, $User, $Password) 
Copy-Item -Path "D:\Path\To\Copy\From" -Destination "x:\" -Recurse -Force -PassThru 
$net.RemoveNetworkDrive("x:", 0) 
0

try Laufwerk mit neuen psdrive zu erstellen, wie folgt aus:

$userCRED = "SERVER-NAME\MyUser" 
$pass="Password" 


$passCRED = ConvertTo-SecureString -String $pass -AsPlainText -Force 
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $userCRED, $passCRED 

$DestinationExport="\\SERVER-NAME\c$\MyTestFolder" 
New-PSDrive -Name X -PSProvider filesystem -Root $DestinationExport -Credential $cred 

Copy-Item -Path "D:\Path\To\Copy\From" -Destination "X:\" -Recurse -Force -PassThru -Verbose 

Remove-PSDrive -Name X 
Verwandte Themen