С# + PowerShell скопировать файл

178
09 августа 2018, 18:40

Есть файл, задача стоит перекинуть этот файл на другой компьютер через powershell + C# перекинуть надо частями, по 1кб

Я делаю так: считываю кусок файла в массив байтов, дальше преобразую этот массив в строку, и через командлет Add-Content записываю в файл, но у меня выходит в несколько раз больше на выходе файл, словно сначала я копирую первый кусок, потом дописывается первый+второй, потом дописывается первый+второй+третий и т.д. При том я дэбажил смотрел каждое считывание строку, она нормальная, не сказать что каждая последующая совмещает предыдущую. Если использую командлет Set-Content, то конечно же на выходе в файле последний кусок. Подскажите, пожалуйста, где у меня ошибка

using (PowerShell ps = PowerShell.Create())
{
        using (FileStream fs = new FileStream(configuration.FilePath, FileMode.Open, FileAccess.Read))
        {
            int chunkSize = 1024;
            byte[] buffer = new byte[chunkSize];
            while (true)
            {
                int readed = fs.Read(buffer, 0, chunkSize);
                if (readed == 0)
                    break;
                string fileChunk = Convert.ToBase64String(buffer, 0, readed);
                string script = @"
                $Username = '" + configuration.Login + @"'
                $Password = '" + configuration.Password + @"'
                $SecurePass = ConvertTo-SecureString -AsPlainText $Password -Force
                $Cred = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$SecurePass
                $DataDecoded = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String('" + fileChunk + @"'))
                Invoke-Command {$using:DataDecoded | Add-Content -Path C:\Test\Script1.ps1} -ComputerName " + configuration.Ip + @" -Credential $Cred
                ";
                ps.AddScript(script);
                ps.Invoke();
            }
        }
    }
}
Answer 1

Нашел ошибку, возможно кому-то пригодится

Я постоянно выполнял скрипт в одной сессии Powershell, переставил PowerShell.Create() перед самым скриптом и все начало нормально добавлять, правда сейчас другая проблема: новый кусок вставляет с новой строки даже если это продолжение предыдущей(( Возможно это подкорректировать?

READ ALSO
Как проверить динамически созданные radiobuttons

Как проверить динамически созданные radiobuttons

Пишу клиентскую часть обычных тестов(викторины), где динамически, в зависимости от кол-ва вариантов ответов, создаются radiobuttonВ какой способ...

270
Итерация по всем точкам внутри GraphicsPath

Итерация по всем точкам внутри GraphicsPath

Товарищи, возник такой вопрос: Положим, мы имеем некий GraphicsPathНеобходимо каким-то образом достать из него все точки с целыми координатами,...

158
Распознание текста с картинки

Распознание текста с картинки

Как очень качественно распознать текст с помощью Tesseract или ему подобных ?

134
Можно ли поставить Visual Studio 2017 оффлайн?

Можно ли поставить Visual Studio 2017 оффлайн?

Привет есть офлайн установщий хочу поставить C# только можно без интеренета это сделать?

140