我需要将文件从Linux samba服务器复制到各种Windows Server 2008。 共享文件夹具有特定的登录名,并且是只读的。 我可以使用Windows资源管理器毫无问题地访问和复制共享文件。
但是,当使用Powershell复制文件时,总是出现如下所示的错误。 我已经尝试过使用复制项,robocopy和bitstransfer,但是它们都给出了错误。
$arq = "file.zip"
$downloadSource = "\\domain.or.ip\sharedfolder\$arq"
echo $downloadSource
Copy-Item -Path "$downloadSource" -Destination ".\$arqAgenteZabbix"
此方法给我以下错误
Copy-Item:访问被拒绝 + CategoryInfo:PermissionDenied:(\ domain.or.ip \ sharedfolder \ file.zip:String)[Copy-Item],UnauthorizedAc cessException + FullyQualifiedErrorId:ItemExistsUnauthorizedAccessError,Microsoft.PowerShell.Commands.CopyItemCommand ... 复制项:找不到路径...
所以,我尝试添加凭据参数
$credencial = New-PSSession -ComputerName "serverhostname" -Credential "serverhostname\sharedfolder"
Copy-Item -Path "$downloadSource" -Destination ".\$arqAgenteZabbix" -ToSession $credencial
但是在输入密码后收到此错误:
“ New-PSSession:[pxl0mon00013]无法连接到远程服务器> serverhostname ... WinRM无法处理该请求...错误0x80090311 ... + CategoryInfo:OpenError(System.Manageme .... RemoteRunspace:RemoteRunspace)[New-PSSession],PSRemotin gTransportException + FullyQualifiedErrorId:AuthenticationFailed,PSSessionOpenFailed
然后,我决定试一下BitsTransfer。
Import-Module bitstransfer
$arq = "file.zip"
$downloadSource = "\\domain.or.ip\sharedfolder\$arq"
Start-BitsTransfer -DisplayName DownloadName `
-TransferType Download `
-Source $downloadSource `
-Destination .\$arq
这也给了我一个错误:
Start-BitsTransfer:找不到路径 '\ domain.or.ip \ sharedfolder \ file.zip'不存在。 + CategoryInfo:ObjectNotFound:(\ domain.or.ip \ sharedfolder \ file.zip:String)[Start-BitsTransfer],ParentC ontainsErrorRecordException + FullyQualifiedErrorId:PathNotFound,Microsoft.BackgroundIntelligentTransfer.Management.NewBitsTransferCommand
请问如何复制该文件?
编辑-20190403
我尝试了以下操作:
get-childitem \\domain.or.ip\sharedfolder\
wich导致:
Get-ChildItem : Cannot find path '\\domain.or.ip\sharedfolder\' because it does not exist.
At line:1 char:3
+ ls <<<< \\domain.or.ip\sharedfolder\
+ CategoryInfo : ObjectNotFound: (\domain.or.ip\sharedfolder\:String) [Get-ChildItem], ItemNotFo
undException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
因此,我打开资源管理器并将\ domain.or.ip \ sharedfolder \粘贴到地址栏。它要求我输入用户名和密码,然后该文件可用。 之后,我返回到PowerShell,并再次尝试使用相同的Get-ChildItem cmdlet。然后,我能够按预期列出共享文件夹的内容。
Directory: \\domain.or.ip\sharedfolder
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 01/04/2019 10:06 3896455 file.zip
最后,我尝试了:
Copy-Item -Path \\domain.or.ip\sharedfolder\file.zip -Destination ".\file.zip"
它已成功复制。
好吧,只有在我在资源管理器中输入登录信息后,PowerShell才能够找到共享文件夹。 但是我不需要打开资源管理器就可以复制它。
答案 0 :(得分:0)
您可以使用Invoke-Command
提供备用凭据:
Invoke-Command -ScriptBlock {
$arq = "file.zip"
$downloadSource = "\\domain.or.ip\sharedfolder\$arq"
echo $downloadSource
Copy-Item -Path "$downloadSource" -Destination ".\$arqAgenteZabbix"
} -Credential $Cred
答案 1 :(得分:0)
我终于设法以一种相对简单的方式成功复制了共享文件。我使用“ NET USE”命令打开一个会话并复制文件,如下所示。
$arq = "file.zip"
$downloadSource = "\\domain.or.ip\sharedfolder"
net use $downloadSource /persistent:no /user:[user] [pass]
Copy-Item -Path "$downloadSource\$arq" -Destination ".\$arq"
net use $downloadSource /delete
现在,一个新的挑战...对明文密码进行加密。