Я работаю над приложением службы Windows, которое может запускать сценарии на целевой машине. Одна из вещей, которые мне нужно сделать, это скопировать файлы с моего хост-компьютера на целевую машину для разных пользователей. Я изучил несколько решений, но пока не нашел хорошего. Я перечисляю все, что я пробовал. Был бы признателен, если бы у кого-то было другое/лучшее решение
- start-bitstransfer: эта служба работает под системной учетной записью. Таким образом, его могут использовать только службы под системной учетной записью.
get-content/set-content: установите pssession для цели и используйте set-content в рамках сеанса. Этот подход потребляет много памяти и требует времени. Для файла размером 1,02 МБ потребовалось более 2 минут.
команда измерения {$ outp = icm -Session $s -ScriptBlock {получить содержимое C:\Programdata\karan\bigfile.txt}; $outp > bfile.txt}
TotalMinutes : 2.20191604 TotalSeconds : 132.1149624 TotalMilliseconds : 132114.9624
Для больших файлов файл должен быть загружен кусками и скопирован, что может занять еще больше времени.
С Powershell 3.0 вы можете использовать Copy-Item после сопоставления сетевого диска с другими учетными данными. Но вы не можете использовать несколько пользователей одновременно, что превосходит цель автоматизации сетевые диски с помощью New-PSDrive
- Запустите веб-сервер и выполните http get/post. Это самый быстрый и надежный способ, но мы займемся открытием портов и проблемами с брандмауэром.