Skip Navigation

User banner
pwshguy (mdowst)
pwshguy (mdowst) @ pwshguy @programming.dev
Posts
85
Comments
29
Joined
2 yr. ago

Powershell @programming.dev

PowerShell Weekly for February 14, 2025

Powershell @programming.dev

PowerShell Weekly for February 7, 2025

Powershell @programming.dev

PowerShell Weekly for January 31, 2025

  • Projects, Scripts, and Modules

    • All About the Office 365 for IT Pros GitHub Repository
      \ The Office365ITPros GitHub repository holds over 300 PowerShell scripts showing how to interact with Microsoft 365 and Entra ID. Anyone can contribute to Office365ITPros by forking the code to a copy of the repository and making changes to scripts there. If you want, you can push the changes back to us so that we can consider their inclusion in Office365ITPros. It's a great example of community in action.
    • Creating a ConfigMgr (SCCM) Bootable Media – PowerShell Style
      \ Here is a PowerShell script that will create Bootable Media for ConfigMgr.
    • pipEnv v 0.1.2
      \ Unofficial installer, runner and utilities for pipenv.

    Books, Media, and Learning Resources

    Community

    • PowerShell Changed My Life... with Adam Bacon.
      \ In this episode of the PowerShell Podcast, Andrew catches up with returning guest Adam Bacon. Adam shares an update on his career and shares how PowerShell has played a huge role in helping him accomplish his dream. 
    • The Art and Science of PowerShell Module Development with Fred Weinmann
      \ In this episode of the PowerShell Podcast, we sit down with Fred Weinmann, a prolific PowerShell module creator, to explore his remarkable contributions, including PSFramework, PSModuleDevelopment, PSUtil, and PSFramework.Nuget. Fred shares insights on developing impactful solutions, such as the KRBTGT module and the evolution of module development in large-scale environments.

     

    Events

  • Powershell @programming.dev

    PowerShell Weekly for January 24, 2025

    Powershell @programming.dev

    PowerShell Weekly for January 10, 2025

    Powershell @programming.dev

    PowerShell Weekly for January 3, 2025

    Powershell @programming.dev

    PowerShell Weekly for December 20, 2024

    Powershell @programming.dev

    PowerShell Weekly for December 13, 2024

    Powershell @programming.dev

    Using PowerShell in JupyterHub for Sharing and Collaboration

    Powershell @programming.dev

    PowerShell Weekly for December 6, 2024

    Powershell @programming.dev

    PowerShell Weekly for November 29, 2024

    Powershell @programming.dev

    PowerShell Weekly for November 22, 2024

    Powershell @programming.dev

    PowerShell Weekly for November 15, 2024

    Powershell @programming.dev

    PowerShell Weekly for November 8, 2024

  • No Azure DevOps automatically increments it every time you run the pipeline.

  • Just looking at it from the point of view of making the script more portable and easier for someone else to run, there are a few things I would address.

    The first is the Write-Host commands all over the script. I would recommend converting those to Write-Verbose. Here is a great explanation when to use Write-Host vs other outputs.

    There are also numerous Write-Output commands in the script. Anything sent to the Write-Output will be returned to the calling console. If you need to take additional actions based on the results of this script, this could cause issues. You can run into problems with the New-Item commands in there too, as they will produce output. You might consider saving them to a variable or piping to Out-Null.

    Also, there is no need to call exit and set an exit code in the way you are. If you want to write and error but have the script continue you can use, Write-Error. If you want the processing to terminate then use throw. Doing it this way will allow PowerShell’s built-in error handling to take care of the exit codes. It will also give you greater flexibility with using Error Action Preferences and using try/catch statements.

    Finally, you have a path hardcoded for the workingDir. I would suggest making this a parameter or using an environment variable as this will make it more portable. Also, when creating the log variable, you will want to use the Join-Path cmdlet instead of just joining strings.

  • Powershell @programming.dev

    PowerShell Weekly for November 1, 2024

    Powershell @programming.dev

    PowerShell Weekly for October 25, 2024

    Powershell @programming.dev

    PowerShell Weekly for October 18, 2024

    Programmer Humor @programming.dev

    I started the day so optimistic

    Powershell @programming.dev

    PowerShell Weekly for October 11, 2024

    Powershell @programming.dev

    PowerShell Weekly for October 4, 2024

  • Community

    • Kubernetes is Easy with Anthony Nocentino
      \ In this episode of the PowerShell Podcast, we sit down with Anthony Nocentino, a Senior Principal Field Solution Architect at Pure Storage, to dive deep into the world of Kubernetes. Anthony breaks down what Kubernetes is and how it fits into the modern IT landscape. We explore his fascinating career journey, from consulting and SQL Server to educating the masses on Kubernetes and Linux. Anthony also shares invaluable insights on becoming a force multiplier in your career and the critical role of mentorship and offers sage advice for anyone looking to elevate their professional path.
    • PSSaturday Karlsuhe Call for Speakers
      \ We are excited to announce that we are looking for speakers for the upcoming PSSaturday in Germany this November! Whether you're a first-time speaker or an experienced presenter, we welcome you to share your ideas. If you have an interesting topic and are willing to speak for up to 45 minutes, we want to hear from you.
  • Projects, Scripts, and Modules

    Books, Media, and Learning Resources

    • Build a Superfast Research Assistant using PowerShell and AI
      \ In this episode, I’ll show you how to combine PowerShell with AI to automate tasks, chat with your data, and build intelligent agents—all within your console and scripts.
    • Interactive Data at Your Fingertips: PowerShell AI Converts Data to Interactive HTML
      \ Transform your data with PowerShell and AI. In this video, Doug Finke, a 15x Microsoft MVP, shows how to use the PSAI module to convert Excel and CSV files into interactive HTML pages. You'll learn how to sort and interact with your data directly in your browser using the new ConvertTo-InteractiveHTML function. Doug walks through generating HTML tables with sortable columns and customizing them using AI. Whether you're managing large datasets or need a quick way to visualize your data, this tutorial will guide you through the process. Install the PSAI module and start making your data more dynamic.
    • How To PowerShell Code in Docker Containers
      \ In this video, we guide you through the process of installing and running Docker using PowerShell on Windows. Whether you're a beginner or an experienced developer, this step-by-step tutorial will help you get Docker up and running quickly and efficiently.
  • I remember before scrambling they just put blocks that prevented you from going to certain channels. I somehow figured out if you ran the cable box through the VCR first and put it on channel 2 while the TV was still on 3, it would shift all the channels down one. Cinemax was channel 14, which our box just would not go to. But it would go to 13, so doing my little trick teenage me got to watch a lot of skinamax.

  • It took me longer than I would have liked, but I did finally get the next video uploaded. I hope you enjoy it as well.

    https://youtu.be/Do5Ve6M9mmU

  • Projects, Scripts, and Modules

    • 365AutomatedLab and new companion module coming soon
      \ 365AutomatedLab and new companion module coming soon I promise I haven’t forgotten about 365AutomatedLab, but I’ll be honest after Microsoft made the announcement of no more new Dev tenants it hurt a bit as I know how useful they are on learning and testing features and PowerShell without hurting your production environment.
    • How to Create SharePoint List & Add Columns Using PnP PowerShell?
      \ Recently, I developed one Power Apps application that needed a SharePoint list data source. Before running the application, the client must create the specific SharePoint list on their site. So, I wrote a Power Shell script to create the SharePoint list along columns to avoid mistakes when creating it manually.
    • PowerShell-Yayaml v0.5.0
      \ What's changed…
    • PSDates v1.0.4
      \ Tons of new stuff added including calculating sunrise and sunset time.

    Books, Media, and Learning Resources

    Community

    • Behind the Scenes at PSConf.EU: Harm Veenstra’s Experience and Insights
      \ In this episode of the PowerShell Podcast, we sit down with Microsoft MVP Harm Veenstra to discuss his exciting experiences at PSConf.EU, where he attended for the first time and embarked on a new journey into public speaking. Harm shares his thoughts on receiving the prestigious Microsoft MVP award and delves into his recent projects, including creating a TCP/UDP listener for testing firewall ports and using a Pi-hole to block ads on his home network. We also explore his perspectives on automation in the MSP world, the power of Microsoft Graph, and why he hasn’t yet adopted AI tools. Tune in for an engaging conversation filled with insights, tips, and highlights from PSConf.EU!
    • Write Code, Write Blogs: Lessons with Brock Bingham
      \ In our latest Powershell Podcast episode, we chat with Brock Bingham. We explore his transition from sysadmin to writer and his viewpoint of coding as creative problem-solving. Brock also shares insightful blogging tips and advises against the pitfalls of comparison. A must-listen for aspiring PowerShellers. (plz create a blog and share your learnings for future you)
  • Nice write up, and a great primer for someone coming from the Linux/Bash world.

  • Thanks! I'd love to hear your thoughts once you've watched it.

  • Community

    • PipeScript, Formatting, and Docker: An In-Depth Conversation with James Brundage
      \ In this episode of the PowerShell Podcast, we are joined by Microsoft MVP, former PowerShell team member, and module maker extraordinaire James Brundage. We hear about his experience at Microsoft Build, learn all docker and kubernetes while discussing his Rocker module, UserGroup updates, implicit interpretation in Pipescript, formatting and types, and so much more. Strap in because we go deep in this one.
    • Breaking Down ModuleFast and More with Justin Grote
      \ In this episode of the PowerShell Podcast, host Andrew Pla interviews Microsoft MVP and PowerShell aficionado Justin Grote. They delve into an issue in the Az.Accounts 3.0.0 module, with Justin offering insights and a workaround (use an earlier version of the module). Justin also discusses his innovative ModuleFast project, explaining its architecture and his approach to writing PowerShell scripts and modules. The conversation highlights Justin's passion for APIs and celebrates his contributions as an official PowerShell project contributor. Listeners get a glimpse into Justin's workflow working at a Managed Service Provider (MSP) and how he writes to much PowerShell. He offers valuable advice for those early in their careers. Additionally, Justin shares updates on his PowerHTML (1.2m downloads) project, which originated from a GitHub pull request, showcasing his continuous contributions to the PowerShell community.
    • PowerShell Community Call - May 16th, 2024
      \ Last month's community call with the PowerShell team.
  • Books, Media, and Learning Resources

  • Projects, Scripts, and Modules

    • passwordstate-management v 4.4.49
      \ Powershell Module for managing Password State
    • PowerQualys v 0.3.0
      \ Helper module for Qualys
    • WinTuner v 0.8.9
      \ Package and publish any apps from WinGet to Intune.
    • Interpreting Audit Records for Teams Meeting Recordings (Again)
      \ Three years ago, I wrote a script to analyze the audit records generated for Teams meeting recordings. Then things changed in terms of how the audit records were generated and how the Search-UnifiedAuditLog cmdlet returns audit search results. All of which meant that considerable work was needed to revamp (rewrite) the script. Maybe you need to check any script that uses the Search-UnifiedAuditLog cmdlet too?
    • tiPS v 1.3.10
      \ PowerShell tips delivered straight to your terminal.
  • Thanks! I'm glad to hear you are finding it useful.

  • Thanks! I'm glad to hear others are finding it useful.

  • If I understand correctly, the signatures generated by PuTTY aren’t perfectly random, so if someone got a hold of a bunch of keys from a server, they could figure out the pattern. It takes about 60 keys. This affects not just PuTTY, but also FileZilla, WinSCP, TortoiseGit, and TortoiseSVN.

    In other words if you have NIST P-521 keys, or any others using 521-bit ECDSA, you should revoke them and generate new key pairs. After you update your software.

  • I installed some security cameras around my house and set up Shinobi using an old PC. Unfortunately the PC is too old to use the built-in detectors in Shinobi. So, I took my first dive into playing around with some image detectors.

    I wrote some python to download the daily recording from old PC to a newer one with a 3080 GPU. Then checks the videos for people. It will then trim the videos to only include times were there are people in frame. It cut my the storage requirements by over 95%.

  • Joel "Jaykul" Bennet is an opinionated DevOps engineer, programmer, speaker, and Microsoft MVP.

    I love that description. I can't wait to listen to it tonight!

  • Just a heads up, I received confirmation from the product team that the AZUREPS_HOST_ENVIRONMENT environment variable is going away. They are moving the backend to containers. Also, the COMPUTERNAME one that was always "client" is going to change too. The COMPUTERNAME will now be "Sandbox-###" with # being random numbers. I started using the code block below in my runbooks to find if they are running in Azure or hybrid worker/locally. It accounts for the current and the updates that will be rolling out in the near future.

     
        
    $isHybridWorker = $true
    if (($env:computername) -eq "CLIENT") {
        $isHybridWorker = $false
    }
    elseif ($env:USERNAME -eq 'ContainerAdministrator') {
        $isHybridWorker = $false
    }
    ``
      
  • Typically, when I have a script I need to test locally, I’ll comment out the identity connection command and just authenticate outside of my script. If I’m feeling real fancy, I’ll write a try/catch to attempt to authenticate first as the managed identity then if it fails prompt me for credentials. Not the most elegant solution, but it works.

     
        
    try {
        Add-AzAccount -Identity -SubscriptionId $SubscriptionId -ErrorAction Stop | Out-Null
    }    
    catch {
        Add-AzAccount -SubscriptionId $SubscriptionId
    }