2017-05-09 50 views
2

我想從一臺源服務器上遠程複製幾臺IIS服務器上的文件。Powershell遠程文件複製不起作用

sourcepath就像\\server\c$\path\destinationpath的UNC路徑是本地文件夾c:\data\destination\

奇怪的是,當我在本地服務器上運行此,這將很好地工作。

$cmd = $sqlConnection.CreateCommand() 
$cmd.CommandText ="SELECT * from infrastructure" 
$Serverinfo = $cmd.ExecuteReader() 
try 
{ 
    while ($Serverinfo.Read()) 
    { 
     $servername = $Serverinfo.GetValue(1) 
     $location = $Serverinfo.GetValue(2) 
     #Invoke-Command -ComputerName $servername { new-item -Path $Using:destinationpath -name $Using:versionnumber -Itemtype directory } 
     Invoke-Command -ComputerName $servername { Copy-Item -Path $Using:sourcepath -destination $Using:destinationpath } 
     #Invoke-Command -ComputerName $servername {Import-Module WebAdministration ; New-WebApplication -force -Site "Default Web Site" -Name $Using:versionnumber -PhysicalPath $Using:destinationpath$Using:versionnumber } 
    } 
} 
+1

腳本是否會拋出錯誤?如果是這樣,什麼錯誤(粘貼到你的問題)?你在這裏顯示的'try'塊有'catch'塊嗎?如果是這樣,它做了什麼,並且它實際上發生了什麼? –

+0

嗨,完全沒有錯誤:-( –

+0

如果你將代碼簡化爲單一命令,你遇到問題和硬編碼值會發生什麼?你會得到任何錯誤嗎?調用命令-ComputerName「server01」{Copy-項目-Path「\\ server \ c $ \ path \ file.txt」-destination「c:\ data \ destination \」}' –

回答

0

如果沒有捕獲塊以及定義爲其他人說的源和目標路徑,您發佈的內容是不完整的。

但是我可以在這裏看到作爲一個可能的原因,即使你提到所有以上三個約束。

您將面臨憑證委託問題。您正在使用PSRP遠程訪問一臺服務器,並將一個文件複製到該計算機,並且您正在從需要某種身份驗證的UNC路徑獲取源文件。

我可以給你兩個更好的選擇,當然第一次可能是正確的解決方案。

如果您使用PS 5.o或更高版本,則可以使用-ToSession參數Copy-Item cmdlet。

$Session = New-PSSession -ComputerName $ServerName 
Copy-Item -SourcePath \\\Server\c$\path -Destination c:\data\Destination-ToSession $Session 

有關的詳細信息Get-Help Copy-Item

編輯:

第二個:

Copy-Item -Path <Sourcepath> -DestinationPath \\destinataionserver\c$\folder 

從源到目的地通過訪問目的地系統的共享文件夾。

+0

第二個是哪裏?我沒有PS 5.0,我正在運行PS 3。 –