In PowerShell 5.0, Compress-Archive can easily compress files and folders to a ZIP file:
PS C:\> Compress-Archive -Path c:\sourcefolder -DestinationPath $env:temp\archive.zip -Force
Compress-Archive is not a cmdlet, though. It is a function and leverages the new ZIP file support in .NET Framework 4.5. To take a look at how they did this, here is a line that copies the Compress-Archive source code to the clipboard.
PS C:\> ${function:Compress-Archive} | clip
You can use this approach to view the source code of any PowerShell function that is in memory. You may have to run a function once to force PowerShell to load it into memory before you can access its source code.
When you create a ZIP file with Compress-Archive (requires PowerShell 5.0), any file with the “Hidden” attribute is not added to the ZIP file by the way.
Throughout this month, we’d like to point you to three awesome community-driven global PowerShell events taking place this year:
Europe: April 20-22: 3-day PowerShell Conference EU in Hannover, Germany, with more than 30+ speakers including Jeffrey Snover and Bruce Payette, and 60+ sessions: www.psconf.eu.
Asia: October 21-22: 2-day PowerShell Conference Asia in Singapore. Watch latest announcements at www.psconf.asia
North America: April 4-6: 3-day PowerShell and DevOps Global Summit in Bellevue, WA, USA with 20+ speakers including many PowerShell Team members: https://eventloom.com/event/home/PSNA16
All events have limited seats available so you may want to register early.