{"id":24318058,"url":"https://github.com/redjax/powershellprofile","last_synced_at":"2026-03-05T23:52:30.765Z","repository":{"id":272060913,"uuid":"915397496","full_name":"redjax/PowershellProfile","owner":"redjax","description":"My Powershell profile","archived":false,"fork":false,"pushed_at":"2025-11-23T19:33:55.000Z","size":760,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-23T21:18:02.471Z","etag":null,"topics":["posh","powershell","powershell-module","powershell-script","windows"],"latest_commit_sha":null,"homepage":"","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/redjax.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-11T18:34:40.000Z","updated_at":"2025-11-23T19:33:49.000Z","dependencies_parsed_at":"2025-04-04T04:23:42.186Z","dependency_job_id":"e7e1eef7-797e-4651-b0fd-982bab04518c","html_url":"https://github.com/redjax/PowershellProfile","commit_stats":null,"previous_names":["redjax/powershellprofile"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/redjax/PowershellProfile","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redjax%2FPowershellProfile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redjax%2FPowershellProfile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redjax%2FPowershellProfile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redjax%2FPowershellProfile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/redjax","download_url":"https://codeload.github.com/redjax/PowershellProfile/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redjax%2FPowershellProfile/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27563841,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-07T02:00:07.896Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["posh","powershell","powershell-module","powershell-script","windows"],"created_at":"2025-01-17T14:36:59.180Z","updated_at":"2025-12-07T08:03:33.030Z","avatar_url":"https://github.com/redjax.png","language":"PowerShell","readme":"# Powershell Profile  \u003c!-- omit in toc --\u003e\n\n\u003c!-- Repo image --\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/redjax/PowershellProfile\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://assets.esecurityplanet.com/uploads/2021/05/logo-microsoft-powershell.png\"\u003e\n      \u003cimg src=\"https://assets.esecurityplanet.com/uploads/2021/05/logo-microsoft-powershell.png\" height=\"100\"\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003c!-- Git badges --\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/redjax/PowershellProfile\"\u003e\n    \u003cimg alt=\"Created At\" src=\"https://img.shields.io/github/created-at/redjax/PowershellProfile\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/redjax/PowershellProfile/commit\"\u003e\n    \u003cimg alt=\"Last Commit\" src=\"https://img.shields.io/github/last-commit/redjax/PowershellProfile\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/redjax/PowershellProfile/commit\"\u003e\n    \u003cimg alt=\"Commits this year\" src=\"https://img.shields.io/github/commit-activity/y/redjax/PowershellProfile\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/redjax/PowershellProfile\"\u003e\n    \u003cimg alt=\"Repo size\" src=\"https://img.shields.io/github/repo-size/redjax/PowershellProfile\"\u003e\n  \u003c/a\u003e\n  \u003c!-- ![GitHub Latest Release](https://img.shields.io/github/release-date/redjax/PowershellProfile) --\u003e\n  \u003c!-- ![GitHub commits since latest release](https://img.shields.io/github/commits-since/redjax/PowershellProfile/latest) --\u003e\n  \u003c!-- ![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/redjax/PowershellProfile/tests.yml) --\u003e\n\u003c/p\u003e\n\nMy Powershell `$PROFILE` module.\n\n📖 [Documentation](./docs/)\n\n\u003e [!NOTE]\n\u003e I am working on a rewrite of this profile, it turns out importing a bunch of modules that conveniently encapsulate functionality I want also slows the hell out of startup time.\n\u003e\n\u003e The new profile is in [`Profiles/Monolith/Monolith.ps1`](./Profiles/Monolith/Monolith.ps1). Instead of importing a bunch of modules, it sources profile \"components.\" Instead of using the `Install-CustomProfile.ps1` script, this profile is installed with `Install-MonoProfile.ps1`. The default installation assumes you do not have a custom prompt (Starship, Oh-My-Posh, etc); you can pass a custom prompt \u0026 theme with `-Prompt [starship, oh-my-posh]` and `-StarshipTheme [theme-name]` or `-OhMyPoshTheme [theme-name]`.\n\u003e\n\u003e I will document this better when I fully replace the current profile.\n\n---\n\n\u003e [!WARNING]\n\u003e This script overwrites your Powershell `$PROFILE`. Make sure to take a backup of that\n\u003e before running any of the scripts in this repository, especially if you've done\n\u003e any customization previously.\n\nYou can backup your current profile with:\n\n```powershell\nCopy-Item -Path \"$($PROFILE)\" -Destination \"$($PROFILE).orig\"\n```\n\nTo restore it later, run:\n```powershell\nCopy-Item -Path \"$($PROFILE).orig\" -Destination \"$($Profile)\"\n```\n\n## Table of Contents \u003c!-- omit in toc --\u003e\n\n- [Description](#description)\n- [Usage](#usage)\n- [Custom Modules](#custom-modules)\n  - [Remove custom modules](#remove-custom-modules)\n- [Developing](#developing)\n- [Notes](#notes)\n- [Links](#links)\n\n## Description\n\nThis repository includes a module named [`ProfileModule`](./Modules/ProfileModule/), which packages custom functions, variables, and aliases for use across PowerShell sessions—effectively turning `$PROFILE` into a module.\n\nEach [custom PowerShell profile](./Profiles/) sources a [shared base template](./docs/Developing.md#base-template), which handles common setup tasks such as importing [custom modules](./Modules/Custom/), configuring environment-specific options (e.g., PS5, PS7, PowerShell ISE), and loading the [`ProfileModule`](./Modules/ProfileModule/).\n\nCustom profiles, like the [`Starship` profile](./Profiles/Starship.ps1), build on top of this base. For example, the Starship profile automatically initializes [Starship](https://starship.rs) if it is installed.\n\nThe [`ProfileModule`](./Modules/ProfileModule/) adds helpful aliases and functions to every session it's imported into. List the imported aliases with `Show-ProfileModuleAliases` and  the functions with `Show-ProfileModuleFunctions`.\n\nYou can control which profile is installed by editing the [`config.json` file](./config.example.json). Each selected profile loads the shared base, then layers on its specific functionality.\n\nAdditionally, [custom modules](./Modules/Custom/) can be installed using the [`Install-CustomPSModules.ps1` script](./Install-CustomPSModules.ps1). These are modular and optional—just install what you need.\n\nFor example, on a work machine, you might want [Azure helpers](./Modules/Custom/AzureHelpers/) and [Active Directory helpers](./Modules/Custom/ActiveDirectoryHelpers/), but skip the [WeatherMod](./Modules/Custom/WeatherMod/), which wraps [`wttr.in`](https://wttr.in). To skip a module, simply answer `n` when prompted during installation.\n\n## Usage\n\n- Clone the repository\n- Copy [`config.example.json`](./config.example.json) to `config.json`\n  - Edit the file if you want to install a profile other than [the default profile](./Profiles/Default.ps1)\n  - You can also control which [custom modules](./Modules/Custom/) are installed by editing the `custom_modules` list in the `config.json` file\n    - Add only the module name, for example if you want to install the [`DatetimeHelpers` modules](./Modules/Custom/DatetimeHelpers/), just add `\"DatetimeHelpers\"` to the `custom_modules` list\n- Install the profile\n  - Automatic (scripted install)\n    - Run `Install-CustomProfile.ps1`\n    - This script will:\n      - Import the [`PowershellProfileSetup` module](./scripts/setup/PowershellProfileSetup/)\n      - Create a backup of your existing `$PROFILE` at `$($PROFILE).bak`.\n        - You may still want to copy your old `$PROFILE`, like: `cp $PROFILE \"$($PROFILE).orig\"`. This will prevent accidentally nuking any customizations you've made to your `$PROFILE`\n      - Update the module's [manifest file](./Modules/ProfileModule/ProfileModule.psd1), ensuring all functions \u0026 aliases are exported properly.\n      - Copy the [shared base profile](./Profiles/_Base.ps1) to your Powershell path\n      - Copy the [`ProfileModule`](./Modules/ProfileModule/) directory (the custom profile module) to your `CustomModules/` directory in the same path as your `$PROFILE`.\n      - Copy/update a [custom profile](./Profiles/) (default: [`Default.ps1`](./Profiles/Default.ps1)) to your machine's `$PROFILE` location.\n        - Each [custom profile](./Profiles/) imports the [`_Base.ps1` profile](./Profiles/_Base.ps1), which loads the [`ProfileModule`](./Modules/ProfileModule/) and any custom modules defined in the `config.json`'s `custom_modules` key.\n        - To use a different profile, pass a `-ProfileName \u003cprofilename\u003e`, where `\u003cprofilename\u003e` is the name of a file in the [`Profiles/`](./Profiles/) directory without the `.ps1` file extension.\n          - i.e. `-ProfileName Default` would use [`./Profiles/Default.ps1`](./Profiles/Default.ps1)\n  - Manual install\n    - Open your Powershell profile path (get profile path with: `split-path $PROFILE -parent`)\n      - For Powershell 5, it should be `C:\\Users\\\u003cyour-username\u003e\\Documents\\WindowsPowerShell`\n      - For Powershell 7 on Windows, it should be `C:\\Users\\\u003cyou-username\u003e\\Documents\\PowerShell`\n    - Copy the [`_Base.ps1` profile](./Profiles/_Base.ps1) to your Powershell path\n      - Also copy the [profile](./Profiles/) (use the [default profile](./Profiles/Default.ps1) if you are unsure).\n    - (Optional) Install [custom modules](./Modules/Custom/)\n      - Create a directory named `CustomModules/` in your Powershell profile path\n      - Copy any custom modules you want to use into this path.\n\nAfter first setup, restart your terminal by closing \u0026 reopening it, or reload it in-place by running:\n\n```powershell\n## Powershell 5\n\u0026 \"$PSHOME\\powershell.exe\" -NoExit -Command \"Set-Location -Path '$PWD'\"\n\n## Powershell 7\n\u0026 \"$PSHOME\\pwsh.exe\" -NoExit -Command \"Set-Location -Path '$PWD'\"\n```\n\nTo see a full list of the functions exported by this module, run: `Get-Command -Module ProfileModule -Commandtype Function`.\n\nTo see a full list of the aliases exported by this module, run: `Get-Command -Module ProfileModule -CommandType Alias`.\n\n## Custom Modules\n\nThis repository includes a number of custom modules in the [Modules/Custom](./Modules/Custom/) path. These modules can add additional functionality to your `$PROFILE`. The [`_Base.ps1`](./Profiles/_Base.ps1) profile detects a folder `CustomModules/` at the `$PROFILE` path on your host; if present, it will import any modules within, adding extra functionality to your `$PROFILE`. Keeping modules in this separate `CustomModules/` directory prevents them from being auto-initialized by Powershell, allowing you to control module imports with the selected profile.\n\nYou can control which modules are installed automatically by the [`Install-CustomProfile.ps1` script](./Install-CustomProfile.ps1) by editing the `custom_modules: []` key in your [`config.json`](./config.example.json). This key is a list of module names you want to install with your profile, corresponding to a directory in the [custom modules path of this repository](./Modules/Custom/).\n\n### Remove custom modules\n\nRun the [`Remove-CustomModulesDir.ps1` script](./scripts/Remove-CustomModulesDir.ps1) to uninstall all custom modules. This does not affect your custom profile, only the modules in the profile path's `CustomModules/` directory.\n\n## Developing\n\n*See the [Developing docs](./docs/Developing.md)*\n\n## Notes\n\n*See the [Notes documentation pages](./docs/Notes.md)*\n\n## Links\n\n*Check the [docs for useful links](./docs/Useful-Links.md)*\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredjax%2Fpowershellprofile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fredjax%2Fpowershellprofile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredjax%2Fpowershellprofile/lists"}