2016-03-23 1 views
0

Я пытаюсь преобразовать файл с Powershell в кодированный в Base64 байт-массив, который требуется веб-сервисом. Как я могу это сделать?Powershell Base64 String to Bytes

Мой текущий подход заключается в следующем:

$content = [System.IO.File]::ReadAllBytes("$scriptpath/dummy.txt") 
$base64String =[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($content)) 

$proxy = New-WebServiceProxy -Uri _____.wsdl 
//... set up proxy-objects 


$namespace = $proxy.GetType().Namespace 
$soapObject= new-object ("$namespace.customType") 
$soapObject.byteArray = base64String 

Последняя строка не будет работать, так как base64String не массив байтов. К сожалению, я должен быть байтовым массивом, и у меня нет доступа к серверной стороне.

Используя XML-нотацию, я просто могу напрямую поместить строку Base64Encoded. Но как делать с powershell?

<customType><byteArray>anyBase64String</byteArray></customType> 
+2

Что такое 'soapObject'? Я ожидал бы, что если он ожидает массив байтов, тогда вы сможете предоставить массив байтов, и прокси преобразует его в base64. –

+0

Вот и все! Так же просто, как просто вставить необработанные данные ... Для полноты я добавил инициализацию soapObject. Если вы ответите, я могу принять его. –

ответ

2

Если soapObject.byteArray ожидает массив байт, я бы ожидать, чтобы просто быть в состоянии дать ему массив - пусть прокси выполнять кодирование в base64. Таким образом:

$soapObject.byteArray = content 

Нет необходимости в base64String.