2013-02-01 16 views
16

मैं कमांड के साथ एक और दूरस्थ मशीन के लिए रिमोट मशीन से Copy-Item उपयोग करने के लिए कोशिश कर रहा हूँ:नेटवर्क से Powershell कॉपी-मद पर की आवश्यकता है ड्राइव

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

मैं लगातार त्रुटि हो रही है "Cannot find Path "\\machine1\abc\123\log 1.zip"

मैं उस पथ तक पहुंच सकते हैं और मैन्युअल रूप से वहां से कॉपी कर सकते हैं।

मैं पावरसीएलआई को व्यवस्थापक के रूप में खोल रहा हूं और इस स्क्रिप्ट को चला रहा हूं ... मैं बिल्कुल यहां फंस गया हूं और यह सुनिश्चित नहीं करता कि इसे कैसे हल किया जाए।

+1

यदि आप 'Get-ChildItem -Path "चलाते हैं \\ machine1 \ abc \ 123" क्या यह' लॉग 1.zip' के लिए प्रविष्टि प्रदर्शित करता है या क्या यह कोई त्रुटि प्रदर्शित करता है? साथ ही, एक छिपी हुई फाइल 'लॉग 1.zip' है? – BACON

उत्तर

22

ऐसा लगता है कि यह PowerShell v3 पर काम करता है। मेरे पास परीक्षण करने के लिए v2 आसान नहीं है, लेकिन दो विकल्प हैं जिन्हें मैं जानता हूं, जिन्हें काम करना चाहिए। सबसे पहले, आप 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 

यह कुछ आप एक बहुत तैयार करने वाले हैं है, तो आप भी एक समारोह में इस लपेट सकता है:

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 
} 

वैकल्पिक रूप से, आप स्पष्ट रूप से निर्दिष्ट कर सकते हैं प्रत्येक पथ के साथ प्रदाता:

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

आखिरी बिट, 'माइक्रोसॉफ्ट.पावरशेल.कोर \ फाइलसिस्टम ::' तैयार करना, मेरे लिए काम किया। धन्यवाद। – blachniet

+2

एफवाईआई, आप 'powerhell.exe -version 2' चलाकर v2 मोड में पावरहेल 3 चला सकते हैं, आप '$ Host.Version' प्रॉपर्टी को चेक करके इसे सत्यापित कर सकते हैं। – qJake

+0

स्वीट! मुझे नहीं पता था कि आप PowerShell 3 के भीतर से v2 चला सकते हैं। मैं स्क्रिप्ट का परीक्षण कर रहा हूं जिसे एक अलग VM में v2 पर चलाने की आवश्यकता है, इसलिए यह युक्ति चीजों को * अधिक * आसान बनाती है। पारितोषिक के लिए धन्यवाद! – KevinD

0

यह मेरे लिए सारा दिन काम करता है:

$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 

चीजों को देखने के लिए: कॉपी-आइटम वस्तु के रूप में अंतिम आइटम को परिभाषित करता है। आपको उस फ़ोल्डर की सामग्री की प्रतिलिपि बनाने के लिए \ *

यदि आप फ़ोल्डर को प्रतिलिपि बना रहे हैं तो यह स्वयं को एक नए स्थान पर कॉपी कर रहा है, तो आपको सामग्री घोषित करने की आवश्यकता नहीं है।

संबंधित मुद्दे