2013-02-01 13 views
16

Próbuję użyć Copy-Item ze zdalnego komputera do innego zdalnego urządzenia za pomocą polecenia:Potrzebujesz pomocy na PowerShell Copy-elementu z sieci napędza

Copy-Item -Path "\\machine1\abc\123\log 1.zip" -Destination "\\machine2\\c$\Logs\" 

jestem stale się błąd „Cannot find Path "\\machine1\abc\123\log 1.zip

I może uzyskać dostęp do tej ścieżki i skopiuj ręcznie z tego miejsca.

Otwieram program PowerCLI jako administrator i uruchamiam ten skrypt ... Jestem całkowicie utknięty i nie wiem, jak go rozwiązać.

+1

Jeśli uruchomisz 'Get-ChildItem -Path" \\ machine1 \ abc \ 123 "' czy wyświetla pozycję dla 'log 1.zip' lub czy wyświetla błąd? Czy jest też ukryty plik 'log 1.zip'? – BACON

Odpowiedz

22

Wydaje się działać tak, jak w PowerShell v3. Nie mam v2 przydatnego do przetestowania, ale są dwie opcje, o których jestem świadomy, które powinny działać. Po pierwsze, można map PSDrives:

New-PSDrive -Name source -PSProvider FileSystem -Root \\machine1\abc\123 | Out-Null 
New-PSDrive -Name target -PSProvider FileSystem -Root \\machine2\c$\Logs | Out-Null 
Copy-Item -Path source:\log_1.zip -Destination target: 
Remove-PSDrive source 
Remove-PSDrive target 

Jeśli jest coś, co zamierzamy zrobić dużo, można nawet owinąć to w funkcję:

Function Copy-ItemUNC($SourcePath, $TargetPath, $FileName) 
{ 
    New-PSDrive -Name source -PSProvider FileSystem -Root $SourcePath | Out-Null 
    New-PSDrive -Name target -PSProvider FileSystem -Root $TargetPath | Out-Null 
    Copy-Item -Path source:\$FileName -Destination target: 
    Remove-PSDrive source 
    Remove-PSDrive target 
} 

Alternatywnie, można jednoznacznie określić dostawcy z każdej ścieżki:

Copy-Item -Path "Microsoft.PowerShell.Core\FileSystem::\\machine1\abc\123\log 1.zip" -Destination "Microsoft.PowerShell.Core\FileSystem::\\machine2\\c$\Logs\" 
+6

Ostatni bit, poprzedzający 'Microsoft.PowerShell.Core \ FileSystem ::', pracował dla mnie. Dzięki. – blachniet

+2

FYI, możesz uruchomić Powershell 3 w trybie v2, uruchamiając 'powershell.exe --version 2', możesz to sprawdzić, zaznaczając właściwość' $ Host.Version'. – qJake

+0

Słodki! Nie wiedziałem, że możesz uruchomić v2 z poziomu PowerShell 3. Testowałem skrypty, które muszą działać na v2 w oddzielnej maszynie wirtualnej, więc ta wskazówka sprawi, że rzeczy * znacznie * będą łatwiejsze. Dzięki za wskazówkę! – KevinD

0

to działa cały dzień dla mnie:

$strLFpath = "\\compname\e$\folder" 
$strLFpath2 = "\\Remotecomputer\networkshare\remotefolder" #this is a second option that also will work 
$StrRLPath = "E:\localfolder" 
Copy-Item -Path "$StrRLPath\*" -Destination "$strLFpath" -Recurse -force -Verbose 

rzeczy do obejrzenia: Kopiuj element definiuj pozycję LAST jako obiekt. do kopiowania zawartości folderu, który POTRZEBUJESZ \ * Jeśli kopiujesz sam folder do nowej lokalizacji, nie musisz deklarować zawartości.

Powiązane problemy