使用 powershell 并行解压多个文件
Unzip multiple files in parallel using powershell
我正在尝试使用 PowerShell 实现并行解压缩。附加的代码将一次解压缩一个与关键字匹配的文件。有没有办法并行解压多个文件
我会试一试:https://github.com/nightroman/SplitPipeline
$Zipfiles = gci [...]
$ZipFiles | Split-Pipeline -Count 10 {process{ Expand-Archive -Path $_ -DestinationPath [...] }}
您也可以为每个项目启动一个作业,然后在循环结束时接收它们。 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_jobs?view=powershell-6
您可以使用提供并行处理的工作流
您可以在 https://docs.microsoft.com/en-us/system-center/sma/overview-powershell-workflows?view=sc-sma-1801
了解更多关于工作流程的信息
workflow Unzip-File{
Param (
[Object]$Files,
[string]$Destination,
[switch]$SeprateFolders
)
foreach –parallel ($File in $Files){
if($SeprateFolders){
Write-Output "$($file.Name) : Started"
Expand-Archive -Path $File -DestinationPath "$Destination$($file.Name)"
Write-Output "$($file.Name) : Completed"
}else{
Write-Output "$($file.Name) : Started"
Expand-Archive -Path $File -DestinationPath $Destination
Write-Output "$($file.Name) : Completed"
}
}
}
try{
$ZipFiles = Get-ChildItem C:\Users\Default\Desktop\ZipTest\Source\*.zip
Unzip-File -Files $ZipFiles -Destination "C:\Users\Default\Desktop\ZipTest\Destination" -SeprateFolders
}catch{
Write-Error $_
}
我正在尝试使用 PowerShell 实现并行解压缩。附加的代码将一次解压缩一个与关键字匹配的文件。有没有办法并行解压多个文件
我会试一试:https://github.com/nightroman/SplitPipeline
$Zipfiles = gci [...]
$ZipFiles | Split-Pipeline -Count 10 {process{ Expand-Archive -Path $_ -DestinationPath [...] }}
您也可以为每个项目启动一个作业,然后在循环结束时接收它们。 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_jobs?view=powershell-6
您可以使用提供并行处理的工作流 您可以在 https://docs.microsoft.com/en-us/system-center/sma/overview-powershell-workflows?view=sc-sma-1801
了解更多关于工作流程的信息workflow Unzip-File{
Param (
[Object]$Files,
[string]$Destination,
[switch]$SeprateFolders
)
foreach –parallel ($File in $Files){
if($SeprateFolders){
Write-Output "$($file.Name) : Started"
Expand-Archive -Path $File -DestinationPath "$Destination$($file.Name)"
Write-Output "$($file.Name) : Completed"
}else{
Write-Output "$($file.Name) : Started"
Expand-Archive -Path $File -DestinationPath $Destination
Write-Output "$($file.Name) : Completed"
}
}
}
try{
$ZipFiles = Get-ChildItem C:\Users\Default\Desktop\ZipTest\Source\*.zip
Unzip-File -Files $ZipFiles -Destination "C:\Users\Default\Desktop\ZipTest\Destination" -SeprateFolders
}catch{
Write-Error $_
}