---
id: migrating
title: PowerShell module
sidebar_label: ⚰️ PowerShell Module
---

## Problem statement

Traditionally, the module was the only way to install oh-my-posh using `Install-Module oh-my-posh`.
Today, with the shift to the executable version over a year ago, it only acts as a wrapper around the
executable, offering no additional functionality. Throughout the year, the following changes have been made:

- don't ship all binaries in the Module but download on `Import-Module`
- move all functionality from the Module to the [init][init] script

There's a problem with the Module due to the following:

- downloading the binary is a problem on company managed computers
- the module syncs cross device thanks to OneDrive sync, causing versions to be out of sync and [configs to break][idiots]
- it's impactful having to explain the difference time and time again (for me)

## Migration steps

### Remove the module's cached files

```powershell
Remove-Item $env:POSH_PATH -Force -Recurse
```

:::warning
If you added custom elements to this location, they will be deleted with the command above.
Make sure to move these before running the command.
:::

### Install oh-my-posh

See your platform's installation guide. The preferred ways are **winget** and **Homebrew**.

- [Windows][windows]
- [macOS][macos]
- [Linux][linux]

### Uninstall the PowerShell module

```powershell
Uninstall-Module oh-my-posh -AllVersions
```

Delete the import of the PowerShell module in your `$PROFILE`

```powershell
Import-Module oh-my-posh
```

### Adjust setting the prompt

If you're still using `Set-PoshPrompt`, replace that statement with the following:

#### I have a custom theme

```powershell
oh-my-posh init pwsh --config ~/.custom.omp.json | Invoke-Expression
```

And replace `~/.custom.omp.json` with the location of your theme.

#### I have an out-of-the-box theme

```powershell
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json" | Invoke-Expression
```

Replace `jandedobbeleer.omp.json` with the theme you use.

:::caution
Only winget and scoop add the environment variable `POSH_THEMES_PATH` automatically. For Homebrew, use
`$(brew --prefix oh-my-posh)/themes/jandedobbeleer.omp.json`.
:::

[init]: https://github.com/JanDeDobbeleer/oh-my-posh/blob/main/src/shell/scripts/omp.ps1
[idiots]: https://ohmyposh.dev/blog/idiots-everywhere
[windows]: /docs/installation/windows
[macos]: /docs/installation/macos
[linux]: /docs/installation/linux