2014-12-31 5 views
6

मुझे पावरशेल का उपयोग कर स्थानीय मशीन से दूरस्थ मशीन पर फ़ाइल कॉपी करने की आवश्यकता है। मैं निम्नलिखित आदेश का उपयोग कर दूरस्थ कंप्यूटर से फाइल कॉपी कर सकते हैं:रिमोट मशीन पर फ़ाइल कॉपी करने के लिए पावरशेल कमांड

copy-item -Path d:\Shared\test.txt -Destination \\server1\Shared 

उपरोक्त आदेश फ़ाइल की प्रतिलिपि करने साझा नेटवर्क पथ का उपयोग करता है। मैं नेटवर्क शेयर विकल्प का उपयोग नहीं करना चाहता क्योंकि फ़ोल्डर दूरस्थ मशीन पर साझा नहीं किया जाएगा। मैंने आदेशों का पालन करने की कोशिश की लेकिन काम नहीं कर रहा।

copy-item -Path d:\Shared\test.txt -Destination \\server1\c$\Shared 

Invoke-Command -ComputerName \\server -ScriptBlock { 
    copy-item -Path D:\Shared\test.txt -Destination C:\Shared 
} 

कृपया मुझे बताएं कि यूएनसी पथ के बिना इसे कैसे काम करना है। मेरे पास रिमोट मशीन पर उस फ़ोल्डर पर पूर्ण अनुमतियां हैं I

+2

वास्तव में "काम नहीं कर रहा" मतलब क्या है? क्या आपको एक त्रुटि संदेश मिला? कोई फाइल कॉपी नहीं की गई थी? फाइल को गलत स्थान पर कॉपी किया गया था? गलत फ़ाइल को सही स्थान पर कॉपी किया गया था? कुछ और हुआ? – vonPryz

+2

जब भी Invoke कमांड चलाते हैं तो पथ चल रहे सर्वर से संबंधित होंगे, इसलिए 'D: \ Shared \ test.txt' को यूएनसी पथ – Matt

+0

होना आवश्यक है, मुझे "नेटवर्क पथ नहीं मिला" त्रुटि मिल रही है। –

उत्तर

4

आप एक से दूसरे मेजबान से फ़ाइलों की प्रतिलिपि बनाने या तो दूरस्थ होस्ट पर सक्षम होने के लिए एक साझा फ़ोल्डर होना आवश्यक है यदि आप फ़ाइल पुश करने के लिए करना चाहते हैं:

Copy-Item -Path D:\folder\test.txt -Destination \\server1\remoteshare\ 

या अगर आप चाहते हैं स्थानीय होस्ट पर

Invoke-Command -ComputerName server1 -ScriptBlock { 
    Copy-Item -Path \\localcomputer\localshare\test.txt -Destination C:\Shared\ 
} 

प्रशासनिक शेयर (\\server1\c$) यदि आपके खाते में उस विशेष कंप्यूटर पर व्यवस्थापक विशेषाधिकार है केवल इस्तेमाल किया जा सकता: फ़ाइल को खींचने के लिए।

Invoke-Command -ComputerName \\server -ScriptBlock { 
    $args[0] | Set-Content C:\Shared\test.txt 
    } -ArgumentList (Get-Content D:\Shared\test.txt -Raw) 
+0

मेरे पास दूरस्थ मशीन पर व्यवस्थापक अधिकार हैं और \\ server1 \ c $ काम नहीं कर रहा है त्रुटि प्राप्त करना "नेटवर्क पथ नहीं मिला"। –

+1

@ पारवेन कुमार क्या सर्वर 1 पर विंडोज फ़ायरवॉल एसएमबी कनेक्शन की अनुमति देता है? क्या आप सर्वर 1 पर पोर्ट 445 पर 'टेलनेट' कर सकते हैं? –

3

अगर वहाँ एक सुलभ हिस्सा नहीं है, आप फ़ाइल सामग्री ही एक तर्क स्क्रिप्ट को बनाने के लिए होगा निम्नलिखित करना है:

New-PSDrive -Name X -PSProvider FileSystem -Root \\MyRemoteServer\c$\My\Folder\Somewhere\ 
cd X:\ 
cp ~\Desktop\MyFile.txt .\ 
## Important, need to exit out of X:\ for unmouting share 
cd c:\ 
Remove-PSDrive X 

हर बार काम करता है।

+1

'गेट-कंटेंट' के साथ केवल '-रॉ'' का उपयोग टेक्स्ट फ़ाइलों के लिए ठीक है। द्विआधारी फ़ाइलों के लिए, '-कोडिंग बाइट-रीडकाउंट 0-राउ' का उपयोग करें। या [ReadAllBytes/WriteAllBytes] का उपयोग करें (http://stackoverflow.com/a/17542292/145173)। –

5

छोटा रास्ता मैं यह करने के लिए मिल गया है, के बाद से इस्तेमाल किया जा रहा खाता व्यवस्थापक है,:

+2

आप एक्स: \ निर्देशिका से और उसके लिए बदलने के लिए 'पुश-स्थान' और 'पॉप-स्थान' का उपयोग करने पर विचार कर सकते हैं। यह कोड निष्पादित करने के बाद वर्तमान निर्देशिका को अनमोडिफाइड छोड़ देगा, जिससे इसे किसी फ़ंक्शन या इसी तरह के स्थान पर रखना आसान हो जाता है। – jpmc26

1
Invoke-Command -ComputerName compname -Credential $cred -ScriptBlock { Get-Content C:\myfolder\result.txt } >>res.txt 

नोट C: \ MyFolder \ result.txt दूरस्थ कंप्यूटर

0

पर है यहाँ एक स्क्रिप्ट है कि छोटे फ़ाइलों के लिए मेरे लिए काम किया है। व्यवस्थापक के रूप में चलाएं।

#pre 5.0 powershell copy-item to remote computer 
Write-Host "Remote copy a file" 
$servers = @("server01.dot.com", "server02.dot.com") 
foreach($server in $servers) { 
$username = 'USERNAME' 
$password = 'PASSWORD' 
$pw = ConvertTo-SecureString $password -AsPlainText -Force 
$cred = New-Object Management.Automation.PSCredential ($username, $pw) 
$myfile = [System.IO.File]::ReadAllBytes("C:\Temp\srctest.txt") 
$s = New-PSSession -computerName $server -credential $cred 
Enter-PSSession $s 
Invoke-Command -Session $s -ArgumentList $myfile -Scriptblock {[System.IO.File]::WriteAllBytes("C:\Temp\desttest.txt", $args)} 
Write-Host "Completed" 
Remove-PSSession $s 
} 
संबंधित मुद्दे