Public/New-PsModule.ps1
function New-PsModule { [CmdletBinding()] param ( [string]$path ) # $path = (Get-IfNull $path (Get-Location)); $path = Get-Answer "Enter project folder without module name" (Get-IfNull $path (Get-Location)) -AnswerRequired $moduleName = Get-Answer "Enter module name" -AnswerRequired $modulePath = Join-Path $path $moduleName; if (Test-Path $modulePath) { Write-Warning "Path already exists" if (Get-JaNein "Delete existing folder?" "n") { Remove-Item $modulePath -Recurse } else { Write-Error "Vorgang abgebrochen."; break; } } $author = Get-Answer "Enter author" "Peter Ullrich" $companyName = Get-Answer "Enter company name" "dotup IT solutions" $year = (Get-Date).Year; $copyright = Get-Answer "Enter author" "Copyright (c) $year $companyName, $author" $description = Get-Answer "Enter description" "" # Create directories New-Item -ItemType Directory -Force -path $path\$moduleName New-Item -ItemType Directory -Force -path $path\$moduleName\Private New-Item -ItemType Directory -Force -path $path\$moduleName\Public New-Item -ItemType Directory -Force -path $path\$moduleName\de-DE # For about_Help files New-Item -ItemType Directory -Force -path $path\$moduleName\Tests #Create files New-Item "$path\$moduleName\publish.ps1" -ItemType File Set-Content -Path "$path\$moduleName\publish.ps1" -Value '$path = Get-Location; $PowershellApiKey = "EnterYourPowershellApiKey"; Publish-PsModule -Path $path -APIKey $PowershellApiKey -IncrementVersion;' New-Item "$path\$moduleName\$moduleName.psm1" -ItemType File Set-Content -Path "$path\$moduleName\$moduleName.psm1" -Value '$Public = @( Get-ChildItem -Path $PSScriptRoot\Public\*.ps1 -ErrorAction SilentlyContinue ) $Private = @( Get-ChildItem -Path $PSScriptRoot\Private\*.ps1 -ErrorAction SilentlyContinue ) #Dot source the files Foreach ($import in @($Public + $Private)) { Try { . $import.fullname } Catch { Write-Error -Message "Failed to import function $($import.fullname): $_" } } Export-ModuleMember -Function $Public.Basename' New-Item "$path\$moduleName\$moduleName.Format.ps1xml" -ItemType File New-Item "$path\$moduleName\de-DE\about_$moduleName.help.txt" -ItemType File New-Item "$path\$moduleName\Tests\$moduleName.Tests.ps1" -ItemType File New-ModuleManifest -path $path\$moduleName\$moduleName.psd1 ` -RootModule "$moduleName.psm1" ` -Description $Description ` -PowerShellVersion 3.0 ` -Author $Author ` -CompanyName $companyName ` -Copyright $copyright ` -FunctionsToExport '*' ` -CmdletsToExport '*' ` -FormatsToProcess "$moduleName.Format.ps1xml" } |