{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# PowerShell Kernel\n",
"\n",
"The PowerShell kernel is working great on Windows or Linux, and you can use it to produce documentation of your troubleshooting, researching, and even your regular processes, to create visual reports and more.\n",
"\n",
"However, there are a lot of features that aren't finished, and a lot of ideas I'd like feedback on. \n",
"\n",
"This notebook is a demonstration of features, ways you can use the kernel, and tips and tricks -- but it's also documents the problems in the current version of the kernel and jupyter, and poses questions I'd love feedback on.\n",
"\n",
"### Let's start with the basics: \n",
"\n",
"It's PowerShell. You can run commands, use variables and pipelines and the text output is just displayed the way you'd expect it to be:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"Directory: /home/jovyan/work\n",
"\n",
"\n",
"Mode LastWriteTime Length Name \n",
"---- ------------- ------ ---- \n",
"--r--- 4/21/18 11:50 PM 41999 LiterateDevOps-Copy1.ipynb \n",
"--r--- 4/21/18 11:27 PM 42137 LiterateDevOps.ipynb \n",
"--r--- 4/20/18 6:34 AM 1546 Dockerfile \n",
"--r--- 4/20/18 4:19 AM 2974 build.ps1 \n",
"--r--- 4/6/18 3:20 AM 4354 LiterateDevOps.md \n",
"--r--- 4/6/18 3:20 AM 170560 ReadMe.ipynb \n",
"--r--- 4/6/18 3:09 AM 12423 nteract - plotly.ipynb \n",
"--r--- 3/4/18 2:39 AM 2302 ReadMe.md \n",
"--r--- 2/20/18 6:44 AM 4682 jupyter-powershell.nuspec \n",
"--r--- 8/4/17 3:19 AM 8712 Release.ipynb \n",
"--r--- 6/24/17 7:07 AM 1140 LICENSE.md"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"$Files = Get-ChildItem -File\n",
"$Files | Sort-Object LastWriteTime -Descending"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## `Write-Jupyter`\n",
"\n",
"The PowerShell kernel also includes command that directly outputs HTML, markdown, javascript, images, etc. into the Jupyter document. For example, we could render that ReadMe inline:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"# A [Jupyter](https://jupyter.org/) Kernel for [PowerShell](https://github.com/PowerShell/PowerShell)\n",
"\n",
"This kernel is being written in C#, and in the process, I've taken some messaging code from the [iCSharp kernel](https://github.com/zabirauf/icsharp) and made a generic library for .Net with a re-usable core for anyone who needs to create [Jupyter](https://jupyter.org/) kernels in .Net languages -- so feel free to borrow that if you like (it's under the Apache license).\n",
"\n",
"## Install\n",
"\n",
"I am finally doing a preliminary release: you can download from the releases link, unzip it somewhere, and run the `Install.ps1` script. Note that if you run this on Linux or OS X you should expect to see only \"PowerShell (Core)\" but on Windows you'll see both -- but only the \"PowerShell (Full)\" will actually work unless you have PowerShell Core installed in your PATH and working.\n",
"\n",
"## Current Status\n",
"\n",
"At this point, I'm only handling two messages:\n",
"\n",
"* KernelInfo request\n",
"* Execute request\n",
"\n",
"The PowerShell kernel is _working_, and returning text output _and errors_ as on the console (see examples below).\n",
"\n",
"## Features\n",
"\n",
"Apart from the built-in Jupyter features, I'm going to add some output enhancements so you can hook into widgets, etc. However, there's none of thata yet, except that:\n",
"\n",
"* If you output HTML, it's rendered. I'm currently detecting this in the most simplistic fashion: by testing if the output starts with \"<\" and ends with \">\". That probably needs work, but it's good enough for now.\n",
"* When a command outputs objects, you get the text rendering, but the actual objects are also returned as application/json data.\n",
"\n",
"## PowerShell Core\n",
"\n",
"In order to get cross-platform support, this kernel is based on [PowerShell Core](https://github.com/PowerShell/PowerShell).\n",
"\n",
"To build it yourself --or to run the \"PowerShell (Core)\" kernel-- you need [dotnet core 2](https://www.microsoft.com/net/core). You can build it by running `dotnet restore; dotnet build` from the root. If you want to build it in Visual Studio, you need VS 2017 version 15.3 or higher.\n",
"\n",
"## Examples\n",
"\n",
"I have [a version of this document with examples](https://github.com/Jaykul/Jupyter-PowerShell/blob/master/ReadMe.ipynb) in it as a Jupyter Notebook, which mostly works, in read-only mode, on github...\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Get-Content ReadMe.md | Out-String | Write-Jupyter -MimeType markdown"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For example: if you take your files and convert them to an HTML table, you can output that table inline. For that to work, you really want to use `ConvertTo-Html -Fragment` to get just the table as output, and then pipe it to `Write-Jupyter` as a single string. Normally, `ConvertTo-Html` outputs one `
` at a time, so we need to use `Out-String` or `-join` to convert it into a single string that we can pipe to `Write-Jupyter`.\n",
"\n",
"of course, we really want the `-Fragment` part to happen automatically. I'll have to add some `profile` support at some point to make that happen, but in the meantime, you can put something like this in a cell near the top, and make it work from then on:"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"$PSDefaultParameterValues[\"ConvertTo-Html:Fragment\"] = $true"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Incidentally, there's one other problem that I just noticed. Currently, `Write-Jupyter` outputs each item as it comes in, and wraps them in a tag, so to get a table to output properly, you need one output string. ConvertTo-Html outputs one `
` at a time, so we need to use `Out-String` or `-join` them all together:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"| Mode | LastWriteTime | Name | Length |
\n",
"| --r--- | 4/20/18 4:19:33 AM | build.ps1 | 2974 |
\n",
"| --r--- | 4/20/18 6:34:12 AM | Dockerfile | 1546 |
\n",
"| --r--- | 2/20/18 6:44:41 AM | jupyter-powershell.nuspec | 4682 |
\n",
"| --r--- | 6/24/17 7:07:27 AM | LICENSE.md | 1140 |
\n",
"| --r--- | 4/21/18 10:46:19 PM | LiterateDevOps.ipynb | 33800 |
\n",
"| --r--- | 4/6/18 3:20:07 AM | LiterateDevOps.md | 4354 |
\n",
"| --r--- | 4/6/18 3:09:39 AM | nteract - plotly.ipynb | 12423 |
\n",
"| --r--- | 4/6/18 3:20:07 AM | ReadMe.ipynb | 170560 |
\n",
"| --r--- | 3/4/18 2:39:59 AM | ReadMe.md | 2302 |
\n",
"| --r--- | 8/4/17 3:19:47 AM | Release.ipynb | 8712 |
\n",
"
\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"$Files | ConvertTo-Html Mode, LastWriteTime, Name, Length | Out-String | Write-Jupyter -MimeType html"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now if you want to get clever, you can dump a little javascript in, to make the table sortable. run this line, and then use your mouse on the headers of the table:"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"'' | Write-Jupyter -MimeType html"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Of course, a better trick would be to make that happen automatically. \n",
"\n",
"I'll see what I can do about that in the future, because this is starting to feel like a lot of modifications for `ConvertTo-Html` -- I'd love some feedback on this. In the meantime, you can add that script to the defaults for `ConvertTo-Html` like what we did with fragment:"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"$PSDefaultParameterValues[\"ConvertTo-Html:Fragment\"] = $true\n",
"$PSDefaultParameterValues[\"ConvertTo-Html:PostContent\"] = ''"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now you can get a sortable table instantly, by just running ConvertTo-Html.\n",
"\n",
"When I tried this as an example, I remembered another reason why we're going to want a better ConvertTo-Html. It doesn't know anything about which columns should be visible, and it doesn't handle properties that are collections:"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"| LogPipelineExecutionDetails | Name | Path | ImplementingAssembly | Definition | Description | Guid | HelpInfoUri | ModuleBase | PrivateData | Tags | ProjectUri | IconUri | LicenseUri | ReleaseNotes | RepositorySourceLocation | Version | ModuleType | Author | AccessMode | ClrVersion | CompanyName | Copyright | DotNetFrameworkVersion | ExportedFunctions | Prefix | ExportedCmdlets | ExportedCommands | FileList | CompatiblePSEditions | ModuleList | NestedModules | PowerShellHostName | PowerShellHostVersion | PowerShellVersion | ProcessorArchitecture | Scripts | RequiredAssemblies | RequiredModules | RootModule | ExportedVariables | ExportedAliases | ExportedWorkflows | ExportedDscResources | SessionState | OnRemove | ExportedFormatFiles | ExportedTypeFiles |
\n",
"| False | Microsoft.PowerShell.Management | /usr/src/jupyter-powershell/Modules/Microsoft.PowerShell.Management/Microsoft.PowerShell.Management.psd1 | | | | eefcb906-b326-4e99-9f54-8b4bb6ef3c6d | https://go.microsoft.com/fwlink/?linkid=855958 | /usr/src/jupyter-powershell | | System.Collections.Generic.List`1[System.String] | | | | | | 3.1.0.0 | Manifest | PowerShell | ReadWrite | | Microsoft Corporation | Copyright (c) Microsoft Corporation. All rights reserved. | | System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.FunctionInfo] | | System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.CmdletInfo] | System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.CommandInfo] | System.Collections.Generic.List`1[System.String] | System.Collections.Generic.List`1[System.String] | System.Collections.ObjectModel.Collection`1[System.Object] | System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSModuleInfo] | | | 3.0 | None | System.Collections.Generic.List`1[System.String] | System.Collections.ObjectModel.Collection`1[System.String] | System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSModuleInfo] | | System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.PSVariable] | System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.AliasInfo] | System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.FunctionInfo] | System.Collections.ObjectModel.ReadOnlyCollection`1[System.String] | System.Management.Automation.SessionState | | System.Collections.ObjectModel.ReadOnlyCollection`1[System.String] | System.Collections.ObjectModel.ReadOnlyCollection`1[System.String] |
\n",
"| False | Microsoft.PowerShell.Utility | /usr/src/jupyter-powershell/Modules/Microsoft.PowerShell.Utility/Microsoft.PowerShell.Utility.psd1 | | | | 1da87e53-152b-403e-98dc-74d7b4d63d59 | https://go.microsoft.com/fwlink/?linkid=855960 | /usr/src/jupyter-powershell | | System.Collections.Generic.List`1[System.String] | | | | | | 3.1.0.0 | Manifest | PowerShell | ReadWrite | | Microsoft Corporation | Copyright (c) Microsoft Corporation. All rights reserved. | | System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.FunctionInfo] | | System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.CmdletInfo] | System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.CommandInfo] | System.Collections.Generic.List`1[System.String] | System.Collections.Generic.List`1[System.String] | System.Collections.ObjectModel.Collection`1[System.Object] | System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSModuleInfo] | | | 3.0 | None | System.Collections.Generic.List`1[System.String] | System.Collections.ObjectModel.Collection`1[System.String] | System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSModuleInfo] | | System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.PSVariable] | System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.AliasInfo] | System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.FunctionInfo] | System.Collections.ObjectModel.ReadOnlyCollection`1[System.String] | System.Management.Automation.SessionState | | System.Collections.ObjectModel.ReadOnlyCollection`1[System.String] | System.Collections.ObjectModel.ReadOnlyCollection`1[System.String] |
\n",
"
\n",
"\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Get-Module | ConvertTo-Html | Out-String | Write-Jupyter -MimeType html"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"metadata": {
"image/png": {
"width": 32
}
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"metadata": {
"image/png": {
"width": 64
}
},
"output_type": "display_data"
}
],
"source": [
"$imageUrl = 'https://upload.wikimedia.org/wikipedia/commons/2/2f/PowerShell_5.0_icon.png'\n",
"$ImageData = @{ \"png\" = (Invoke-WebRequest $imageUrl -UseBasicParsing).RawContentStream.GetBuffer() }\n",
"# $ImageData\n",
"\n",
"Write-Jupyter -InputObject $ImageData -Metadata @{ \"image/png\" = @{ 'width' = 32 } }\n",
"Write-Jupyter -InputObject $ImageData -Metadata @{ \"image/png\" = @{ 'width' = 64 } }"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "PowerShell",
"language": "PowerShell",
"name": "powershell"
},
"language_info": {
"codemirror_mode": "powershell",
"file_extension": ".ps1",
"mimetype": "text/powershell",
"name": "PowerShell",
"nbconvert_exporter": null,
"pygments_lexer": "powershell",
"version": "5.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}