Я хочу закодировать команду powershell (строка (get-date).date
) на base64, чтобы запустить ее через powershell -encodedcommand xxx
.Кодировать строку Unicode на Base64 с VBScript
Использование стандартных методов VBS (или даже https://www.base64encode.org/) Я получаю KGdldC1kYXRlKS5kYXRl
, который не работает.
Используя следующий Powershell скрипт:
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
я получаю KABnAGUAdAAtAGQAYQB0AGUAKQAuAGQAYQB0AGUA
, который работает. Разница заключается в том, что команда сначала кодируется как байты Unicode.
Может ли кто-нибудь предоставить функцию VBS, которая делает это или эквивалент VBS Unicode.GetBytes(), чтобы мы могли получить нужную строку в кодировке?
Great !.Я тестировал, но я пропустил опцию 'utf-16le'. Я адаптировал свой код к вашей информации, но у меня есть сомнения: почему два объекта adodb.stream? Есть ли какой-нибудь случай, когда решение с только одним может потерпеть неудачу? Есть ли улучшение в использовании двух экземпляров? –
@MCND D'oh! Спасибо за это, я обновил свой ответ - 1 поток вполне достаточен; комбинация старого кода и ошибки при экспериментировании с одним потоком заставила меня ошибочно убедиться, что необходимы 2 потока. – mklement0