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
使用“2”参数调用“CreateFromDirectory”的异常:“不支持给定的>路径的格式。” 在行:10 char: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在提示符下,它工作得很好。
答案 0 :(得分:2)
您没有正确调用您的函数。您可以使用这样的函数:
cee 'C:\FAKE' 'C:\zipfile.zip'
或者更全面地,通过名称调用参数:
cee -a 'C:\FAKE' -b 'C:\zipfile.zip'