mirror of
https://github.com/Grace-Solutions/PSMinIO.git
synced 2026-07-26 14:58:13 +00:00
9b3e453358ccaa42e3d66cc2230747972046bdb8
✅ FOLDER CONSOLIDATION: • Removed redundant Publish folder • Migrated all content to Module folder • Centralized module distribution in single location ✅ DLL OPTIMIZATION: • Removed MinIO SDK dependency (Minio.dll) - no longer needed • Kept only essential DLLs: - PSMinIO.dll (main module) - PSMinIO.pdb (debugging symbols) - System.Text.Json.dll (JSON operations) - Newtonsoft.Json.dll (JSON compatibility) • Updated manifest to reflect minimal dependencies ✅ MANIFEST UPDATES: • Updated description to reflect custom REST API implementation • Removed Minio.dll from RequiredAssemblies • Updated FileList with essential DLLs only • Maintained all comprehensive cmdlet exports ✅ BENEFITS: • Reduced module size and dependencies • Eliminated MinIO SDK async/PowerShell compatibility issues • Cleaner distribution with minimal footprint • Single source of truth for module files Module now contains only essential files for optimal PowerShell compatibility.
PSMinIO
A comprehensive PowerShell module for MinIO object storage operations, built on the official Minio .NET SDK. Provides full-featured object storage management with enterprise-grade capabilities.
Features
- 🚀 High Performance: Built for .NET Standard 2.0, compatible with PowerShell 5.1+ and PowerShell 7+
- 📦 Complete Object Management: Upload, download, list, and delete objects with advanced filtering and sorting
- 🗂️ Flexible Directory Support: Create nested folder structures with automatic directory creation
- ⚡ Chunked Operations: Large file uploads and downloads with resume capability and progress tracking
- 🔒 Security & Policy Management: Comprehensive bucket policy and access control management
- 📊 Advanced Object Listing: Filter by prefix, sort by multiple criteria, limit results, and exclude directories
- ⏱️ Timing & Performance Metrics: Detailed timing information and transfer speed reporting
- 🔄 Progress Reporting: Multi-layer progress tracking for file collections and chunked operations
- 📝 Professional Logging: Clean, timestamped logging with configurable verbosity levels
- 🛡️ Robust Error Handling: Graceful handling of network issues and edge cases
Installation
From PowerShell Gallery
# Install from PowerShell Gallery
Install-Module -Name PSMinIO -Scope CurrentUser
# Import the module
Import-Module PSMinIO
From Source
# Clone the repository
git clone https://github.com/Grace-Solutions/PSMinIO.git
cd PSMinIO
# Build the module (automatically updates version)
.\scripts\Build.ps1
# Import the module
Import-Module .\Module\PSMinIO\PSMinIO.psd1
Direct Import
# Import from local path
Import-Module .\Module\PSMinIO\PSMinIO.psd1
Quick Start
# Connect to MinIO server
$connection = Connect-MinIO -Endpoint "https://minio.example.com" -AccessKey "your-access-key" -SecretKey "your-secret-key"
# Create a bucket
New-MinIOBucket -BucketName 'my-data-bucket' -Verbose
# Upload files with automatic directory creation
New-MinIOObject -BucketName 'my-data-bucket' -Files "document.pdf" -BucketDirectory "documents/2025/january"
# List objects with advanced filtering
Get-MinIOObject -BucketName 'my-data-bucket' -Prefix "documents/" -SortBy "Size" -Descending -MaxObjects 10
# Download with timing information
Get-MinIOObjectContent -BucketName 'my-data-bucket' -ObjectName 'documents/2025/january/document.pdf' -FilePath 'C:\Downloads\document.pdf'
# Chunked upload for large files
New-MinIOObjectChunked -BucketName 'my-data-bucket' -Files "large-video.mp4" -ChunkSize 10MB -BucketDirectory "media/videos"
Available Cmdlets
Connection Management
Connect-MinIO- Establish connection to MinIO server with SSL support and certificate validation options
Bucket Operations
Get-MinIOBucket- List all buckets with optional statisticsNew-MinIOBucket- Create new buckets with region supportRemove-MinIOBucket- Delete buckets with safety confirmationsTest-MinIOBucketExists- Check bucket existence
Object Operations
Get-MinIOObject- Advanced object listing with filtering, sorting, and pagination- Filter by prefix or exact object name
- Sort by Name, Size, LastModified, or ETag (ascending/descending)
- Limit results with MaxObjects
- Exclude directories with ObjectsOnly
New-MinIOObject- Upload files with directory support- Single file or multiple file uploads
- Automatic nested directory creation
- Progress tracking and timing information
New-MinIOObjectChunked- Chunked uploads for large files- Configurable chunk sizes (1MB minimum)
- Resume capability and multi-layer progress tracking
- Automatic directory creation
Get-MinIOObjectContent- Download objects with progress trackingGet-MinIOObjectContentChunked- Chunked downloads for large filesRemove-MinIOObject- Delete objects with confirmation promptsNew-MinIOFolder- Create folder structures in buckets
Security & Policy Management
Get-MinIOBucketPolicy- Retrieve bucket access policiesSet-MinIOBucketPolicy- Configure bucket access policies
Monitoring & Statistics
Get-MinIOStats- Comprehensive server and bucket statistics with object counting limits
Key Features in Detail
🗂️ Advanced Directory Support
- Nested Folder Creation: Automatically create multi-level directory structures (e.g.,
documents/2025/january/reports) - BucketDirectory Parameter: Specify target directories for uploads without manual folder creation
- Clean Directory Handling: Non-critical directory creation attempts with graceful fallback
⚡ Chunked Operations
- Large File Support: Handle files of any size with configurable chunk sizes
- Resume Capability: Interrupted transfers can be resumed (future enhancement)
- Multi-Layer Progress: Track collection progress, file progress, and chunk progress simultaneously
- Performance Optimization: Optimal chunk sizes for different network conditions
📊 Enhanced Object Listing
# Advanced filtering and sorting examples
Get-MinIOObject -BucketName "data" -Prefix "logs/" -SortBy "LastModified" -Descending -MaxObjects 50
Get-MinIOObject -BucketName "media" -ObjectsOnly -SortBy "Size" -Descending
Get-MinIOObject -BucketName "docs" -ObjectName "specific-file.pdf"
⏱️ Performance Metrics
All operations provide detailed timing information:
- Duration: Precise operation timing
- Transfer Speed: Formatted speed reporting (B/s, KB/s, MB/s, GB/s, TB/s)
- Progress Tracking: Real-time progress updates during transfers
Examples
See the scripts/examples directory for comprehensive usage examples:
- Basic Operations: Connection, bucket management, simple uploads/downloads
- Advanced Scenarios: Chunked transfers, directory management, bulk operations
- Enterprise Patterns: Policy management, monitoring, and automation scripts
Requirements
- PowerShell: 5.1+ or PowerShell 7+
- .NET Framework: 4.7.2+ (for PowerShell 5.1) or .NET Core/.NET 5+ (for PowerShell 7+)
- MinIO Server: Compatible with MinIO and Amazon S3 APIs
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
Support
- 📖 Documentation: See docs/USAGE.md for detailed usage instructions
- 🐛 Issues: Report bugs and request features via GitHub Issues
- 💬 Discussions: Join the community discussions for questions and tips
Languages
C#
89.5%
PowerShell
10.5%