Строки не работают в моей функции в качестве параметров 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'
Другие вопросы по тегам