Строки не работают в моей функции в качестве параметров powershell
function cee([string]$a,
[string]$b)
{
Write-Host $a | ft
$a.GetType()
Write-Host $b | ft
$b.GetType()
Add-Type -Assembly System.IO.Compression.FileSystem
$compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal
[System.IO.Compression.ZipFile]::CreateFromDirectory($a,$b)
}
cee('C:\FAKE','C:\zipfile.zip')
При запуске в этом поместье происходит сбой и ошибки с:
C: \ FAKE'C:\zipfile.zip
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object>True True String System.Object
Исключение, вызывающее "CreateFromDirectory" с аргументом (ами) "2": "Формат указанного> пути не поддерживается". В строке:10 символов:9 + [System.IO.Compression.ZipFile]::CreateFromDirectory($a, + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: NotSupportedException
Если я сохраню 'C:\FAKE\' и 'C:\zipfile.zip' как переменные, вручную выполняя каждую строку с переменными в качестве входных данных для $ a и $b, это работает просто отлично.
Если я установлю [Parameter(Mandatory=$True)], запустите функцию и введите C: \ FAKE \ и C:\zipfile.zip в командной строке, все будет работать нормально.
1 ответ
Вы не правильно вызываете свою функцию. Вы используете функцию как таковую:
cee 'C:\FAKE' 'C:\zipfile.zip'
Или, более полно, вызывая параметры по имени:
cee -a 'C:\FAKE' -b 'C:\zipfile.zip'