├── .github └── workflows │ ├── main.yml │ └── sync.yml ├── .gitignore ├── 404.html ├── CNAME ├── Gemfile ├── README.md ├── _config.yml ├── _includes ├── google-analytics.html └── plausible-snippet.html ├── _layouts ├── default.html ├── pages.html └── posts.html ├── _posts └── 2021-03-15-welcome-to-jekyll.markdown ├── _ps_modules ├── Az.md ├── ExchangeOnline.md ├── MSCommerce.md ├── MSIdentityTools.md ├── Microsoft365DSC.md ├── MicrosoftEntra.md ├── MicrosoftGraph.md ├── MicrosoftGraphBeta.md ├── MicrosoftPlaces.md ├── MicrosoftTeams.md ├── PnP-PowerShell.md ├── PowerAppsAdministration.md ├── PowerAppsMaker.md ├── PowerBIMgmt.md ├── SPMT.md ├── SecurityAndCompliance.md ├── SharePointOnline.md ├── UniversalPrintManagement.md ├── Whiteboard.md └── aipservice.md ├── about.markdown ├── assets └── css │ └── style.scss ├── checker.ps1 └── index.markdown /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Autoupdater 2 | 3 | # Run every day at 2AM and 2PM 4 | on: 5 | schedule: 6 | - cron: "0 2,14 * * *" 7 | 8 | # Allows you to run this workflow manually from the Actions tab 9 | workflow_dispatch: 10 | 11 | jobs: 12 | build: 13 | runs-on: windows-latest 14 | 15 | steps: 16 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 17 | - uses: actions/checkout@v4 18 | 19 | - name: Install and cache PowerShell modules 20 | id: psmodulecache 21 | uses: potatoqualitee/psmodulecache@v6.2.1 22 | with: 23 | modules-to-cache: powershell-yaml 24 | shell: powershell, pwsh 25 | 26 | - name: Run script 27 | id: checker 28 | run: ./checker.ps1 29 | 30 | - name: Create Pull Request 31 | uses: peter-evans/create-pull-request@v7 32 | with: 33 | commit-message: Update ${{ steps.checker.outputs.changed }} 34 | committer: GitHub 35 | author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com> 36 | title: Automatic update of ${{ steps.checker.outputs.changed }} 37 | body: | 38 | Hello there 👋 39 | 🚨 New ${{ steps.checker.outputs.version }} of ${{ steps.checker.outputs.module }} detected 40 | ✅ Please review my edit and merge 41 | ⏰ I'll check all the modules tomorrow 42 | 43 | Auto-generated by [create-pull-request][1] 44 | 45 | [1]: https://github.com/peter-evans/create-pull-request 46 | labels: | 47 | autoupdate 48 | draft: false 49 | base: dev 50 | branch: autoupdater 51 | -------------------------------------------------------------------------------- /.github/workflows/sync.yml: -------------------------------------------------------------------------------- 1 | name: Sync 2 | #run only if a push is against dev 3 | on: 4 | push: 5 | branches: 6 | - dev 7 | 8 | jobs: 9 | sync-branches: 10 | runs-on: ubuntu-latest 11 | name: Syncing branches 12 | steps: 13 | - name: Checkout 14 | uses: actions/checkout@v2 15 | - name: Set up Node 16 | uses: actions/setup-node@v1 17 | with: 18 | node-version: 12 19 | - name: Opening pull request 20 | id: pull 21 | uses: tretuna/sync-branches@1.2.0 22 | with: 23 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} 24 | FROM_BRANCH: "dev" 25 | TO_BRANCH: "main" 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | _site 2 | .sass-cache 3 | .jekyll-cache 4 | .jekyll-metadata 5 | vendor 6 | -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /404.html 3 | layout: default 4 | --- 5 | 6 | 19 | 20 |
21 |

404

22 | 23 |

Page not found :(

24 |

The requested page could not be found.

25 |
26 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | msshells.net -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | # Hello! This is where you manage which Jekyll version is used to run. 3 | # When you want to use a different version, change it below, save the 4 | # file and run `bundle install`. Run Jekyll with `bundle exec`, like so: 5 | # 6 | # bundle exec jekyll serve 7 | # 8 | # This will help ensure the proper Jekyll version is running. 9 | # Happy Jekylling! 10 | #gem "jekyll", "~> 4.2.0" 11 | # This is the default theme for new Jekyll sites. You may change this to anything you like. 12 | gem "minima", "~> 2.5" 13 | # If you want to use GitHub Pages, remove the "gem "jekyll"" above and 14 | # uncomment the line below. To upgrade, run `bundle update github-pages`. 15 | gem "github-pages", "~> 212", group: :jekyll_plugins 16 | # If you have any plugins, put them here! 17 | group :jekyll_plugins do 18 | gem "jekyll-feed", "~> 0.12" 19 | end 20 | 21 | # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem 22 | # and associated library. 23 | platforms :mingw, :x64_mingw, :mswin, :jruby do 24 | gem "tzinfo", "~> 1.2" 25 | gem "tzinfo-data" 26 | end 27 | 28 | # Performance-booster for watching directories on Windows 29 | gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin] 30 | 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # msshells.net 2 | This is the source code repository of msshells.net 3 | 4 | ## How to contribute 5 | 6 | Create a Pull Request against the DEV branch with your correction/contribution, or, if you do not know how to do it, create an issue if you think something is wrong or outdated and I will review it. Thank you! 7 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # Welcome to Jekyll! 2 | # 3 | # This config file is meant for settings that affect your whole blog, values 4 | # which you are expected to set up once and rarely edit after that. If you find 5 | # yourself editing this file very often, consider using Jekyll's data files 6 | # feature for the data you need to update frequently. 7 | # 8 | # For technical reasons, this file is *NOT* reloaded automatically when you use 9 | # 'bundle exec jekyll serve'. If you change this file, please restart the server process. 10 | # 11 | # If you need help with YAML syntax, here are some quick references for you: 12 | # https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml 13 | # https://learnxinyminutes.com/docs/yaml/ 14 | # 15 | # Site settings 16 | # These are used to personalize your new site. If you look in the HTML files, 17 | # you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. 18 | # You can create any custom variable you would like, and they will be accessible 19 | # in the templates via {{ site.myvariable }}. 20 | 21 | title: ">_☁ MSShells.net" 22 | email: andresg@capazero.net 23 | description: >- # this means to ignore newlines until "baseurl:" 24 | This site aims to keep track of the -current- Official Microsoft PowerShell modules to administer Microsoft 365 and Azure. Contributions are welcomed! 25 | baseurl: "" # the subpath of your site, e.g. /blog 26 | url: "https://www.msshells.net" # the base hostname & protocol for your site, e.g. http://example.com 27 | twitter_username: andresgorzelany 28 | github_username: get-itips 29 | google_analytics: G-LFK2CV7T0J 30 | 31 | # Build settings 32 | theme: jekyll-theme-cayman 33 | plugins: 34 | - jekyll-feed 35 | 36 | collections: 37 | - ps_modules 38 | 39 | # Exclude from processing. 40 | # The following items will not be processed, by default. 41 | # Any item listed under the `exclude:` key here will be automatically added to 42 | # the internal "default list". 43 | # 44 | # Excluded items can be processed by explicitly listing the directories or 45 | # their entries' file path in the `include:` list. 46 | # 47 | # exclude: 48 | # - .sass-cache/ 49 | # - .jekyll-cache/ 50 | # - gemfiles/ 51 | # - Gemfile 52 | # - Gemfile.lock 53 | # - node_modules/ 54 | # - vendor/bundle/ 55 | # - vendor/cache/ 56 | # - vendor/gems/ 57 | # - vendor/ruby/ 58 | -------------------------------------------------------------------------------- /_includes/google-analytics.html: -------------------------------------------------------------------------------- 1 | {% if site.google_analytics %} 2 | 3 | 4 | 11 | {% endif %} 12 | -------------------------------------------------------------------------------- /_includes/plausible-snippet.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {% include google-analytics.html %} 6 | {% include plausible-snippet.html %} 7 | 8 | 9 | {% seo %} 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 30 | 31 |
32 | {{ content }} 33 | 34 | 40 |
41 | 42 | 43 | -------------------------------------------------------------------------------- /_layouts/pages.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | {{ content }} 5 | -------------------------------------------------------------------------------- /_layouts/posts.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | {{ content }} 5 | -------------------------------------------------------------------------------- /_posts/2021-03-15-welcome-to-jekyll.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: "Welcome to Jekyll!" 4 | date: 2021-03-15 09:09:20 -0300 5 | categories: jekyll update 6 | --- 7 | You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. 8 | 9 | Jekyll requires blog post files to be named according to the following format: 10 | 11 | `YEAR-MONTH-DAY-title.MARKUP` 12 | 13 | Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works. 14 | 15 | Jekyll also offers powerful support for code snippets: 16 | 17 | {% highlight ruby %} 18 | def print_hi(name) 19 | puts "Hi, #{name}" 20 | end 21 | print_hi('Tom') 22 | #=> prints 'Hi, Tom' to STDOUT. 23 | {% endhighlight %} 24 | 25 | Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk]. 26 | 27 | [jekyll-docs]: https://jekyllrb.com/docs/home 28 | [jekyll-gh]: https://github.com/jekyll/jekyll 29 | [jekyll-talk]: https://talk.jekyllrb.com/ 30 | -------------------------------------------------------------------------------- /_ps_modules/Az.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 6 3 | toAdminister: Azure Az PowerShell 4 | name: Az 5 | stableVersion: 14.1.0 6 | previewVersion: N/A 7 | howToInstallPre: > 8 | N/A 9 | howToConnect: > 10 | ```Connect-AzAccount``` 11 | [More methods](https://docs.microsoft.com/en-us/powershell/module/az.accounts/connect-azaccount?WT.mc_id=M365-MVP-5004663) 12 | PS7: "Yes" 13 | --- 14 | -------------------------------------------------------------------------------- /_ps_modules/ExchangeOnline.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 1 3 | toAdminister: Exchange Online 4 | name: ExchangeOnlineManagement 5 | stableVersion: 3.8.0 6 | previewVersion: 3.8.1-Preview1 7 | howToInstallPre: > 8 | ```Install-Module -Name ExchangeOnlineManagement -RequiredVersion 3.2.0-Preview4 -AllowPrerelease``` 9 | howToConnect: > 10 | ```Connect-ExchangeOnline``` 11 | [More methods](https://docs.microsoft.com/powershell/exchange/connect-to-exchange-online-powershell?view=exchange-ps#connect-to-exchange-online-powershell-using-modern-authentication-with-or-without-mfa?WT.mc_id=M365-MVP-5004663) 12 | PS7: "Yes" 13 | --- 14 | -------------------------------------------------------------------------------- /_ps_modules/MSCommerce.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 13 3 | toAdminister: MS Commerce 4 | name: MSCommerce 5 | stableVersion: 2.3 6 | previewVersion: N/A 7 | howToInstallPre: > 8 | N/A 9 | howToConnect: > 10 | ```Connect-MSCommerce``` 11 | [More methods](https://docs.microsoft.com/power-bi/admin/service-admin-disable-self-service#change-the-self-service-signup-policy-1?WT.mc_id=M365-MVP-5004663) 12 | PS7: "No" 13 | --- 14 | -------------------------------------------------------------------------------- /_ps_modules/MSIdentityTools.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 18 3 | toAdminister: Microsoft Identity 4 | name: MSIdentityTools 5 | stableVersion: 2.0.70 6 | previewVersion: N/A 7 | howToInstallPre: > 8 | N/A 9 | howToConnect: > 10 | ```Connect-MgGraph``` 11 | [More information](https://github.com/AzureAD/MSIdentityTools/wiki) 12 | PS7: "Yes" 13 | --- 14 | -------------------------------------------------------------------------------- /_ps_modules/Microsoft365DSC.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 16 3 | toAdminister: Microsoft 365 4 | name: Microsoft365DSC 5 | stableVersion: 1.25.604.1 6 | previewVersion: N/A 7 | howToInstallPre: > 8 | N/A 9 | howToConnect: > 10 | ```Export-M365DSCConfiguration``` 11 | [More methods](https://github.com/microsoft/Microsoft365DSC/blob/Dev/docs/docs/user-guide/get-started/introduction.md) 12 | PS7: "No" 13 | --- 14 | -------------------------------------------------------------------------------- /_ps_modules/MicrosoftEntra.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 22 3 | toAdminister: Microsoft Entra 4 | name: Microsoft.Entra 5 | stableVersion: 1.0.8 6 | previewVersion: N/A 7 | howToInstallPre: > 8 | N/A 9 | howToConnect: > 10 | ```Connect-Entra``` 11 | [More methods](https://learn.microsoft.com/en-us/powershell/entra-powershell/installation) 12 | PS7: "Yes" 13 | --- 14 | -------------------------------------------------------------------------------- /_ps_modules/MicrosoftGraph.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 14 3 | toAdminister: Microsoft Graph services 4 | name: Microsoft.Graph 5 | stableVersion: 2.19.0 6 | previewVersion: N/A 7 | howToInstallPre: > 8 | N/A 9 | howToConnect: > 10 | ```Connect-MgGraph``` 11 | [More methods](https://learn.microsoft.com/en-us/powershell/microsoftgraph/get-started?view=graph-powershell-1.0&WT.mc_id=M365-MVP-5004663#sign-in) 12 | PS7: "Yes" 13 | --- 14 | 15 | -------------------------------------------------------------------------------- /_ps_modules/MicrosoftGraphBeta.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 20 3 | toAdminister: Microsoft Graph services Beta 4 | name: Microsoft.Graph.Beta 5 | stableVersion: 2.19.0 6 | previewVersion: N/A 7 | howToInstallPre: > 8 | N/A 9 | howToConnect: > 10 | ```Connect-MgGraph``` 11 | [More methods](https://learn.microsoft.com/en-us/powershell/microsoftgraph/get-started?view=graph-powershell-beta&WT.mc_id=M365-MVP-5004663#sign-in) 12 | PS7: "Yes" 13 | --- 14 | -------------------------------------------------------------------------------- /_ps_modules/MicrosoftPlaces.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 21 3 | toAdminister: Microsoft Places 4 | name: MicrosoftPlaces 5 | stableVersion: 1.0.0 6 | previewVersion: N/A 7 | howToInstallPre: > 8 | N/A 9 | howToConnect: > 10 | ```Connect-MicrosoftPlaces``` 11 | [More methods](https://learn.microsoft.com/deployoffice/places/powershell/connect-microsoftplaces) 12 | PS7: "Yes" 13 | --- 14 | -------------------------------------------------------------------------------- /_ps_modules/MicrosoftTeams.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 0 3 | toAdminister: Microsoft Teams 4 | name: MicrosoftTeams 5 | stableVersion: 7.1.0 6 | previewVersion: 7.0.1-preview 7 | howToInstallPre: > 8 | ```Install-Module MicrosoftTeams -RequiredVersion 4.6.1-preview -AllowPrerelease``` 9 | howToConnect: > 10 | ```Connect-MicrosoftTeams``` 11 | [More methods](https://docs.microsoft.com/MicrosoftTeams/teams-powershell-install#sign-in?WT.mc_id=M365-MVP-5004663) 12 | PS7: "No" 13 | --- 14 | -------------------------------------------------------------------------------- /_ps_modules/PnP-PowerShell.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 17 3 | toAdminister: Microsoft 365 4 | name: PnP.PowerShell 5 | stableVersion: 3.1.0 6 | previewVersion: Nightly versions each day 7 | howToInstallPre: > 8 | ```Install-Module -Name PnP.PowerShell -AllowPrerelease``` 9 | howToConnect: > 10 | ```Register-PnPManagementShellAccess``` 11 | [More methods](https://pnp.github.io/powershell/articles/authentication.html) 12 | PS7: "Yes" 13 | --- 14 | -------------------------------------------------------------------------------- /_ps_modules/PowerAppsAdministration.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 11 3 | toAdminister: PowerApps (Administrator) 4 | name: Microsoft.PowerApps.Administration.PowerShell 5 | stableVersion: 2.0.212 6 | previewVersion: N/A 7 | howToInstallPre: > 8 | N/A 9 | howToConnect: > 10 | ```Add-PowerAppsAccount``` (Run as Administrator) 11 | [More methods](https://docs.microsoft.com/power-platform/admin/powerapps-powershell#installation?WT.mc_id=M365-MVP-5004663) 12 | PS7: "No" 13 | --- 14 | -------------------------------------------------------------------------------- /_ps_modules/PowerAppsMaker.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 12 3 | toAdminister: PowerApps (Maker) 4 | name: Microsoft.PowerApps.PowerShell 5 | stableVersion: 1.0.40 6 | previewVersion: N/A 7 | howToInstallPre: > 8 | N/A 9 | howToConnect: > 10 | ```Add-PowerAppsAccount``` (Run as Administrator) 11 | [More methods](https://docs.microsoft.com/power-platform/admin/powerapps-powershell#installation?WT.mc_id=M365-MVP-5004663) 12 | PS7: "No" 13 | --- 14 | -------------------------------------------------------------------------------- /_ps_modules/PowerBIMgmt.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 10 3 | toAdminister: Rollup module for Power BI Cmdlets 4 | name: MicrosoftPowerBIMgmt 5 | stableVersion: 1.2.1111 6 | previewVersion: N/A 7 | howToInstallPre: > 8 | N/A 9 | howToConnect: > 10 | ```Connect-PowerBIServiceAccount``` 11 | [More info](https://docs.microsoft.com/powershell/module/microsoftpowerbimgmt.profile/connect-powerbiserviceaccount?view=powerbi-ps?WT.mc_id=M365-MVP-5004663) 12 | PS7: "No" 13 | --- 14 | -------------------------------------------------------------------------------- /_ps_modules/SPMT.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 9 3 | toAdminister: SharePoint Migration Tool 4 | name: Microsoft.SharePoint.MigrationTool 5 | link: https://docs.microsoft.com/en-us/sharepointmigration/new-and-improved-features-in-the-sharepoint-migration-tool 6 | stableVersion: 4.1.125.8 7 | howToInstall: > 8 | Tricky, see [here](https://aka.ms/spmt-ga-page) and [here](https://docs.microsoft.com/sharepointmigration/overview-spmt-ps-cmdlets#before-you-begin?WT.mc_id=M365-MVP-5004663) 9 | previewVersion: 4.1.125.9 10 | howToInstallPre: > 11 | Tricky, see [here](https://spmtreleasescus.blob.core.windows.net/betainstall/default.htm) and [here](https://docs.microsoft.com/sharepointmigration/overview-spmt-ps-cmdlets#before-you-begin?WT.mc_id=M365-MVP-5004663) 12 | howToConnect: > 13 | ```Register-SPMTMigration``` 14 | [More info](https://docs.microsoft.com/powershell/module/spmt/register-spmtmigration?view=spmt-ps?WT.mc_id=M365-MVP-5004663) 15 | PS7: "No" 16 | --- 17 | -------------------------------------------------------------------------------- /_ps_modules/SecurityAndCompliance.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 2 3 | toAdminister: Security & Compliance 4 | name: ExchangeOnlineManagement 5 | stableVersion: 3.8.0 6 | previewVersion: 3.8.1-Preview1 7 | howToInstallPre: > 8 | ```Install-Module -Name ExchangeOnlineManagement -RequiredVersion 2.0.6-Preview5 -AllowPrerelease``` 9 | howToConnect: > 10 | ```Connect-IPPSSession``` 11 | [More methods](https://docs.microsoft.com/powershell/exchange/connect-to-scc-powershell?view=exchange-ps?WT.mc_id=M365-MVP-5004663) 12 | PS7: "Yes" 13 | --- 14 | -------------------------------------------------------------------------------- /_ps_modules/SharePointOnline.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 3 3 | toAdminister: SharePoint Online 4 | name: Microsoft.Online.SharePoint.PowerShell 5 | stableVersion: 16.0.26121.12000 6 | previewVersion: N/A 7 | howToInstallPre: > 8 | N/A 9 | howToConnect: > 10 | ```Connect-SPOService -Url https://contoso-admin.sharepoint.com -Credential admin@contoso.com``` 11 | [More methods](https://docs.microsoft.com/powershell/sharepoint/sharepoint-online/connect-sharepoint-online?view=sharepoint-ps#to-connect-with-a-user-name-and-password?WT.mc_id=M365-MVP-5004663) 12 | PS7: "No" 13 | --- 14 | -------------------------------------------------------------------------------- /_ps_modules/UniversalPrintManagement.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 15 3 | toAdminister: Universal Print 4 | name: UniversalPrintManagement 5 | stableVersion: 1.14.0 6 | previewVersion: N/A 7 | howToInstallPre: > 8 | N/A 9 | howToConnect: > 10 | ```Connect-UPService``` 11 | [More methods](https://docs.microsoft.com/en-us/universal-print/fundamentals/universal-print-powershell?WT.mc_id=M365-MVP-5004663) 12 | PS7: "No" 13 | --- 14 | -------------------------------------------------------------------------------- /_ps_modules/Whiteboard.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 7 3 | toAdminister: Whiteboard 4 | name: WhiteboardAdmin 5 | stableVersion: 1.13.5 6 | previewVersion: N/A 7 | howToInstallPre: > 8 | N/A 9 | howToConnect: > 10 | Every cmdlet forces Auth prompt 11 | PS7: "No" 12 | --- 13 | -------------------------------------------------------------------------------- /_ps_modules/aipservice.md: -------------------------------------------------------------------------------- 1 | --- 2 | order: 19 3 | toAdminister: Azure Information Protection 4 | name: AIPService 5 | stableVersion: 3.0.0.1 6 | previewVersion: N/A 7 | howToInstallPre: > 8 | N/A 9 | howToConnect: > 10 | ```Connect-AipService``` 11 | [More methods](https://learn.microsoft.com/en-us/azure/information-protection/administer-powershell?WT.mc_id=M365-MVP-5004663) 12 | PS7: "No" 13 | --- 14 | -------------------------------------------------------------------------------- /about.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: About 4 | permalink: /about/ 5 | --- 6 | 7 | This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com](https://jekyllrb.com/) 8 | 9 | You can find the source code for Minima at GitHub: 10 | [jekyll][jekyll-organization] / 11 | [minima](https://github.com/jekyll/minima) 12 | 13 | You can find the source code for Jekyll at GitHub: 14 | [jekyll][jekyll-organization] / 15 | [jekyll](https://github.com/jekyll/jekyll) 16 | 17 | 18 | [jekyll-organization]: https://github.com/jekyll 19 | -------------------------------------------------------------------------------- /assets/css/style.scss: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | @import "{{ site.theme }}"; 5 | 6 | .page-header { 7 | background-image: linear-gradient(120deg, #155799, #AA0000); 8 | } 9 | .main-content { 10 | max-width: 120rem; 11 | 12 | h1, 13 | h2, 14 | h3, 15 | h4, 16 | h5, 17 | h6 { 18 | color: #AA0000; 19 | } 20 | } 21 | 22 | 23 | @media screen and (max-width: 42em) { 24 | /* Credits https://codepen.io/paulobrien/pen/KxhFk */ 25 | table, tbody, thead, tbody, th, td, tr { 26 | display: block; 27 | float:left;/* ie9 fix */ 28 | width:100%; 29 | clear:both; 30 | } 31 | thead tr { 32 | position: absolute; 33 | top: -9999px; 34 | left: -9999px; 35 | } 36 | 37 | td:before { 38 | float:left; 39 | padding:0 0 0 1%; 40 | text-align: right; 41 | display: block; 42 | margin-left: -46%; 43 | width: 40%; 44 | } 45 | .main-content table td { 46 | padding-left: 31%; 47 | -moz-box-sizing:border-box; 48 | -webkit-box-sizing:border-box; 49 | box-sizing:border-box; 50 | text-align: left !important; 51 | } 52 | 53 | tr { 54 | margin: 2em 0 55 | } 56 | 57 | /* Label the data */ 58 | td:nth-of-type(1):before {content: "To Administer ";} 59 | td:nth-of-type(2):before {content: "Module Name";} 60 | td:nth-of-type(3):before {content: "Stable Version";} 61 | td:nth-of-type(4):before {content: "How To Install";} 62 | td:nth-of-type(5):before {content: "Preview Version";} 63 | td:nth-of-type(6):before {content: "How To Install";} 64 | td:nth-of-type(7):before {content: "How to Connect";} 65 | td:nth-of-type(8):before {content: "Works in PS7?";} 66 | } -------------------------------------------------------------------------------- /checker.ps1: -------------------------------------------------------------------------------- 1 | <# 2 | .SYNOPSIS 3 | Detects any new versions of modules for https://msshells.net 4 | 5 | .DESCRIPTION 6 | Detects any new versions of modules for https://msshells.net 7 | Should be run via scheduled GitHub Actions 8 | Version: 0.2 9 | 10 | .NOTES 11 | Author: Robert Dyjas https://github.com/robdy 12 | 13 | Workflow: 14 | - Before running, make sure to checkout the repository 15 | so the data can be pulled from local file 16 | - Get current data from Markdown files 17 | - Update checked file so that PR can be opened 18 | 19 | Known issues: 20 | - Not working for modules outside gallery, i.e. Microsoft.SharePoint.MigrationTool 21 | 22 | .EXAMPLE 23 | checker.ps1 24 | #> 25 | 26 | # ================ 27 | #region Variables 28 | # ================ 29 | $dataFolderPath = "./_ps_modules" 30 | $excludedModules = @('Microsoft.SharePoint.MigrationTool','Microsoft.Graph','Microsoft.Graph.Beta','MicrosoftPlaces') 31 | 32 | $changesDetected = @() 33 | 34 | # ================ 35 | #endregion Variables 36 | # ================ 37 | 38 | # ================ 39 | #region Processing 40 | # ================ 41 | try { 42 | $ErrorActionPreference = 'Stop' 43 | $startTime = Get-Date 44 | Write-Host "Starting script at $startTime" 45 | 46 | # Get current data 47 | if ($env:GITHUB_ACTIONS) { 48 | Set-Location $env:GITHUB_WORKSPACE 49 | } 50 | # Convert files from YAML 51 | $moduleDataObj = Get-ChildItem -Path $dataFolderPath | ForEach-Object { 52 | @{ 53 | FileName = $PSItem.Name 54 | Content = ConvertFrom-Yaml -Yaml ( 55 | Get-Content -Path $PSItem -Raw 56 | ).replace("---`n", "").trim() 57 | } 58 | } 59 | 60 | $modulesToBeChecked = $moduleDataObj.Content.Name | 61 | Where-Object { $_ -notin $excludedModules } | 62 | Select-Object -Unique 63 | foreach ($moduleName in $modulesToBeChecked) { 64 | <# 65 | $moduleName = $modulesToBeChecked[0] 66 | #> 67 | $allModuleVersions = $null 68 | $latestVersion = $null 69 | $latestPreview = $null 70 | $latestVersionNumber = $null 71 | $latestPreviewNumber = $null 72 | 73 | $moduleEntry = $moduleDataObj.Content | Where-Object name -eq $moduleName 74 | $allModuleVersions = Find-Module $moduleName -AllVersions -AllowPrerelease 75 | $latestVersion = $allModuleVersions | Where-Object {$_.AdditionalMetadata.IsPrerelease -ne 'true'} | 76 | Sort-Object {[System.Version]($_.Version)} | 77 | Select-Object -Last 1 78 | $latestPreview = $allModuleVersions | Where-Object {$_.AdditionalMetadata.isPrerelease -eq 'true'} | 79 | Sort-Object {[System.Version]($_.Version -replace("-preview|-beta|-alpha |-nightly",""))} | 80 | Select-Object -Last 1 81 | $latestVersionNumber = $latestVersion.Version 82 | $latestPreviewNumber = $latestPreview.Version 83 | 84 | if ($moduleEntry.stableVersion -ne $latestVersionNumber) { 85 | $changesDetected += @{ 86 | "Module" = $moduleName 87 | "Type" = "Release" 88 | "Version" = $latestVersionNumber 89 | } 90 | Write-Host "New version of $moduleName released: $latestVersionNumber" 91 | } else { 92 | Write-Verbose "No new version of $moduleName found" 93 | } 94 | if ( 95 | $moduleEntry.previewVersion -match '(\d+\.){2,3}\d+' -and 96 | $moduleEntry.previewVersion -ne $latestPreviewNumber 97 | ) { 98 | $changesDetected += @{ 99 | "Module" = $moduleName 100 | "Type" = "Prerelease" 101 | "Version" = $latestPreviewNumber 102 | } 103 | Write-Host "New prerelease version of $moduleName found: $latestPreviewNumber" 104 | } else { 105 | Write-Verbose "No new prerelease version of $moduleName found" 106 | } 107 | } 108 | 109 | if (-not $changesDetected) { 110 | Write-Host 'No updates to modules detected' 111 | return 112 | } 113 | 114 | foreach ($change in $changesDetected) { 115 | <# 116 | $change = $changesDetected[0] 117 | #> 118 | $changedModuleFileNames = @(( 119 | $moduleDataObj | Where-Object {$_.Content.Name -eq $change.Module} 120 | ).FileName) 121 | foreach ($changedModuleFileName in $changedModuleFileNames) { 122 | $changedModuleFilePath = (Join-Path $dataFolderPath $changedModuleFileName) 123 | if ($change.Type -eq 'Release') { 124 | $replacePattern = '^(stableVersion): (.*$)' 125 | } 126 | if ($change.Type -eq 'Prerelease') { 127 | $replacePattern = '^(previewVersion): (.*$)' 128 | } 129 | $oldContent = Get-Content -Path $changedModuleFilePath 130 | $newContent = $oldcontent -replace ($replacePattern, "`$1: $($change.Version)") 131 | $newContent | Out-File $changedModuleFilePath 132 | } 133 | } 134 | 135 | Write-Host 'Finished updating data' 136 | 137 | # Output value to be used in commit message 138 | $changedCount = @($changesDetected.module).count 139 | if ($changedCount -gt 1) { 140 | $changedText = "$changedCount modules" 141 | $module = 'modules' 142 | $version = 'versions' 143 | } else { 144 | $changedText = $changesDetected.module 145 | $module = 'module' 146 | $version = 'version' 147 | } 148 | 149 | echo "::set-output name=changed::$changedText" 150 | echo "::set-output name=module::$module" 151 | echo "::set-output name=version::$version" 152 | 153 | 154 | } catch { 155 | $err = $_ 156 | Write-Host "ERROR at $($err.ScriptStackTrace)" 157 | Write-Host $err.Exception.Message 158 | } finally { 159 | $endTime = Get-Date 160 | $processedInSeconds = [math]::round(($endTime - $startTime).TotalSeconds) 161 | Write-Host "Script finished in $processedInSeconds seconds" 162 | # Uncomment for debugging 163 | # Write-Host $currentContent 164 | } 165 | 166 | # ================ 167 | #endregion Processing 168 | # ================ 169 | -------------------------------------------------------------------------------- /index.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | # Feel free to add content and custom Front Matter to this file. 3 | # To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults 4 | 5 | layout: default 6 | --- 7 | 8 | {% assign ps_mods = site.ps_modules | sort: "order" %} 9 | 10 | | To Administer | Module Name | Stable Version | How To Install | Preview Version | How To Install | How to Connect | Works in PS7? | 11 | | ------------- | :---------: | -------------- | -------------- | --------------- | -------------- | -------------- | ------------- | 12 | {% for module in ps_mods %}| {{ module.toAdminister }}| [{{ module.name }}]({% if module.link %}{{ module.link }}{% else %} https://www.powershellgallery.com/packages/{{ module.name }}{% endif %}) | {{ module.stableVersion }} | {% if module.howToInstall %}```Install-Module -Name {{ module.name }}```{% else %}```Install-Module -Name {{ module.name }}```{% endif %} | {{ module.previewVersion }} | {{ module.howToInstallPre | strip_newlines }} | {{ module.howToConnect | strip_newlines}} | {{ module.PS7 | toString }} | 13 | {% endfor %} 14 | 15 | **Note: PnP.PowerShell** is not a Microsoft provided module, is open-source and community provided library with active community providing support for it. Decided to include as an exception as it is very popular to administer Microsoft 365 stuff. 16 | 17 | Do you think a module is missing or has incorrect information? Please, let me know, either creating an [issue](https://github.com/get-itips/msshells/issues/new) or a [pull request](https://github.com/get-itips/msshells/edit/dev/index.markdown) against this page. 18 | 19 | Looking for a complete list of Microsoft 365/Azure portals? Check out [https://msportals.io](https://msportals.io/) by [Adam Fowler](https://twitter.com/AdamFowler_IT). 20 | 21 | ## Am I running the most up-to-date version? 22 | You can use the following PowerShell one-liner to check: 23 | 24 | 25 | ```powershell 26 | Get-Module -ListAvailable {{ ps_mods[0].name}}{% for module in ps_mods offset:2 %},{{ module.name }}{% endfor %} | Format-Table Name,Version 27 | ``` 28 | 29 | ## Maintainer 30 | - [Andrés Gorzelany](https://twitter.com/andresgorzelany) 31 | 32 | ## Contributors 33 | - [Robert Dyjas](https://twitter.com/robdyy) 34 | - [shivtorov](https://github.com/shivtorov) 35 | - [Juraj Sucik](https://github.com/jurajsucik) 36 | 37 | 38 | 39 | --------------------------------------------------------------------------------