Capture some basic parameters, and create the scaffold file structure
new-mfProject [-ModuleName] <String> [-description] <String> [[-minimumPsVersion] <Version>]
[[-moduleAuthors] <String[]>] [[-companyName] <String>] [[-moduleTags] <String[]>] [[-path] <String>]
[[-projectUri] <String>] [[-iconUri] <String>] [[-licenseUri] <String>] [[-configFile] <String>]
[[-RequiredModules] <Object[]>] [[-ExternalModuleDependencies] <String[]>] [[-DefaultCommandPrefix] <String>]
[[-PrivateData] <Object[]>] [-ProgressAction <ActionPreference>] [<CommonParameters>]
The new-mfProject function streamlines the process of creating a scaffold (or basic structure) for a new PowerShell module. Whether you’re building a custom module for automation, administration, or any other purpose, this function sets up the initial directory structure, essential files, and variables and properties. Think of it as laying the foundation for your module project.
new-mfProject -ModuleName "MyModule" -description "A module for automating tasks" -moduleAuthors "John Doe" -companyName "MyCompany" -moduleTags "automation", "tasks" -projectUri "https://github.com/username/repo" -iconUri "https://example.com/icon.png" -licenseUri "https://example.com/license" -RequiredModules @("Module1", "Module2") -ExternalModuleDependencies @("Dependency1", "Dependency2") -DefaultCommandPrefix "MyMod" -PrivateData @{}
This example demonstrates how to use the `new-mfProject` function to create a scaffold for a new PowerShell module named “MyModule”. It includes a description, authors, company name, tags, project URI, icon URI, license URI, required modules, external module dependencies, default command prefix, and private data.
The function will create the directory structure and essential files for the new module “MyModule” in the current working directory. It will also set up the specified metadata and dependencies.
The name of your module
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
A description of your module. Is used as the descriptor in the module repository
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
Minimum PowerShell version. Defaults to 7.2 as this is the current LTS version
Type: Version
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: [version]::new('7.2.0')
Accept pipeline input: False
Accept wildcard characters: False
Who are the primary module authors. Can expand later with add-mfmoduleAuthors command
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
Company Name. If you are building this module for your organisation, this is where it goes
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 5
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
Module Tags. Used to help discoverability and compatibility in package repositories
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 6
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
Root path of the module. Uses the current working directory by default
Type: String
Parameter Sets: (All)
Aliases: modulePath
Required: False
Position: 7
Default value: $(get-location).path
Accept pipeline input: False
Accept wildcard characters: False
Project URI. Will try and read from Git if your using a git repository.
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 8
Default value: $(try{git config remote.origin.url}catch{$null})
Accept pipeline input: False
Accept wildcard characters: False
A URL to an icon representing this module.
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 9
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
URI to use for your projects license. Will try and use the license file if a projectUri is found
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 10
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 11
Default value: ModuleForgeConfig.xml
Accept pipeline input: False
Accept wildcard characters: False
Modules that must be imported into the global environment prior to importing this module
Type: Object[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 12
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
Modules that must be imported into the global environment prior to importing this module
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 13
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 14
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
Type: Object[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 15
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
Type: ActionPreference
Parameter Sets: (All)
Aliases: proga
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters.
Author: Adrian Andersson