Копирование Powershell из linux samba в папку локального сервера Windows - PullRequest
0 голосов
/ 02 апреля 2019

Мне нужно скопировать файл с сервера самбы Linux на различные Windows Server 2008. Общая папка имеет определенный логин и доступна только для чтения. Я могу получить доступ и скопировать общий файл с помощью проводника Windows без проблем.

Но при использовании Powershell для копирования файла всегда выдается ошибка, как показано ниже. Я пытался использовать Copy-item, 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 ... Copy-Item: путь не найден ...

Итак, я попытался добавить параметр учетных данных

    $credencial = New-PSSession -ComputerName "serverhostname" -Credential "serverhostname\sharedfolder"
    Copy-Item -Path "$downloadSource" -Destination ".\$arqAgenteZabbix" -ToSession $credencial

Но получил эту ошибку после ввода моего пароля:

"New-PSSession: [pxl0mon00013] Не удалось подключиться к удаленному серверу> имя_хоста ... 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\

, что привело к:

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. Затем я смог отобразить содержимое общей папки, как и ожидалось.

    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 смог найти общую папку. Но мне нужно его скопировать без необходимости открывать проводник.

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Мне наконец-то удалось успешно скопировать общий файл относительно простым способом.Я использовал команду «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

Теперь новый вызов ... зашифруйте пароль в виде открытого текста.

0 голосов
/ 02 апреля 2019

Вы можете предоставить альтернативные учетные данные с Invoke-Command:

Invoke-Command -ScriptBlock {
$arq = "file.zip"
$downloadSource = "\\domain.or.ip\sharedfolder\$arq"
echo $downloadSource
Copy-Item -Path "$downloadSource" -Destination ".\$arqAgenteZabbix"
} -Credential $Cred
...