function New-ZipArchive
    Creates a new, empty ZIP archive.
    The `New-ZipArchive` function createa a new, empty ZIP archive. Pass the path to the archive to the Path parameter. A new, empty ZIP archive is created at that path. The function returns a `IO.FileInfo` object representing the new ZIP archive.
    If `Path` is relative, it is created relative to the current directory.
    If a file already exists, you'll get an error and nothing will be returned. To delete any existing file and create a new, empty ZIP archive, pass the `Force` switch.
    You can control the compression level of the archive by passing an `IO.Compression.CompressionLevel` value to the `CompressionLevel` parameter. The default is `Optimal`. Other values are `Fastest` and `None`.
    By default, entry names are encoded as UTF8 text. If your ZIP archive will be consumed by tools that don't support UTF8, pass the encoding they do support to the `EntryNameEncoding` parameter.
    New-ZipArchive -Path ''
    Creates a new, empty ZIP file named `` in the current directory.
    New-ZipArchive -Path '' -Force
    Creates a new, empty ZIP file named `` in the current directory. If a file named '' already exists in the current directory, it is deleted and a new file created.
    New-ZipArchive -Path '' -CompressionLevel Fastest -Encoding [Text.Encoding]::ASCII
    Creates a new, empty ZIP file using fastest compression and encoding entry names in ASCII.

        # The path to the ZIP archive to create. Should include the file name. The file must not exist.

        $CompressionLevel = [IO.Compression.CompressionLevel]::Optimal,

        $EntryNameEncoding = [Text.Encoding]::UTF8,

        # If the ZIP file already exists, delete it and create a new file.

    Set-StrictMode -Version 'Latest'
    Use-CallerPreference -Cmdlet $PSCmdlet -SessionState $ExecutionContext.SessionState

    if( -not [IO.Path]::IsPathRooted($Path) )
        $Path = Join-Path -Path (Get-Location) -ChildPath $Path
    $Path = [IO.Path]::GetFullPath($Path)

    if( (Test-Path -LiteralPath $Path) )
        if( (Test-Path -LiteralPath $Path -PathType Container) )
            Write-Error -Message ('Path "{0}" is a directory. Unable to create a ZIP archive there.' -f $Path)

        if( $Force )
            Remove-Item -LiteralPath $Path
            Write-Error -Message ('The file "{0}" already exists. Unable to create a new ZIP archive at that path.' -f $Path)

    $tempDir = Join-Path -Path ([IO.Path]::GetTempPath()) -ChildPath ('{0}.{1}' -f ($Path | Split-Path -Leaf),([IO.Path]::GetRandomFileName()))
    New-Item -Path $tempDir -ItemType 'Directory' | Out-Null
        Get-Item -LiteralPath $Path
        Remove-Item -LiteralPath $tempDir -Recurse -Force -ErrorAction Ignore