溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Powershell文件解壓縮方法

發(fā)布時(shí)間:2020-08-01 15:08:06 來源:網(wǎng)絡(luò) 閱讀:2692 作者:hl809546522 欄目:系統(tǒng)運(yùn)維

最近寫腳本遇到了一個(gè)解壓縮文件的問題,嘗試了很多方法,現(xiàn)在來總結(jié)一下。

1.使用第三方解壓縮軟件,比如7zip

#Extract ZIP files
if (-not (test-path "$env:ProgramFiles\7-Zip\7z.exe")) {throw "$env:ProgramFiles\7-Zip\7z.exe needed"} 
set-alias sz "$env:ProgramFiles\7-Zip\7z.exe" 
sz x "$destinationpath" -y -oC:\Wicn_sys 
#-oC:\Wicn_sys 這里用變量會(huì)出現(xiàn)問題,我用固定的路徑

首先需要客戶端都安裝了7zip軟件,在某些客戶端運(yùn)行并不成功。畢竟調(diào)用了第三方工具,效率,成功率,都有點(diǎn)問題

2. windows內(nèi)置解壓縮功能

你在客戶端上,找個(gè)壓縮文件,右鍵,如果有Extract All的功能,說明內(nèi)置了windows的自解壓功能。易用簡單,但需要.net的版本條件,.net 4.5以上

 $BackUpPath = "C:\a.zip"
 $Destination = "C:\1"
  Add-Type -assembly "system.io.compression.filesystem"
  [io.compression.zipfile]::ExtractToDirectory($BackUpPath, $destination)

如果報(bào)錯(cuò)說明當(dāng)前運(yùn)行的.net版本低了

3. 調(diào)用COM對象,與方法2 一樣,必須PS版本2.0或.net 4.5以上

$shell = New-Object -ComObject shell.application
$zip = $shell.NameSpace("C:\a.zip")
MkDir("C:\a")
foreach ($item in $zip.items()) {
  $shell.Namespace("C:\a").CopyHere($item)
}

折騰了一天,為避免大家也浪費(fèi)時(shí)間,最后就兩點(diǎn)。
如果你做批量化的推送,要么你在所在客戶端上安裝7zip的軟件,要么把所有客戶端的.net升級到4.5以上。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI