字符串在我的函数中不起作为参数powershell

时间:2016-07-18 17:12:02

标签: string function powershell zipfile

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在提示符下,它工作得很好。

1 个答案:

答案 0 :(得分:2)

您没有正确调用您的函数。您可以使用这样的函数:

cee 'C:\FAKE' 'C:\zipfile.zip'

或者更全面地,通过名称调用参数:

cee -a 'C:\FAKE' -b 'C:\zipfile.zip'