external help file | Module Name | online version | schema |
---|---|---|---|
PSCompression.dll-Help.xml |
PSCompression |
2.0.0 |
Creates zip entries from one or more specified entry relative paths.
New-ZipEntry
-Destination <String>
-EntryPath <String[]>
[-Value <String[]>]
[-CompressionLevel <CompressionLevel>]
[-Encoding <Encoding>]
[-Force]
[<CommonParameters>]
New-ZipEntry
-Destination <String>
-SourcePath <String>
[-EntryPath <String[]>]
[-CompressionLevel <CompressionLevel>]
[-Force]
[<CommonParameters>]
The New-ZipEntry
cmdlet can create one or more Zip Archive Entries from specified paths. The type of the created entries is determined by their path, for example, if a path ends with \
or /
, the entry will be created as a Directory
entry, otherwise it will be an Archive
entry.
Entry paths, arguments of the -EntryPath
parameter, are always normalized, a few examples of how paths are normalized:
Input | Normalized As |
---|---|
C:\path\to\mynewentry.ext |
path/to/mynewentry.ext |
\\path\to\newdirectory\ |
path/to/newdirectory/ |
path\to\very/\random\/path\\ |
path/to/very/random/path/ |
Tip
The [PSCompression.Extensions.PathExtensions]::NormalizePath(string path)
static method is available as a public API if you want to normalize your paths before creating new entries.
In addition, New-ZipEntry
can set the content of the entries that it creates from string input or by specifying a source file path.
PS ..\pwsh> New-ZipEntry .\test.zip -EntryPath test\entry, newfolder\
Directory: /newfolder/
Type LastWriteTime CompressedSize Size Name
---- ------------- -------------- ---- ----
Directory 2/24/2024 3:22 PM 0.00 B 0.00 B newfolder
Directory: /test/
Type LastWriteTime CompressedSize Size Name
---- ------------- -------------- ---- ----
Archive 2/24/2024 3:22 PM 0.00 B 0.00 B entry
PS ..\pwsh> 'hello', 'world', '!' | New-ZipEntry .\test.zip -EntryPath test\entry, newfolder\
New-ZipEntry: An entry with path 'test/entry' already exists in 'path\to\test.zip'.
New-ZipEntry: An entry with path 'newfolder/' already exists in 'path\to\test.zip'.
PS ..\pwsh> 'hello', 'world', '!' | New-ZipEntry .\test.zip -EntryPath test\entry, newfolder\ -Force
PS ..\pwsh> Get-ZipEntry .\test.zip -Include test/entry | Get-ZipEntryContent
hello
world
!
Tip
The cmdlet prevents creating entries in a destination Zip archive if an entry with the same relative path already exists. You can use the -Force
parameter to overwrite them.
PS ..\pwsh> $file = 'hello world!' | New-Item mytestfile.txt
PS ..\pwsh> New-ZipEntry .\test.zip -SourcePath $file.FullName -EntryPath newentry.txt
PS ..\pwsh> $files = Get-ChildItem -File -Recurse
PS ..\pwsh> $files | ForEach-Object { New-ZipEntry .\test.zip -SourcePath $_.FullName }
Tip
The -EntryPath
parameter is optional when creating an entry from a source file.
If the entry path isn't specified, the cmdlet will using the file's .FullName
in its normalized form.
PS ..\pwsh> $files = Get-ChildItem -File -Recurse -Filter *.txt
PS ..\pwsh> $files | ForEach-Object {
$_ | Get-Content -Encoding ascii |
New-ZipEntry .\test.zip -EntryPath $_.FullName -Encoding ascii
}
Note
As opposed to previous example, when creating entries from input values, the -EntryPath
parameter is mandatory. In this case, when using an absolute path as -EntryPath
the cmdlet will always create the entries using their normalized form as explained in Description.
Specifies values that indicate whether a compression operation emphasizes speed or compression size. See CompressionLevel
Enum for details.
Type: CompressionLevel
Parameter Sets: (All)
Aliases:
Accepted values: Optimal, Fastest, NoCompression, SmallestSize
Required: False
Position: Named
Default value: Optimal
Accept pipeline input: False
Accept wildcard characters: False
Specifies the path to a Zip file where to create the entries. You can specify either a relative or an absolute path. A relative path is interpreted as relative to the current working directory. Note that the value is used exactly as it's typed. No characters are interpreted as wildcards.
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 0
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
The character encoding used to set the entry content.
Note
- This parameter is applicable only when
-SourcePath
is not used. - The default encoding is
utf8NoBOM
.
Type: Encoding
Parameter Sets: Value
Aliases:
Required: False
Position: Named
Default value: utf8NoBOM
Accept pipeline input: False
Accept wildcard characters: False
Specifies the path to one or more entries to create in the destination Zip file. The Type of the created entries is determined by their path, for example, if the path ends with \
or /
, the entry will be created as a Directory
entry, otherwise it will be an Archive
entry.
Type: String[]
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
The cmdlet prevents creating entries in a destination Zip archive if an entry with the same relative path already exists. You can use the -Force
parameter to overwrite them.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
The path to the file to be archived. You can specify either a relative or an absolute path. A relative path is interpreted as relative to the current working directory.
Type: String
Parameter Sets: File
Aliases:
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
The string content that will be set to the created entries. You can also pipe a value to New-ZipEntry
.
Type: String[]
Parameter Sets: Value
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: True (ByValue)
Accept wildcard characters: False
This cmdlet supports the common parameters. For more information, see about_CommonParameters.
You can pipe a value for the new zip entry to this cmdlet.