#powershell #powershell-2.0 #samba
#powershell #powershell-2.0 #samba
Вопрос:
Мне нужно скопировать файл с сервера Linux samba на другой Windows Server 2008. Общая папка имеет определенный логин и доступна только для чтения. Я могу получить доступ к общему файлу и скопировать его с помощью проводника Windows без проблем.
Но при использовании PowerShell для копирования файла он всегда выдает ошибку, как показано ниже. Я пытался использовать Copy-item, robocopy и bitstransfer, но все они выдают ошибку.
$arq = "file.zip"
$downloadSource = "\domain.or.ipsharedfolder$arq"
echo $downloadSource
Copy-Item -Path "$downloadSource" -Destination ".$arqAgenteZabbix"
этот метод выдает следующую ошибку
Копировать элемент: доступ запрещен
- Информация о категории: Разрешено: (domain.or.ipsharedfolderfile.zip:Строка) [Copy-Item], исключение неавторизованного доступа
- Ошибка с полным разрешением: ItemExistsUnauthorizedAccessError, Microsoft.PowerShell.Команды.CopyItemCommand … Копировать-элемент: путь не найден…
Итак, я попытался добавить параметр учетных данных
$credencial = New-PSSession -ComputerName "serverhostname" -Credential "serverhostnamesharedfolder"
Copy-Item -Path "$downloadSource" -Destination ".$arqAgenteZabbix" -ToSession $credencial
Но получил эту ошибку после ввода моего пароля:
«New-PSSession: [pxl0mon00013] Не удается подключиться к удаленному серверу > serverhostname… WinRM не удается обработать запрос … ошибка 0x80090311…
- Информация о категории: Ошибка открытия (System.Manageme….RemoteRunspace:удаленное пространство запуска) [New-PSSession], PSRemotin gTransportException
- Ошибка с полным разрешением: ошибка аутентификации, ошибка PSSessionOpenFailed
Затем я решил попробовать BitsTransfer.
Import-Module bitstransfer
$arq = "file.zip"
$downloadSource = "\domain.or.ipsharedfolder$arq"
Start-BitsTransfer -DisplayName DownloadName `
-TransferType Download `
-Source $downloadSource `
-Destination .$arq
И это также выдало мне ошибку:
Запуск-передача битов: путь не найден ‘domain.or.ipsharedfolderfile.zip ‘ не существует.
- Информация о категории: ObjectNotFound: (domain.or.ipsharedfolderfile.zip:Строка) [Start-BitsTransfer], родительское исключение ontainsErrorRecordException
- Ошибка с полным разрешением: путь не найден, Microsoft.Фоновая интеллектуальная передача.Управление.NewBitsTransferCommand
Как я могу скопировать этот файл, пожалуйста?
РЕДАКТИРОВАТЬ — 20190403
Я попробовал следующее:
get-childitem \domain.or.ipsharedfolder
что привело к:
Get-ChildItem : Cannot find path '\domain.or.ipsharedfolder' because it does not exist.
At line:1 char:3
ls <<<< \domain.or.ipsharedfolder
CategoryInfo : ObjectNotFound: (domain.or.ipsharedfolder:String) [Get-ChildItem], ItemNotFo
undException
FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
Итак, я открыл проводник и вставил domain.or.ip sharedfolder в адресную строку. Он запросил у меня имя пользователя и пароль, после чего файл был доступен.
После этого я вернулся в PowerShell и попробовал еще раз тот же командлет Get-ChildItem. Затем я смог перечислить содержимое общей папки, как и ожидалось.
Directory: \domain.or.ipsharedfolder
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 01/04/2019 10:06 3896455 file.zip
Наконец, я попытался:
Copy-Item -Path \domain.or.ipsharedfolderfile.zip -Destination ".file.zip"
И это было скопировано успешно.
Что ж, только после того, как я ввел свои регистрационные данные в проводнике, PowerShell смог найти общую папку. Но мне нужно, чтобы она копировалась без необходимости открывать проводник.
Ответ №1:
Вы можете предоставить альтернативные учетные данные с помощью Invoke-Command
:
Invoke-Command -ScriptBlock {
$arq = "file.zip"
$downloadSource = "\domain.or.ipsharedfolder$arq"
echo $downloadSource
Copy-Item -Path "$downloadSource" -Destination ".$arqAgenteZabbix"
} -Credential $Cred
Комментарии:
1. Я попробовал это, и это выдает мне эту ошибку: Invoke-Command -Credential $credencial -ScriptBlock { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Информация о категории: Недопустимый аргумент: (:) [Invoke-Command], исключение привязки параметров FullyQualifiedErrorId: неоднозначный параметр, Microsoft. PowerShell. Команды. InvokeCommandCommand
Ответ №2:
Мне наконец удалось успешно скопировать общий файл относительно простым способом. Я использовал команду «NET USE», чтобы открыть сеанс и скопировать файл, как показано ниже.
$arq = "file.zip"
$downloadSource = "\domain.or.ipsharedfolder"
net use $downloadSource /persistent:no /user:[user] [pass]
Copy-Item -Path "$downloadSource$arq" -Destination ".$arq"
net use $downloadSource /delete
Теперь новая задача… зашифруйте пароль открытым текстом.