Discover
PowerShell.org

50 Episodes
Reverse
Setting up and publishing to an internal repository is much easier than most people expect. In this talk, I plan on covering why it's a good idea to use an internal repository to distribute modules. I will show how to publish modules to both a file share and a local nuget instance. The demo will show the user how to manually publish the module with the idea that it should be part of a CI/CD pipeline. We will address the idea of re-hosting public modules from the PSGallery as a way to gate them into your organization. We will also show how to bootstrap other systems to use the internal repository.
And then talk about the trials and tribulations of doing this in my organization.
PowerShell Summit videos are recorded on a "best effort" basis. We use a room mic to capture as much room audio as possible, with an emphasis on capturing the speaker. Our recordings are made in a way that minimizes overhead for our speakers and interruptions to our live audience. These recordings are meant to preserve the presentations' information for posterity, and are not intended to be a substitute for attending the Summit in person. These recordings are not intended as professional video training products. We hope you find these videos useful - the equipment used to record these was purchased using generous donations from members of the PowerShell community.
In this presentation I'll introduce the audience to a big picture view of asymptotic complexity (Big O) in scripting, using a language that doesn't require a CS degree, then look at some common pitfalls when it comes to runtime inefficiency that I've seen in actual scripts in the wild and on the internet, and finally dig into how one might spot and resolve these terribly slow anti-patterns.
The theme of the talk is not entirely original, as I believe others (including Ashley McGlone?) has previeously delivered presentations on this topic, but I'd like to dig a little deeper into the behavior of different collection types in .NET, look at _practical examples_ of how one might infer the time complexity of a piece of code using an augmented version of [Measure-Script](https://github.com/IISResetMe/MeasureScript/) and finally focus on more general patterns of efficient abstractions with the [PSCache module](https://github.com/IISResetMe/PSCache) as a starting point
A Shipwright an artisan skilled in one or more of the tasks required to build vessels. A SHiPSwright is an artisan skilled in one or more of the tasks required to build PowerShell Providers.
The [SHiPS toolkit](https://github.com/PowerShell/SHiPS) has been around for a while but it can be a little difficult to get started.
## What is SHiPS and what can it do for me?
## Examples of existing SHiPS based providers
- Azure Cloud Shell
- Puppet PS Provider
- etc.
## What things can I SHiPS-ify?
- What is hierarchial data?
## DEMO - Building a simple static SHiPS provider
## DEMO - Use an external API
## DEMO - Advanced topics
- Caching
- Testing?
## Further information
- Links
- Docs
- Open Source
PowerShell used to be just for Windows, but now it installs on most platforms...so that means we can use PowerShell everywhere! It all just works like magic and you can just sit back and relax. Right? Well, for the most part, PowerShell Core works everywhere - but like most things, the devil is in the details. This talk will cover the lessons learned from converting various project scripts from other languages to PowerShell scripts that work on Windows, Linux and Mac.
In modern computing there are distributed compute patterns that are essential to have in your arsenal. Zookeeper abstracts much of the registration and clustering aspects usually required in creating compute clusters written in any programming language. Often times it's overlooked that PowerShell is an effective programming language that can leverage common distributed patterns. Join Tome as he walks through these distributed compute patterns at a high level and demonstrates how to leverage Zookeeper to create clusters of Windows server compute that can be tasked with running services such as IIS, distributing script/batch jobs written in PowerShell, or managing Windows Docker compute containers.
PowerShell Summit videos are recorded on a "best effort" basis. We use a room mic to capture as much room audio as possible, with an emphasis on capturing the speaker. Our recordings are made in a way that minimizes overhead for our speakers and interruptions to our live audience. These recordings are meant to preserve the presentations' information for posterity, and are not intended to be a substitute for attending the Summit in person. These recordings are not intended as professional video training products. We hope you find these videos useful - the equipment used to record these was purchased using generous donations from members of the PowerShell community.
PowerShell Summit videos are recorded on a "best effort" basis. We use a room mic to capture as much room audio as possible, with an emphasis on capturing the speaker. Our recordings are made in a way that minimizes overhead for our speakers and interruptions to our live audience. These recordings are meant to preserve the presentations' information for posterity, and are not intended to be a substitute for attending the Summit in person. These recordings are not intended as professional video training products. We hope you find these videos useful - the equipment used to record these was purchased using generous donations from members of the PowerShell community.
This session is based on the years of work I've done digging into the bowels of PowerShell and coming up with creative extensions for the language. Every trick is very useful, to the point where many of them are the first thing I apply to new module/cmdlet design. I'll include demos showing the end result in action from some of my modules, and show attendees how they can get there on their own.
PowerShell Summit videos are recorded on a "best effort" basis. We use a room mic to capture as much room audio as possible, with an emphasis on capturing the speaker. Our recordings are made in a way that minimizes overhead for our speakers and interruptions to our live audience. These recordings are meant to preserve the presentations' information for posterity, and are not intended to be a substitute for attending the Summit in person. These recordings are not intended as professional video training products. We hope you find these videos useful - the equipment used to record these was purchased using generous donations from members of the PowerShell community.
I want to introduce the audience to the high-level design of the tokenizer, parser and compiler in PowerShell Core, and then take it a step further - during the course of the presentation we're going to introduce and _implement a whole new operator in PowerShell_
Only the first few minutes will be slides and introduction, the remaining time we'll use to dig into the PowerShell Core source code, live-code our intended changes with input from the audience, and finally compile and demo our new out-of-the-blue language feature.
PowerShell Summit videos are recorded on a "best effort" basis. We use a room mic to capture as much room audio as possible, with an emphasis on capturing the speaker. Our recordings are made in a way that minimizes overhead for our speakers and interruptions to our live audience. These recordings are meant to preserve the presentations' information for posterity, and are not intended to be a substitute for attending the Summit in person. These recordings are not intended as professional video training products. We hope you find these videos useful - the equipment used to record these was purchased using generous donations from members of the PowerShell community.
PowerShell is great because it abstracts a lot of the "developery" stuff away from the person writing PowerShell code, and lets them focus on writing scripts and modules. That's great! That is, until you have to want to do something that PowerShell won't let you do, or you want to put a PowerShell front end on some C# code your devs developed, or your end users keep modifying parts of the scripts you're deploying since they can just open them in notepad and edit them.
Writing compiled PowerShell cmdlets is easier than a lot of people think, and a seasoned PowerShell Pro will pick it up quickly.
PowerShell Summit videos are recorded on a "best effort" basis. We use a room mic to capture as much room audio as possible, with an emphasis on capturing the speaker. Our recordings are made in a way that minimizes overhead for our speakers and interruptions to our live audience. These recordings are meant to preserve the presentations' information for posterity, and are not intended to be a substitute for attending the Summit in person. These recordings are not intended as professional video training products. We hope you find these videos useful - the equipment used to record these was purchased using generous donations from members of the PowerShell community.
# PowerShell Error and Event Collection at Scale #
Remain in the dark no longer with Application Insight's telemetry gathering capabilities. This .NET marvel brought to you by the fine folks at Microsoft can now assist you with knowing exactly what is happening with your PowerShell code when you're not looking. Stop guessing and start knowing what your code does when you're not looking!
---
- **Collect Errors Right from the Field**
Application Insights can save entire error records generated by your code and send them to a central location. This is a great way to see what problems occur wherever your code is run in one esay to access location.
- **Know Whats Happening and Where It's Happening**
Data you choose to gather is sent to the cloud allowing you to keep track of key actions and events occurring in your code around the clock. You'll have historic data available right at your finger tips.
- **Build Dashboards Around Your Code**
Build dashboards to visualize the events in your code using either Application Insight's build in dashboarding or take advantage of the PowerBI integration.
- **Find Slow Code**
Use Application Insights to measure code execution so you know when and where something isn't as fast as it should be.
- **Use in Both Binary and Script Based PowerShell**
Do you author your code in C#, F#, or PowerShell? No matter what language you choose, Application Insights is build for the .NET family and will run where you need it to.
- **Adjustable Telemetry Levels**
Not everyone feels comfortable with, or is allowed to join in with, telemetry collection. We'll cover how to set variable telemetry options allowing the users of your code the option to opt into or out of telemetry gathering.
PowerShell Summit videos are recorded on a "best effort" basis. We use a room mic to capture as much room audio as possible, with an emphasis on capturing the speaker. Our recordings are made in a way that minimizes overhead for our speakers and interruptions to our live audience. These recordings are meant to preserve the presentations' information for posterity, and are not intended to be a substitute for attending the Summit in person. These recordings are not intended as professional video training products. We hope you find these videos useful - the equipment used to record these was purchased using generous donations from members of the PowerShell community.
In this session we will introduce the PowerShell language support in AWS Lambda before diving into AWS serverless computing. You will learn event driven design patterns and how to combine your existing PowerShell knowledge with serverless computing to innovate faster and unleash your PowerShell!
PowerShell Summit videos are recorded on a "best effort" basis. We use a room mic to capture as much room audio as possible, with an emphasis on capturing the speaker. Our recordings are made in a way that minimizes overhead for our speakers and interruptions to our live audience. These recordings are meant to preserve the presentations' information for posterity, and are not intended to be a substitute for attending the Summit in person. These recordings are not intended as professional video training products. We hope you find these videos useful - the equipment used to record these was purchased using generous donations from members of the PowerShell community.
PowerShell Summit videos are recorded on a "best effort" basis. We use a room mic to capture as much room audio as possible, with an emphasis on capturing the speaker. Our recordings are made in a way that minimizes overhead for our speakers and interruptions to our live audience. These recordings are meant to preserve the presentations' information for posterity, and are not intended to be a substitute for attending the Summit in person. These recordings are not intended as professional video training products. We hope you find these videos useful - the equipment used to record these was purchased using generous donations from members of the PowerShell community.
PowerShell is the go-to tool for getting information - particularly about IT systems that we manage. But presenting that information isn't always easy.
But there is a module which reads and writes Excel files from PowerShell. Being able to chart resource usage helps us to see resource hogs. Being able to highlight differences in system configuration can help troubleshooting. A well presented report showing key aspects of system state helps other people in the organization to understand the work that has been done. The module allows people who naturally work in Excel to provide input in Excel format for a task that is carried out in PowerShell.
This session introduces the module, explains its background and will concentrate on real world examples of how it is being used as a key tool in Dev-Ops environments, from auditing system state, to collecting the results of Pester tests, to highlighting possible configuration errors.
PowerShell Summit videos are recorded on a "best effort" basis. We use a room mic to capture as much room audio as possible, with an emphasis on capturing the speaker. Our recordings are made in a way that minimizes overhead for our speakers and interruptions to our live audience. These recordings are meant to preserve the presentations' information for posterity, and are not intended to be a substitute for attending the Summit in person. These recordings are not intended as professional video training products. We hope you find these videos useful - the equipment used to record these was purchased using generous donations from members of the PowerShell community.
As Enterprises move towards disposable infrastructure, application and platform logs can often be forgotten or lost entirely as servers are replaced. These logs can be an incredible source of information for improving the understanding of your application, troubleshooting application issues, or for triggering external processes such as auto-remediation tasks. However if not captured, this key information is lost as servers are retired or replaced. In this session you will learn how to take action as we use PowerShell and AWS to build a near real-time, serverless data processing platform.
PowerShell Summit videos are recorded on a "best effort" basis. We use a room mic to capture as much room audio as possible, with an emphasis on capturing the speaker. Our recordings are made in a way that minimizes overhead for our speakers and interruptions to our live audience. These recordings are meant to preserve the presentations' information for posterity, and are not intended to be a substitute for attending the Summit in person. These recordings are not intended as professional video training products. We hope you find these videos useful - the equipment used to record these was purchased using generous donations from members of the PowerShell community.
Ah, the life of a sysadmin; we balance our time between building new services for our corporate users and troubleshooting the existing services that those same corporate users rely on day after day.
We’re involved with so many core pieces of the network that we’re pulled in many directions on any given day. One day it’s troubleshooting servers and applications, the next it could be assisting the help desk figure out why logins aren’t working for a subset of laptops. There is never a shortage of work that demands our attention.
The truth is most of us don’t have the time to keep an eye on every detail of our IT infrastructure. Automating tasks is the only way we can focus on the priorities and still keep a watchful eye on all the things that need to be checked regularly. Automation frees you from the mundane, day-to-day
tasks that need to be done but are not the best use of your time.
PowerShell Summit videos are recorded on a "best effort" basis. We use a room mic to capture as much room audio as possible, with an emphasis on capturing the speaker. Our recordings are made in a way that minimizes overhead for our speakers and interruptions to our live audience. These recordings are meant to preserve the presentations' information for posterity, and are not intended to be a substitute for attending the Summit in person. These recordings are not intended as professional video training products. We hope you find these videos useful - the equipment used to record these was purchased using generous donations from members of the PowerShell community.
With many IT processes moving to REST based APIs and our ever increasing reliance on websites to do our jobs as developers and operators, never has there been a time more critical for learning all there is to know as much as possible about the Web Cmdlets. Invoke-WebRequest is like a web browser in your PowerShell console and Invoke-RestMethod converts a remote API endpoint into a PowerShell object.
Go beyond the -Uri parameter and explore the rich and numerous features of these Cmdlets. Learn what session variable are and how to effectively use them. See working examples of various new and improved authentication methods in PowerShell Core. Peak behind the CLI and see what makes these Cmdlets tick. Learn about the differences in these Cmdlets between Windows PowerShell 5.1 and PowerShell Core 6+. See how some basic web scraping can be done.
Why spend 90 minutes of your time learning about the Web Cmdlets? Because you deserve to get the most out of these feature rich Cmdlets. Knowing what features are available, when to use them, and how these Cmdlets work will improve your workflows, simplify your code, and empower your growth with the constantly changing API based landscape of IT.
PowerShell Summit videos are recorded on a "best effort" basis. We use a room mic to capture as much room audio as possible, with an emphasis on capturing the speaker. Our recordings are made in a way that minimizes overhead for our speakers and interruptions to our live audience. These recordings are meant to preserve the presentations' information for posterity, and are not intended to be a substitute for attending the Summit in person. These recordings are not intended as professional video training products. We hope you find these videos useful - the equipment used to record these was purchased using generous donations from members of the PowerShell community.
We will start with a pair of related scripts and put them together into a module - discussing what our options are, and the motivation for each change, we'll improve the functions by actually applying a list of best practices and code snippets including:
- picking good parameter names
- the help you can't not write
- validating input values
- outputting objects that are predictable **and identifiable**
- binding parameters from the pipeline
- why to avoid a single InputObject
- finding work that can go outside the process block
- outputting errors that are unrecoverable
- recovering from errors when possible
At the end of our time you'll have a series of reproducible steps, and a few code snippets and the knowledge to apply them to make your functions and even your modules more robust and more intuitive for users.
I'll introduce attributes including [CmdletBinding()], [Parameter()] and [OutputType()] and we'll go over the difference between Write-Error and hrow (and maybe even $PSCmdlet.WriteError()) and talk _briefly_ about the difference between a PSCustomObject with PSTypeNames and an object with a PowerShell class (and how to write parameters that accept _both_).
PowerShell Summit videos are recorded on a "best effort" basis. We use a room mic to capture as much room audio as possible, with an emphasis on capturing the speaker. Our recordings are made in a way that minimizes overhead for our speakers and interruptions to our live audience. These recordings are meant to preserve the presentations' information for posterity, and are not intended to be a substitute for attending the Summit in person. These recordings are not intended as professional video training products. We hope you find these videos useful - the equipment used to record these was purchased using generous donations from members of the PowerShell community.
PSScriptAnalyzer (PSSA) VS-code integration & customization Compatibility Analysis by Christoph Bergmeister
The default setup of PSSA does not enable all rules to their full potential and the VS-Code extension does not show all PSSA warnings by default.
I will show advanced features such as e.g. targeting a script for a certain PS version(s) and platform(s) and get early warning on incompatible cmdlets.
Furthermore you will learn how to setup a repository with custom PSSA configuration that any user who opens the repo in VS-Code can use out of the box as well without any manual action. Focus will also be on formatting and how PSSA is integrated into VS-Code and customisation options.
As a maintainer I am also happy to briefly talk about implementation details of the engine or rules or how to build it.
PowerShell Summit videos are recorded on a "best effort" basis. We use a room mic to capture as much room audio as possible, with an emphasis on capturing the speaker. Our recordings are made in a way that minimizes overhead for our speakers and interruptions to our live audience. These recordings are meant to preserve the presentations' information for posterity, and are not intended to be a substitute for attending the Summit in person. These recordings are not intended as professional video training products. We hope you find these videos useful - the equipment used to record these was purchased using generous donations from members of the PowerShell community.
PowerShell remoting is essential for automation. It began as a way to fan out scripts to multiple target machines over WinRM. But there is now PowerShell Direct for WinRM-less connections between host and guest VMs, and you can make remote IPC connections to any local process hosting PowerShell. PSCore6 supports SSH based remoting for cross-platform work, requiring no WinRM. This talk will do a deep dive into the internals of PowerShell remoting.
PowerShell Summit videos are recorded on a "best effort" basis. We use a room mic to capture as much room audio as possible, with an emphasis on capturing the speaker. Our recordings are made in a way that minimizes overhead for our speakers and interruptions to our live audience. These recordings are meant to preserve the presentations' information for posterity, and are not intended to be a substitute for attending the Summit in person. These recordings are not intended as professional video training products. We hope you find these videos useful - the equipment used to record these was purchased using generous donations from members of the PowerShell community.
The idea for this talk came when working on a project for a previous employer. Working on multiple domains, different executables needed to be run for different domains due to requirements by the security team. I was having trouble passing data between the exe's due to being unable to directly send data from one exe to the other. While researching how to fix this, I started looking into using named pipes to move data from one executable to the other. Taking the data, converting it to an object, then converting the object to base64 string it is possible to move data from one packaged script to the other without having to use temporary files. While not always of use, during those times when multiple executables have to be used, this method and code can make life simpler.
PowerShell Summit videos are recorded on a "best effort" basis. We use a room mic to capture as much room audio as possible, with an emphasis on capturing the speaker. Our recordings are made in a way that minimizes overhead for our speakers and interruptions to our live audience. These recordings are meant to preserve the presentations' information for posterity, and are not intended to be a substitute for attending the Summit in person. These recordings are not intended as professional video training products. We hope you find these videos useful - the equipment used to record these was purchased using generous donations from members of the PowerShell community.