2016-12-05 4 views
1
PARAM ( 
    [string] $SourceZipPath, #= "X:\Somepath\Full\Of\Zipfiles", 
    [string] $DestinationPath #= "X:\Somepath\to\extract\to" 
) 
$ErrorActionPreference = "Stop" 
$Shell = New-Object -com Shell.Application 
$ZipFiles = Get-Childitem $SourceZipPath -Recurse | % {& "C:\Program Files\7-Zip\7z.exe" "x" $_.fullname "-o" $DestinationPath} -Include *.ZIP 

Пожалуйста, предложите исправление в коде выше, когда я пытаюсь запустить это дает следующее сообщение об ошибке:Распаковка файл .zip

ForEach-Object : Cannot bind parameter 'RemainingScripts'. Cannot convert the "-Include" value of type "System.String" to type "System.Management.Automation.ScriptBlock". 


At C:\Users\******\Desktop\Zip****Extractor-v0.6.ps1:11 char:53 
-Recurse | % {& "C:\Program Files\7-Zip\7z.exe" "x" "-o" $Destinatio ... 
+ CategoryInfo:InvalidArgument:(:)[ForEach-Object], ParentContainsErrorRecordException 
+FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.ForEachObjectCommand 
+1

'-Include * .ZIP' должен быть перед трубой, то есть' Get-Childitem $ SourceZipPath -Recurse -Include * .ZIP | ' – 4c74356b41

ответ

0

Как 4c74356b41 mentioned, вы должны поместить параметр в -IncludeGet-ChildItem командлет:

Param 
( 
    [string] $SourceZipPath, #= "X:\Somepath\Full\Of\Zipfiles", 
    [string] $DestinationPath #= "X:\Somepath\to\extract\to" 
) 
$ErrorActionPreference = "Stop" 
$Shell = New-Object -com Shell.Application 
$ZipFiles = Get-Childitem $SourceZipPath -Include *.ZIP -Recurse | 
    ForEach-Object { 
     & "C:\Program Files\7-Zip\7z.exe" "x" $_.fullname "-o" $DestinationPath 
    } 
+0

thanku за эту помощь, но показывал ошибку командной строки: Слишком короткий переключатель: -o –

+0

@ShivaGupta Между -o и папкой не должно быть пробелов. – LotPings

 Смежные вопросы

  • Нет связанных вопросов^_^