Spawn of a Shell - Handling Sub Processes - Jordan Borean - PSConfEU 2026

PowerShell Conference EU June 1-4, 2026 Dorint Pallas Wiesbaden https://github.com/psconfeu/2026 (slides, code) Jordan introduces the session by explaining that he works at Red Hat on Ansible, with a focus on Windows content and PowerShell. He then outlines the talk’s main topic: the many ways to start and manage subprocesses in PowerShell, and why this area often causes confusion. He begins with process invocation methods, comparing direct invocation, the call operator, relative and absolute paths, and the use of variables in paths. He also explains dot sourcing, jobs, and Start-Process, and shows when each approach creates a new process, when it blocks, and when it does not. A central part of the session covers Invoke-Expression, which Jordan strongly advises against. He demonstrates how it can break when paths contain spaces and how it can execute unintended code when user input is embedded into a command string. He contrasts this with the safer use of the call operator. Jordan then turns to command-line argument handling, describing differences between Windows and non-Windows platforms. He explains how PowerShell binds arguments, how quoting is applied, and how tracing can help inspect parameter binding. He also covers arrays, splatting, and the differences between legacy, standard, and Windows argument-passing modes. The talk next focuses on standard input, output, and error streams. Jordan explains that native processes exchange bytes rather than PowerShell objects, so encoding matters. He discusses output encoding, raw byte handling, redirection, and how to capture output and error streams separately. Finally, he covers exit codes and how PowerShell handles them. He explains that non-zero exit codes are not treated as failures by default, and shows ways to check them manually or make PowerShell stop on failure. He ends by introducing a PowerShell mini-shell technique that uses script blocks and serialized objects, and notes that command-line size limits can become a problem. Chapters: 00:00:00 Spawn of a Shell - Handling Sub Processes - Jordan Borean - PSConfEU 2026 00:00:15 Introduction and Speaker Background 00:01:14 PowerShell Process Invocation 00:05:42 Why Invoke-Expression Fails 00:08:41 Blocking and GUI Processes 00:10:15 Waiting on Child Processes 00:11:42 Running Consoles in Background 00:14:27 Command-Line Argument Quirks 00:19:33 Escaping Rules and Passing Modes 00:22:47 Stop Processing and Splatting 00:25:48 Standard Input and Output 00:30:19 Encoding Output Correctly 00:32:30 Capturing Streams Separately 00:32:54 Raw Bytes Between Processes 00:35:02 JSON for Structured Output 00:36:21 Exit Codes and Failures 00:43:44 PowerShell Mini-Shell 00:46:23 Command Line Limits

Microsoft Graph with PowerShell 101 - Jan-Hendrik Peters - PSConfEU 2026
▶︎

Microsoft Graph with PowerShell 101 - Jan-Hendrik Peters - PSConfEU 2026

Embracing Events in PowerShell - Jeffery Hicks - PSConfEU 2026
▶︎

Embracing Events in PowerShell - Jeffery Hicks - PSConfEU 2026

10 Tips for debugging Bash Scripts (actually useful and real-world applicable)
▶︎

10 Tips for debugging Bash Scripts (actually useful and real-world applicable)

Implementing PSRemoting at Devolutions: Lessons Learned - Marc-André Moreau - PSConfEU 2026
▶︎

Implementing PSRemoting at Devolutions: Lessons Learned - Marc-André Moreau - PSConfEU 2026

Scripting Fundamentals 2252 Lesson02 Python
▶︎

Scripting Fundamentals 2252 Lesson02 Python

Zig 2026: No-AI Policy, $670K Foundation, Left GitHub & Why Zig Isn’t 1.0 - Andrew Kelley Explains
▶︎

Zig 2026: No-AI Policy, $670K Foundation, Left GitHub & Why Zig Isn’t 1.0 - Andrew Kelley Explains

Migrating everything to PowerShell Universal - Including humans! - Björn Sundling - PSConfEU 2026
▶︎

Migrating everything to PowerShell Universal - Including humans! - Björn Sundling - PSConfEU 2026

State of the Shell - Steven Bucher - PSConfEU 2026
▶︎

State of the Shell - Steven Bucher - PSConfEU 2026

Coding an HTTP Server in C
▶︎

Coding an HTTP Server in C

Co-Creator of Haskell: Functional Programming, Thinking in Types, Useless Languages | Simon Jones
▶︎

Co-Creator of Haskell: Functional Programming, Thinking in Types, Useless Languages | Simon Jones

Can you write `md5` in Pure Bash? (100% bash, no external tools)
▶︎

Can you write `md5` in Pure Bash? (100% bash, no external tools)

Workstation Configuration as Code lifecycle with WinGet - Demitrius Nelon - PSConfEU 2026
▶︎

Workstation Configuration as Code lifecycle with WinGet - Demitrius Nelon - PSConfEU 2026

Persist Your PowerShell Script Data with Data API Builder - Jess Pomfret - PSConfEU 2026
▶︎

Persist Your PowerShell Script Data with Data API Builder - Jess Pomfret - PSConfEU 2026

Forgotten gems of PowerShell - Bartek Bielawski - PSConfEU 2026
▶︎

Forgotten gems of PowerShell - Bartek Bielawski - PSConfEU 2026

Saving PowerShell Notebooks - David Sass - PSConfEU 2026
▶︎

Saving PowerShell Notebooks - David Sass - PSConfEU 2026

Andrej Karpathy: From Vibe Coding to Agentic Engineering w/ Stephanie Zhan
▶︎

Andrej Karpathy: From Vibe Coding to Agentic Engineering w/ Stephanie Zhan

PowerShelling smarter with GitHub Copilot - Barbara Forbes - PSConfEU 2026
▶︎

PowerShelling smarter with GitHub Copilot - Barbara Forbes - PSConfEU 2026

Leveraging Braid and PowerShell - Bruce Payette - PSConfEU 2026
▶︎

Leveraging Braid and PowerShell - Bruce Payette - PSConfEU 2026

Coding a procedural brick tower
▶︎

Coding a procedural brick tower

Why std::vector Can't Save You (And What to Use Next)
▶︎

Why std::vector Can't Save You (And What to Use Next)