{"id":16567478,"url":"https://github.com/jdhitsolutions/psteachingtools","last_synced_at":"2025-06-24T08:32:48.335Z","repository":{"id":21486346,"uuid":"64709277","full_name":"jdhitsolutions/PSTeachingTools","owner":"jdhitsolutions","description":":mortar_board: A set of commands and tools for teaching PowerShell. The module should work in Windows PowerShell, PowerShell 7.x and run cross-platform.","archived":false,"fork":false,"pushed_at":"2024-09-04T20:29:42.000Z","size":233,"stargazers_count":50,"open_issues_count":0,"forks_count":22,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-06-19T05:09:24.157Z","etag":null,"topics":["powershell","teaching-powershell"],"latest_commit_sha":null,"homepage":"","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jdhitsolutions.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.txt","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},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":"https://paypal.me/jdhitsolutions?locale.x=en_US"}},"created_at":"2016-08-01T23:50:25.000Z","updated_at":"2025-05-14T08:23:37.000Z","dependencies_parsed_at":"2024-10-27T11:23:47.529Z","dependency_job_id":null,"html_url":"https://github.com/jdhitsolutions/PSTeachingTools","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/jdhitsolutions/PSTeachingTools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdhitsolutions%2FPSTeachingTools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdhitsolutions%2FPSTeachingTools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdhitsolutions%2FPSTeachingTools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdhitsolutions%2FPSTeachingTools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jdhitsolutions","download_url":"https://codeload.github.com/jdhitsolutions/PSTeachingTools/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdhitsolutions%2FPSTeachingTools/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261635677,"owners_count":23187890,"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","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":["powershell","teaching-powershell"],"created_at":"2024-10-11T21:06:42.085Z","updated_at":"2025-06-24T08:32:48.293Z","avatar_url":"https://github.com/jdhitsolutions.png","language":"PowerShell","funding_links":["https://paypal.me/jdhitsolutions?locale.x=en_US"],"categories":[],"sub_categories":[],"readme":"# PSTeachingTools\n\n[![PSGallery Version](https://img.shields.io/powershellgallery/v/PSTeachingTools.png?style=for-the-badge\u0026label=PowerShell%20Gallery)](https://www.powershellgallery.com/packages/PSTeachingTools/) [![PSGallery Downloads](https://img.shields.io/powershellgallery/dt/PSTeachingTools.png?style=for-the-badge\u0026label=Downloads)](https://www.powershellgallery.com/packages/PSTeachingTools/)\n\n## Installation\n\nInstall this module from the PowerShell Gallery:\n\n```powershell\nInstall-Module PSTeachingTools [-scope AllUsers]\n```\n\n*Do not attempt to download and install from this repository unless you are an experienced PowerShell user.* Install the module from the PowerShell Gallery as shown above.\n\nThe module should work in both Windows PowerShell and PowerShell 7, including cross-platform. Please post an issue with any feedback, suggestions, or problems.\n\n## :teacher: Teaching PowerShell\n\nThis PowerShell module includes tools and techniques for teaching PowerShell. Many of the commands will create a set of sample objects and commands that can be used to demonstrate a variety of PowerShell techniques and concepts without having to worry about anything technical like Active Directory, services, or file objects.\n\n- [Get-Vegetable](docs/Get-Vegetable.md)\n- [Set-Vegetable](docs/Set-Vegetable.md)\n- [Remove-Vegetable](docs/Remove-Vegetable.md)\n- [New-Vegetable](docs/New-Vegetable.md)\n\nOnce the module is imported, you can use these commands like any other PowerShell command.\n\n![Using objects in the pipeline](assets/get-vegetable.jpg)\n\n![setting objects](assets/set-vegetable.jpg)\n\nBeginning in v4.0.0 of this module, the custom vegetable objects are exposed as publicly-defined objects with a variety of properties and methods. Some of the properties are read-only. Associated enumerations are also now publicly available.\n\n```powershell\nPS C:\\\u003e Get-Vegetable Corn | Get-Member\n\n   TypeName: PSTeachingTools.PSVegetable\n\nName        MemberType    Definition\n----        ----------    ----------\nState       AliasProperty State = CookedState\nEquals      Method        bool Equals(System.Object obj)\nGetHashCode Method        int GetHashCode()\nGetType     Method        type GetType()\nPeel        Method        void Peel()\nPrepare     Method        void Prepare(PSTeachingTools.VegStatus State)\nToString    Method        string ToString()\nColor       Property      PSTeachingTools.VegColor Color {get;}\nCookedState Property      PSTeachingTools.VegStatus CookedState {get;set;}\nCount       Property      int Count {get;set;}\nIsPeeled    Property      bool IsPeeled {get;set;}\nIsRoot      Property      bool IsRoot {get;}\nName        Property      string Name {get;}\nUPC         Property      int UPC {get;}\n\nPS C:\\\u003e [PSTeachingTools.VegStatus]::Sauteed\nSauteed\n```\n\nThe `PSVegetable` object has a custom format file with defined table views.\n\n```powershell\nPS C:\\\u003e Get-FormatView PSTeachingTools.PSVegetable\n\n   Type: PSTeachingTools.PSVegetable\n\nFormat    Name\n------    ----\nTable     default\nTable     State\nTable     color\n```\n\nThis means you can run a command like:\n\n```powershell\nPS C:\\\u003e Get-Vegetable | Format-Table -View color\n```\n\nThe `Color` view relies on ANSI values stored in the `$AnsiVegColor` hashtable.\n\nThe primary idea behind these commands is that you can use them to teach core PowerShell concepts and techniques. Once the student understands how vegetable objects work in the pipeline, it is a small step to files, processes, and services.\n\nSee the [about_PSTeachingTools](docs/about_PSTeachingTools.md) help file for more information.\n\n## :robot: Typed Demos\n\nThe module also includes a function for simulating an interactive PowerShell console session. You can type your commands in a file and have the function \"play back\" the commands just as if you were typing the commands. The function will pause after every `|` character. Pressing `Enter` will advance the demo. The commands from the demo file will also be added to the session's command history.\n\n### Live Commands\n\nStarting in v4.1.0, you can insert `\u003clive\u003e` into your demo file. When `Start-TypedDemo` reaches this line, it will let you enter a live command. Enter a command carefully and without error. Backspaces will break this step. Due to timing, the first key stroke may not be detected. This feature should be considered *experimental*.\n\nRead command help for [Start-TypedDemo](docs/Start-TypedDemo.md). A [sample file](samples/sampledemo.txt) is included in this module.\n\nLearn more about PowerShell: [http://jdhitsolutions.com/blog/essential-powershell-resources/](http://jdhitsolutions.com/blog/essential-powershell-resources/)\n\n## Sponsorship\n\nIf you find this module helpful or valuable, especially if used in a commercial setting, a small token of sponsorship would be deeply appreciated.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdhitsolutions%2Fpsteachingtools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjdhitsolutions%2Fpsteachingtools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdhitsolutions%2Fpsteachingtools/lists"}