2013-03-08 79 views
1

我想我已經嘗試了所有錯誤的方式,而那些不只是給醜陋的錯誤消息寫了一個無法打開的亂碼文件(你仍然可以看到它的JFIF,但jpeg魔法煙霧已經丟失)。如何在PowerShell中將二進制Stream對象寫入文件?

流本身是$ contactInfo.Get_Item(「Photo」)。我想我需要做這樣的事情:

$br = new-object System.IO.BinaryReader $contactInfo.Get_Item("Photo") 

但過去,我不知道該怎麼辦。我嘗試了谷歌搜索,但我甚至不知道我在找什麼是很誠實的。

Stream對象的類型是Microsoft.Lync.Model.UCStream。

+0

那是什麼Get_Item()返回類型?執行'$ contactInfo.Get_Item(「Photo」)。GetType()。Fullname'。如果它是一個字節[],那麼只需執行此設置內容photo.jpeg $ contactInfo.Get_Item(「照片」) - 編碼字節。 – 2013-03-08 17:20:55

+0

@KeithHill我已編輯包含該信息。 – 2013-03-08 17:30:49

+0

使用Read()方法讀取直到流結束(-1)。除了最後一個int,並將其放入PowerShell byte []中。然後使用'$ bytes |設置內容photo.jpeg -enc字節。 – 2013-03-08 19:59:39

回答

3

我沒有獲得這種特殊類型(UCStream),但一般你會寫這個在PowerShell中像這樣:

$br = new-object io.binaryreader $contactInfo.Get_Item("Photo") 
$al = new-object collections.generic.list[byte] 
while (($i = $br.Read()) != -1) 
{ 
    $al.Add($i) 
} 

Set-Content photo.jpeg $al.ToArray() -enc byte