Я написал утилиту для выполнения этого из C # до того, как PowerShell получил поддержку, используя буфер для отправки фрагментов файла, а затем повторной сборки на удаленной машине с помощью вызовов WinRM. Это немного круто, и я не тестировал его более чем на 100 МБ, но до этого он работал очень хорошо. Вы можете посмотреть файл C # здесь и скопировать соответствующие фрагменты PowerShell и попробовать это ... https://github.com/NaosProject/Naos.WinRM/blob/master/Naos.WinRM/Naos.WinRM.cs
Не удается скопировать файлы в PowerShell с помощью командлета PSSession и Copy-Item без ошибки вызова метода
747
cyborgcommando0
У меня есть сценарий PowerShell, который пытается перенести файлы со старой машины на новую. Это происходит в Windows 10 с PowerShell v5. Для этого я бы предпочел использовать PSSession для передачи файлов. Однако некоторые файлы выдают следующую ошибку:
Copy-Item : Method invocation failed because [System.IO.MemoryStream] does not contain a method named 'new'. At C:\Users\username\Desktop\Import-ComputerData.ps1:153 char:13 + Copy-Item -Path "C:\users\$UserName\Desktop" -Destination ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Write-Error], RuntimeException + FullyQualifiedErrorId : System.Management.Automation.RuntimeException,WriteException
Вот соответствующий код, вызывающий это:
$PSSession = New-PSSession -Computername $ComputerName -ErrorAction SilentlyContinue -ErrorVariable PSSessionError ... Copy-Item -Path "C:\users\$UserName\Desktop" -Destination "C:\users\$UserName\" -Recurse -FromSession $PSSession -PassThru -Force Copy-Item -Path "C:\users\$UserName\Documents" -Destination "C:\users\$UserName\" -Recurse -FromSession $PSSession -PassThru -Force Copy-Item -Path "C:\users\$UserName\Favorites" -Destination "C:\users\$UserName\" -Recurse -FromSession $PSSession -PassThru -Force Copy-Item -Path "C:\users\$UserName\Pictures" -Destination "C:\users\$UserName\" -Recurse -FromSession $PSSession -PassThru -Force Copy-Item -Path "C:\users\$UserName\Downloads" -Destination "C:\users\$UserName\Downloads\Old Downloads" -Recurse -FromSession $PSSession -PassThru -Force ... Remove-PSSession $PSSession
Сценарий запускается на новом ПК, получающем файлы со старой машины. Вышеупомянутая ошибка происходит только во время процесса копирования. Я думал, что причина была сужена до файлов, загружаемых из Интернета, и мне нужно было «разблокировать», так как вся папка «Загрузки» не передавалась.
Я попытался добавить следующий код перед своими командлетами Copy-Item, и все еще получаю те же ошибки:
Invoke-Command -Session $PSSession -ScriptBlock { # This unblocks all internet downloaded files. Only use on trusted files. Get-ChildItem "c:\users\$UserName\*" -Recurse | Unblock-File }
Любое понимание того, как обойти это, будет оценено.
У вас есть `:: new` где-нибудь в коде, который вы не включили в свой пост? Как часть потока памяти? Если вы используете `[System.IO.MemoryStream] :: new`, попробуйте вместо этого использовать` [System.IO.MemoryStream] `.
root 7 лет назад
0
@root У меня нет такого фрагмента кода в моем коде. Ошибка появляется как часть процесса копирования, и соответствующие файлы загружаются из Интернета или с другого компьютера.
cyborgcommando0 7 лет назад
0
Я спрашиваю из-за некоторых комментариев здесь: https://sharepointstew.wordpress.com/2016/02/26/large-file-upload-in-sharepoint-online-with-csom-powershell/. Они также говорят о размере файла, способствующем ошибке.
root 7 лет назад
0
@root Возможно, это был случай повторного использования этого фрагмента, но я столкнулся с той же самой ошибкой сегодня, когда некоторые файлы не передаются размером менее 1 КБ. Я не нашел ссылку, в которой я уверен, но я все еще думаю, что она может быть связана с Интернетом или «недоверенными» файлами из источника, отличного от исходного компьютера.
cyborgcommando0 7 лет назад
0
1 ответ на вопрос
0
wlscaudill
Похожие вопросы
-
6
Хорошее руководство по PowerShell, начало работы с более продвинутым использованием
-
5
Отключение звукового сигнала окна cmd
-
3
Powershell пинг до бесконечности
-
-
5
Сочетание клавиш для вставки в командной строке Windows
-
5
Какие преимущества может получить средний гик от Powershell?
-
1
Powershell: выполнить операцию для всех файлов в каталоге (foreach)
-
1
Выделение Powershell / CMD для копирования правой кнопкой мыши в Vista
-
3
Что такое Windows PowerShell?
-
5
Как сделать скрипт Powershell (или другой) для изменения разрешения экрана?
-
5
Получить текущий UNC-путь из локального пути в powershell