Public/Invoke-ZipDirectory.ps1

function global:Invoke-ZipDirectory
{
        <#
            .EXTERNALHELP HelperFunctions.psm1-Help.xml
        #>

    
    [CmdletBinding()]
    param
    (
        [Parameter(Mandatory = $true,
                 ValueFromPipeline = $true,
                 HelpMessage = 'Name of archive file to create.')]
        [String]$zipFileName,
        [Parameter(Mandatory = $true,
                 ValueFromPipeline = $true,
                 HelpMessage = 'Name of directory containing files to zip.')]
        [String]$sourceDir,
        [Parameter(Mandatory = $false,
                 ValueFromPipeline = $true,
                 HelpMessage = 'Compression type.')]
        [String]$ArchiveMode
    )
    
    Begin
    {
        Add-Type -Assembly System.IO.Compression.FileSystem
        Switch ($ArchiveMode)
        {
            "Fast"{ $compressionLevel = [System.IO.Compression.CompressionLevel]::Fastest; Break }
            "None"{ $compressionLevel = [System.IO.Compression.CompressionLevel]::NoCompression; Break }
            default{ $compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal }
        }
    }
    Process
    {
        [System.IO.Compression.ZipFile]::CreateFromDirectory($sourceDir, $zipFileName, $compressionLevel, $false)
    }
} #End function Invoke-ZipDirectory