<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Posts on Kamil Procyszyn</title>
    <link>https://kamilpro.com/posts/</link>
    <description>Recent content in Posts on Kamil Procyszyn</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Wed, 11 Mar 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://kamilpro.com/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>$25 per PR</title>
      <link>https://kamilpro.com/25-per-pr/</link>
      <pubDate>Wed, 11 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/25-per-pr/</guid>
      <description>&lt;p&gt;$25 per PR seems like a lot - or is it just a start?*&lt;/p&gt;
&lt;p&gt;Anthropic named the price for PR review.
It averages between $15-$25 per pull request.&lt;/p&gt;
&lt;p&gt;PR is a vague representation of unit of work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An entire new feature implemented with tests&lt;/li&gt;
&lt;li&gt;A bug fix&lt;/li&gt;
&lt;li&gt;A typo correction&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On one hand, in such a price model we want to get the most out of each PR = more changes = more lines of code = bigger batch size.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Blog redesign with Codex</title>
      <link>https://kamilpro.com/blog-redesign-with-codex/</link>
      <pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/blog-redesign-with-codex/</guid>
      <description>&lt;p&gt;Over the weekend, I had fun with Codex 5.3.&lt;/p&gt;
&lt;p&gt;For a long time, I wanted to change the theme of my personal website.&lt;/p&gt;
&lt;p&gt;My website is built with Hugo. While there are plenty of themes, finding the perfect one is hard.&lt;/p&gt;
&lt;p&gt;So I figured, why not use AI to change the design of my website?&lt;/p&gt;
&lt;p&gt;And so I went. I described what I wanted to achieve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Modern design&lt;/li&gt;
&lt;li&gt;Fix the privacy bar&lt;/li&gt;
&lt;li&gt;Always show the top bar while scrolling&lt;/li&gt;
&lt;li&gt;Use Playwright to validate your changes - this allowed Codex to see the changes it was making&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Codex asked a few clarifying questions, and magic happened:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kubernetes Getting Started</title>
      <link>https://kamilpro.com/kubernetes-getting-started/</link>
      <pubDate>Sun, 09 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/kubernetes-getting-started/</guid>
      <description>&lt;p&gt;Sometimes the best way is to just get started - and we will start by spinning up your very first cluster.&lt;/p&gt;
&lt;p&gt;That’s correct - right on your laptop.&lt;/p&gt;
&lt;p&gt;Word of warning - some familiarity with CLI tools is greatly useful here.&lt;/p&gt;
&lt;h2 id=&#34;if-you-prefer-video-ive-got-you-covered&#34;&gt;If you prefer video, I&amp;rsquo;ve got you covered&lt;/h2&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/FC1l09ckRkI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;h2 id=&#34;what-is-kubernetes&#34;&gt;What is Kubernetes?&lt;/h2&gt;
&lt;p&gt;Kubernetes (often shortened to K8s) is a platform for running and managing your containerised applications (think Docker) at scale.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Internal tools</title>
      <link>https://kamilpro.com/internal-tools/</link>
      <pubDate>Thu, 29 May 2025 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/internal-tools/</guid>
      <description>&lt;p&gt;No one asks you to build it. But once you do, they won’t be able to live without it.&lt;/p&gt;
&lt;p&gt;These tools usually start as a side gig, something to address your own pain – and soon they become an essential part of team tooling.&lt;/p&gt;
&lt;p&gt;I’m talking about Internal Tooling.&lt;/p&gt;
&lt;p&gt;Think:
– User creation.
– Database provisioning.
– Creating a Webapp deployment with NGINX for Kubernetes.
Fun the first time. Total pain after 100th run.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Keeping close to your users</title>
      <link>https://kamilpro.com/keeping-close-to-your-users/</link>
      <pubDate>Tue, 20 May 2025 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/keeping-close-to-your-users/</guid>
      <description>&lt;p&gt;We started working in IT as we prefer computers over people.&lt;/p&gt;
&lt;p&gt;Locking yourself in the basement and coding can get you only so far. The blessing of being isolated from your customers has a profound curse – you don’t know who your customers are.&lt;/p&gt;
&lt;p&gt;What are their problems?
What do they like about your work?
What do they hate about your work?
The worst part – all the input you get, is received by and filtered to you by someone else.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Developing locally: How Kubernetes and Minikube reminded me why a fast feedback loop matters</title>
      <link>https://kamilpro.com/developing-locally-how-kubernetes-and-minikube-reminded-me-why-a-fast-feedback-loop-matters/</link>
      <pubDate>Wed, 14 May 2025 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/developing-locally-how-kubernetes-and-minikube-reminded-me-why-a-fast-feedback-loop-matters/</guid>
      <description>&lt;p&gt;So there’s this feature you want to close today, ideally before lunch. And you almost got it right—just a little tweak here and a line change there.&lt;/p&gt;
&lt;p&gt;Save. Commit. Push. Open PR.&lt;/p&gt;
&lt;p&gt;The PR gets merged, and another couple of minutes pass for deployment.&lt;/p&gt;
&lt;p&gt;💥 Change doesn’t work.&lt;/p&gt;
&lt;p&gt;At this point, the cycle repeats itself – another fix follows another deployment, and every repetition drives you up the wall.&lt;/p&gt;
&lt;p&gt;Until the feature works end-to-end, eventually.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The 5-step Emotional Cycle of Change</title>
      <link>https://kamilpro.com/the-5-step-emotional-cycle-of-change/</link>
      <pubDate>Wed, 07 May 2025 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/the-5-step-emotional-cycle-of-change/</guid>
      <description>&lt;p&gt;Can you recognise when you’re going through change? The third stage is the most difficult.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Uniformed Optimism – The beginning, the new idea, and the goal: this is the moment when everything seems simple. At this point, you can only see positives and are unaware of the difficulties and sacrifices demanded by the task.&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;“Let’s automate the user creation process, it will only take a few hours of work and a single script to execute!”&lt;/p&gt;</description>
    </item>
    <item>
      <title>Is your team built for the project, or is the project just another task for the team?</title>
      <link>https://kamilpro.com/is-your-team-built-for-the-project-or-is-the-project-just-another-task-for-the-team/</link>
      <pubDate>Wed, 30 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/is-your-team-built-for-the-project-or-is-the-project-just-another-task-for-the-team/</guid>
      <description>&lt;p&gt;While working on projects, I mostly met two ways of organising teams.
On one hand, the team has been established for the sole purpose of delivering the project.&lt;/p&gt;
&lt;p&gt;On the other hand, the project was thrown into the already established team.
And by no means is organising a successful team an easy task. Finding people with the right skills is one success. The other – how they go along with each other.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell Hashtable – How to use great data structure</title>
      <link>https://kamilpro.com/powershell-hashtable-how-to-use-great-data-structure/</link>
      <pubDate>Mon, 20 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-hashtable-how-to-use-great-data-structure/</guid>
      <description>&lt;h2 id=&#34;learn-powershell&#34;&gt;Learn PowerShell&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh1&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell For IT Professionals Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh2&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell Scripting Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh3&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell CI/CD With GitHub Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PowerShell Hashtable is one of my favourite data structures.
Data is stored in the key-value pairs, and keys are hashed (hence the name).
Having keys hashed makes the hashtable blazingly fast at retrieving data.
All the keys in the PowerShell Hashtable must be unique – it’s a perfect data structure for storing IDs, email addresses, or anything else that requires uniqueness.
PowerShell uses a hashtable for parameters, and I will show you how you can use it to improve your code.
In this article, I will show you several practical examples of how to use a hashtable.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell Error Handling – How to make your scripts reliable</title>
      <link>https://kamilpro.com/powershell-error-handling-how-to-make-your-scripts-reliable/</link>
      <pubDate>Sat, 11 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-error-handling-how-to-make-your-scripts-reliable/</guid>
      <description>&lt;h2 id=&#34;learn-powershell&#34;&gt;Learn PowerShell&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh1&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell For IT Professionals Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh2&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell Scripting Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh3&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell CI/CD With GitHub Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Code fails – whether because of reasons out of our control, or because we didn’t consider the situation it might fail. So what should you do in case your script throws a PowerShell Error?&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/-rQTBuaIVS8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;h2 id=&#34;reason-for-powershell-error&#34;&gt;Reason for PowerShell Error&lt;/h2&gt;
&lt;p&gt;Expired credentials, timeout connections, lack of permissions and genuine software bugs – each of these are potential problems which might fall our code over. And if we don’t handle the error, our script will simply throw and terminate. It’s certainly not a desired state.&lt;/p&gt;</description>
    </item>
    <item>
      <title>7 Programming Books to make you a better programmer… or scripter</title>
      <link>https://kamilpro.com/7-programming-books-to-make-you-a-better-programmer-or-scripter/</link>
      <pubDate>Wed, 02 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/7-programming-books-to-make-you-a-better-programmer-or-scripter/</guid>
      <description>&lt;p&gt;Reading has been part of my life for a long time – it taught me new skills, and entertained me.&lt;/p&gt;
&lt;p&gt;There is something special about programming books, maybe it’s the depth they tend to go to. Or the fact they are written by the people who actually program in real life. Or perhaps, the fact they speak the same language like me.
The list of books here has broaden my skills in software development, soft skills and understanding how the business works.
I hope they will inspire you and help with your career.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Top 10 PowerShell Online Resources</title>
      <link>https://kamilpro.com/top-10-powershell-online-resources/</link>
      <pubDate>Sun, 11 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/top-10-powershell-online-resources/</guid>
      <description>&lt;p&gt;When I was starting my journey with PowerShell I was hungry… hungry for knowledge.
While learning the shell, I wanted to be inspired and know all the news. Attending a local London PowerShell meet-up kept me inspired – watching advanced users and what they were doing with PowerShell on the job was mind-blowing.
To keep up to date, I curated a list of PowerShell online resources which proved to be the greatest option to learn all about PowerShell.
Here’s the list.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stopped Drinking Coffee 3 Months Ago</title>
      <link>https://kamilpro.com/stopped-drinking-coffee-3-months-ago/</link>
      <pubDate>Mon, 27 May 2024 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/stopped-drinking-coffee-3-months-ago/</guid>
      <description>&lt;h2 id=&#34;2025-update&#34;&gt;2025 update&lt;/h2&gt;
&lt;p&gt;I started to experiment with caffeine
Namely, one coffee a week, usually on Sunday when I work on my newsletter.
What I can tell is that:
One coffee a week doesn’t create an addiction. I don’t feel like I need to have any more, and I don’t suffer from withdrawal symptoms.
I am truly wired up after this single dose – my concentration goes up for up to four hours.
I still have days when the smell of coffee hits me hard. It doesn’t drive me crazy, but the smell can overpower any other smell around me.
I think we can safely say I started using coffee like a tool – on purpose when needed.
Will I try to increase the dose to twice a week? Who knows, I might, just from pure curiosity. Just to figure out when the addiction starts.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Powershell And GitHub Actions</title>
      <link>https://kamilpro.com/powershell-and-github-actions/</link>
      <pubDate>Sun, 10 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-and-github-actions/</guid>
      <description>&lt;p&gt;I am happy to announce my latest product - PowerShell and GitHub Actions - in which you will learn how to develop, build, test and release a PowerShell module using GitHub Actions.&lt;/p&gt;
&lt;p&gt;The series is divided into three projects, which build upon each other to create the module.&lt;/p&gt;
&lt;p&gt;In the first project - Build a Module - you will start by developing a module locally. The module will implement GitHub&amp;rsquo;s API so that it will be able to manage GitHub&amp;rsquo;s repository lifecycle - creation, removal, updating and retrieving the repository. Once the module builds locally, you will develop a GitHub Workflow - or CI/CD pipeline - so that the module will be automatically after each push to the repository.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Health</title>
      <link>https://kamilpro.com/health/</link>
      <pubDate>Mon, 28 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/health/</guid>
      <description>&lt;p&gt;For several years, I&amp;rsquo;ve been working on my health - with goal of staying healthy as long as possible. It all started with working on sleep, which was followed by jogging, nutrition etc. where at this point it has become a part of my identity.&lt;/p&gt;
&lt;p&gt;The goal here is to keep this post as a baseline for comparing myself in the future, how much I drifted or improved over time, and then share to the any other person who wants work on themselves.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Speaking at PsDayUk 2023</title>
      <link>https://kamilpro.com/speaking-at-psdayuk-2023/</link>
      <pubDate>Sun, 16 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/speaking-at-psdayuk-2023/</guid>
      <description>&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/3m1RKykoWtU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;Side note, I was meant to publish this back in March 2023&amp;hellip;&lt;/p&gt;
&lt;p&gt;When I attended my first PowerShell meetup back in 2017, I had no idea it would lead me to where I am today.&lt;/p&gt;
&lt;p&gt;Fast forward to 3rd of March 2023, I was privileged to speak and share my knowledge with other #PowerShell enthusiasts at #PsDayUk conference. I presented the PowerShell based web server and web framework, which enables anyone familiar with the language, to create web applications.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell Error Handling - One error at the time please</title>
      <link>https://kamilpro.com/powershell-error-handling-one-error-at-the-time-please/</link>
      <pubDate>Sat, 21 Jan 2023 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-error-handling-one-error-at-the-time-please/</guid>
      <description>&lt;h2 id=&#34;learn-powershell&#34;&gt;Learn PowerShell&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh1&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell For IT Professionals Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh2&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell Scripting Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh3&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell CI/CD With GitHub Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;video&#34;&gt;Video&lt;/h2&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/-rQTBuaIVS8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;Code fails - whether because of reasons out of our control, or because we didn&amp;rsquo;t consider the situation it might fail. Expired credentials, timeout connections, lack of permissions go genuine software bug - each of these are potential problem which might fall our code over. And if we don&amp;rsquo;t handle the error, our script will simply throw and terminate. It&amp;rsquo;s certainly not desired state.&lt;/p&gt;</description>
    </item>
    <item>
      <title>1000 Subscribers!</title>
      <link>https://kamilpro.com/1000-subscribers/</link>
      <pubDate>Wed, 11 Jan 2023 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/1000-subscribers/</guid>
      <description>&lt;p&gt;I’ve just passed 1000 subscribers on my #YouTube channel - thank you! &lt;a href=&#34;https://lnkd.in/e6mBpUZA&#34;&gt;https://lnkd.in/e6mBpUZA&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Back in 2020 I have started a little experiment and since then it has been slowly growing and growing. I wanted to share my knowledge and experience with like-minded IT professionals. I wanted to create a community where people could come to learn more about #powershell and how to become modern #sysadmin, while being free to ask any questions on the topic! Yet I didn’t want to write something for sake of writing something. So I decided to record series of coding videos for absolute beginners - so that hopefully I would help and convert more users into PowerShell.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Developing a Web Application with PowerShell - Pode, the PowerFul Module</title>
      <link>https://kamilpro.com/developing-a-web-application-with-powershell-pode-the-powerful-module/</link>
      <pubDate>Thu, 08 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/developing-a-web-application-with-powershell-pode-the-powerful-module/</guid>
      <description>&lt;h2 id=&#34;learn-powershell&#34;&gt;Learn PowerShell&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh1&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell For IT Professionals Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh2&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell Scripting Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh3&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell CI/CD With GitHub Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;video&#34;&gt;Video&lt;/h2&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/N-yjDGzEYak?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;Web Applications are popular, and often require to either knowing some front-end development or using some other products which allow to build some applications. What about PowerShell, can you actually build a web app using only PowerShell language?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building PowerShell module on Azure DevOps pipeline - step by step guide</title>
      <link>https://kamilpro.com/building-powershell-module-on-azure-devops-pipeline-step-by-step-guide/</link>
      <pubDate>Wed, 01 Jun 2022 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/building-powershell-module-on-azure-devops-pipeline-step-by-step-guide/</guid>
      <description>&lt;h2 id=&#34;learn-powershell&#34;&gt;Learn PowerShell&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh1&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell For IT Professionals Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh2&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell Scripting Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh3&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell CI/CD With GitHub Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;video&#34;&gt;Video&lt;/h2&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/RZzmdF1iI7E?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;The World talks constantly about DevOps, CI/CI pipelines, automation - which great, but where to actually start? Especially when you&amp;rsquo;ve been writing PowerShell which is often used as automation language, but not actually as programming language?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sysadmin to DevOps - My PowerShell ignited story</title>
      <link>https://kamilpro.com/sysadmin-to-devops-my-powershell-ignited-story/</link>
      <pubDate>Mon, 02 May 2022 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/sysadmin-to-devops-my-powershell-ignited-story/</guid>
      <description>&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/lISZZ9R2ljU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;My story on how I turned from Sysadmin to DevOps engineer, with PowerShell driving my journey!&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s crazy to think that 5 years ago I couldn&amp;rsquo;t code, and one tweet simply started a snowball effect on my career.&lt;/p&gt;
&lt;p&gt;I wanted to document this moment in my life as I&amp;rsquo;ve passed Azure DevOps engineer exam and been working as DevOps engineer - something I wouldn&amp;rsquo;t even about thinking without PowerShell and its great community.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building PowerShell Module - how to organise your source files and build with ease</title>
      <link>https://kamilpro.com/building-powershell-module-how-to-organise-your-source-files-and-build-with-ease/</link>
      <pubDate>Mon, 14 Mar 2022 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/building-powershell-module-how-to-organise-your-source-files-and-build-with-ease/</guid>
      <description>&lt;h2 id=&#34;learn-powershell&#34;&gt;Learn PowerShell&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh1&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell For IT Professionals Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh2&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell Scripting Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh3&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell CI/CD With GitHub Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;video&#34;&gt;Video&lt;/h2&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/lKO_LPMfV1Y?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;Organising all files, scripts and functions required to build a module might give one a headache. PowerShell doesn&amp;rsquo;t come with native way of building the module, which doesn&amp;rsquo;t make our job easier.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell Module and Manifest- create and configure your tools</title>
      <link>https://kamilpro.com/powershell-module-and-manifest-create-and-configure-your-tools/</link>
      <pubDate>Wed, 23 Feb 2022 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-module-and-manifest-create-and-configure-your-tools/</guid>
      <description>&lt;h2 id=&#34;learn-powershell&#34;&gt;Learn PowerShell&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh1&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell For IT Professionals Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh2&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell Scripting Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh3&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell CI/CD With GitHub Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;video&#34;&gt;Video&lt;/h2&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/xPQq0ui8j78?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;The more PowerShell code you write results in more and more scripts. Often you have multiple scripts managing one domain or application. What in situation when scripts start to use other scripts to work, creating so called dependency?&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell Parameter Attributes - validate, group, require params and add pipeline to your function</title>
      <link>https://kamilpro.com/powershell-parameter-attributes-validate-group-require-params-and-add-pipeline-to-your-function/</link>
      <pubDate>Mon, 07 Feb 2022 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-parameter-attributes-validate-group-require-params-and-add-pipeline-to-your-function/</guid>
      <description>&lt;h2 id=&#34;learn-powershell&#34;&gt;Learn PowerShell&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh1&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell For IT Professionals Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh2&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell Scripting Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh3&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell CI/CD With GitHub Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;video&#34;&gt;Video&lt;/h2&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/hJIAK3qjlZQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;Having properly configured parameters help your users to understand the use of your function. It also helps fellow developers to appreciate the intended use of the function. In addition, it gives you more control of how the code flows through your script.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell function - converting script into function with parameters</title>
      <link>https://kamilpro.com/powershell-function-converting-script-into-function-with-parameters/</link>
      <pubDate>Fri, 21 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-function-converting-script-into-function-with-parameters/</guid>
      <description>&lt;h2 id=&#34;learn-powershell&#34;&gt;Learn PowerShell&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh1&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell For IT Professionals Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh2&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell Scripting Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh3&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell CI/CD With GitHub Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;video&#34;&gt;Video&lt;/h2&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/VGzEbEUfZCU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;So you&amp;rsquo;ve been writing your scripts for some time and wondering how to make them more PowerShell-like, so that they can be invoked from the console like all the other cmdlets?&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell PSCustomObject - Custom Object, the way it was meant to be</title>
      <link>https://kamilpro.com/powershell-pscustomobject-custom-object-the-way-it-was-meant-to-be/</link>
      <pubDate>Tue, 02 Nov 2021 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-pscustomobject-custom-object-the-way-it-was-meant-to-be/</guid>
      <description>&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/DAVGyCytsqM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;Everything is an object in PowerShell, and ability to create own object allows for one more way of controlling and handling data.&lt;/p&gt;
&lt;p&gt;In this video I&amp;rsquo;ll take you through the steps of creating PSCustomObject, working with its properties to doing more advanced topics - like adding methods and types to the object.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell Hash Table - Storing key value pairs</title>
      <link>https://kamilpro.com/powershell-hash-table-storing-key-value-pairs/</link>
      <pubDate>Tue, 14 Sep 2021 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-hash-table-storing-key-value-pairs/</guid>
      <description>&lt;h2 id=&#34;learn-powershell&#34;&gt;Learn PowerShell&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh1&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell For IT Professionals Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh2&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell Scripting Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh3&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell CI/CD With GitHub Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;video&#34;&gt;Video&lt;/h2&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/oti2l8EmAT8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;Quick crash course into using hash tables in PowerShell.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ps1&#34; data-lang=&#34;ps1&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;&amp;lt;#PSScriptInfo
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;.VERSION 1.0.0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;.GUID 50fa84c4-080d-45cd-82a8-9e8dba10b187
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;.AUTHOR Kamil Procyszyn
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;.COPYRIGHT Kamil Procyszyn
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;.PROJECTURI https://github.com/kprocyszyn/About-PowerShell
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;.RELEASENOTES 2021 September
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;sd&#34;&gt;DESCRIPTION&lt;/span&gt;&lt;span class=&#34;cm&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Link to the video: https://youtu.be/oti2l8EmAT8
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Documentation: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_hash_tables?view=powershell-7.1#:~:text=In%20PowerShell%2C%20each%20hash%20table%20is%20a%20Hashtable,to%20create%20an%20ordered%20dictionary%20%28System.Collections.Specialized.OrderedDictionary%29%20in%20PowerShell.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;#&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;&amp;lt;#
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;About hashtable:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;A hash table, also known as a dictionary or associative array, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;is a compact data structure that stores one or more key/value pairs. 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;For example, a hash table might contain a series of IP addresses and computer names, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;where the IP addresses are the keys and the computer names are the values, or vice versa.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;#&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#Creating a hashtable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$hash&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#############################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Adding items to hashtable #&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#############################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$hash&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Person&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;John&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$hash&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Email&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;John@john.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$hash&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Pet&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Cat&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$hash&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Surname&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Smith&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$hash&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Removing Key from hashtable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$hash&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Remove&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Surname&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$hash&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Prepopulating hashtable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Person&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Mike&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Email&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Mike@Mike.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Pet&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Dog&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Adding key that already exists throws&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Pet&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Snake&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;###################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Accessing items #&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;###################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Accessing with property name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Pet&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Pet&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# We can use variable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$property&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Email&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$property&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Accessing multiple properties&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Email&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Person&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Non existent value doesn&amp;#39;t throw&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Surname&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Surname&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Although we can check for true/false &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;bool&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Surname&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;###################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Updating values #&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;###################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# We can update and add new values&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Pet&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Snake&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Drink&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Flat white&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;pet&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Dog&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Food&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Lamb Shish Kebab&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;###########&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Looping #&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;###########&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# using foreach&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;foreach&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$key&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Keys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;{0} is {1}&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-f&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# piping to foreach-object&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Keys&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ForEach-Object&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;{0} is {1}&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-f&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# GetEnumerator() allows us to work with properties&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;GetEnumerator&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ForEach-Object&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;{0} is {1}&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-f&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Values can&amp;#39;t be updated while enumarated!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;foreach&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$key&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Keys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;BLAH&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Keys must be cloned before updating&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Keys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Clone&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ForEach-Object&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SANITISED&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;######&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# IF #&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;######&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# checking if hashtable exists&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;It&amp;#39;s there&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$empty&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$empty&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;It&amp;#39;s empty, but it&amp;#39;s there!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Checking if key exists&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Person&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;There&amp;#39;s some info about a person&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Deailing with false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Empty&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Null&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;$Null&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;False&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;$false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Empty&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;It&amp;#39;s there&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Null&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;It&amp;#39;s there&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;False&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;It&amp;#39;s there&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;ContainsKey&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Null&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;It&amp;#39;s null!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;######################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Custom expressions #&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;######################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$employee&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Name&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Beth&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;HourlyWage&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;HoursWorked&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;7.5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$employee&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Select-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Property&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;*,&lt;/span&gt;&lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;N&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Wage&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;E&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;HourlyWage&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;HoursWorked&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#############&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Splatting #&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#############&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Invoke-RestMethod&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Uri&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;catfact&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ninja&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;facts&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Method&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Get&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Select-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Data&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ExpandProperty&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$params&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Uri&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;catfact.ninja/facts&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Method&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Get&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Invoke-RestMethod&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;@params&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Select-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Data&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ExpandProperty&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Adding parameters&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Verbose&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;$true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$Verbose&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$params&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Verbose&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;$true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Invoke-RestMethod&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;@params&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#####################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Nested hashtables #&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#####################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Environments&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Development&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Server1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Admin&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Rachel Green&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Credentials&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;Username&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Serv1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;Password&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Secret&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Test&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Server2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Admin&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Joe Triviani&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Credentials&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;Username&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Serv2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;Password&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Letmein&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Accessing nested properties&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Environments&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Environments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Keys&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Environments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Values&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Environments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Environments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Test&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Credentials&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Environments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Test&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Credentials&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Updating nested properties&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Environments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Test&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Credentials&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Username&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;admin&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Environments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Test&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Credentials&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Quickly unwrapping all properties&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Environments&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ConvertTo-Json&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Depth&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;99&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Adding nested properties&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Environments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Production&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Environments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Production&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Server3&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Environments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Production&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Admin&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Ross Geller&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Environments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Production&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Credentials&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Environments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Production&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Credentials&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Username&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Serv3&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Environments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Production&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Credentials&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Password&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Nosuchplace&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#####################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Working with JSON #&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#####################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Environments&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ConvertTo-Json&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Out-File&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;temp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;envs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;json&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Content&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Temp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;envs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;json&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ConvertFrom-Json&lt;/span&gt; &lt;span class=&#34;c&#34;&gt;#This will create pscustomobject&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;##################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# PSCustomObject #&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;##################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Creating a new object&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$EnvironmentsObject&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;pscustomobject&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Development&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Server1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Admin&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Rachel Green&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Credentials&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;Username&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Serv1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;Password&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Secret&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Test&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Server2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Admin&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Joe Triviani&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Credentials&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;Username&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Serv2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;Password&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Letmein&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Casting hashtable to object&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;PSCustomObject&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$Environments&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>PowerShell Array and ArrayList - storing multiple items as a one variable</title>
      <link>https://kamilpro.com/powershell-array-and-arraylist-storing-multiple-items-as-a-one-variable/</link>
      <pubDate>Mon, 23 Aug 2021 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-array-and-arraylist-storing-multiple-items-as-a-one-variable/</guid>
      <description>&lt;h2 id=&#34;learn-powershell&#34;&gt;Learn PowerShell&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh1&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell For IT Professionals Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh2&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell Scripting Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh3&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell CI/CD With GitHub Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;video&#34;&gt;Video&lt;/h2&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/rvGd8kxXlVc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;Array is a basic data structure that allows to store multiple items in one variable. In this short video, I&amp;rsquo;ll show you how to create a basic array, populate it with items, how to add, access and modify items within array.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell Switch Statement - Different take on branching</title>
      <link>https://kamilpro.com/powershell-switch-statement-different-take-on-branching/</link>
      <pubDate>Wed, 04 Aug 2021 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-switch-statement-different-take-on-branching/</guid>
      <description>&lt;h2 id=&#34;learn-powershell&#34;&gt;Learn PowerShell&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh1&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell For IT Professionals Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh2&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell Scripting Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh3&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell CI/CD With GitHub Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;video&#34;&gt;Video&lt;/h2&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/EqJ0lBO1rM4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;One switch statement can replace multiple if/else statements, it makes code more readable and is really easy to use - there&amp;rsquo;s no reason why you shouldn&amp;rsquo;t give it a try!&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell For loop</title>
      <link>https://kamilpro.com/powershell-for-loop/</link>
      <pubDate>Wed, 14 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-loop/</guid>
      <description>&lt;h2 id=&#34;learn-powershell&#34;&gt;Learn PowerShell&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh1&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell For IT Professionals Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh2&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell Scripting Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh3&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell CI/CD With GitHub Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;video&#34;&gt;Video&lt;/h2&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/YQnBVn-9SN0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;For loop - do you actually need it, since there&amp;rsquo;s foreach loop? Turns out, yes - there are situations where for loop comes very handy.&lt;/p&gt;
&lt;p&gt;In this video I&amp;rsquo;ll show you the basic syntax of the for loop, going through nested for loops to end up with real case scenario from Azure Application Insights.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell If statement - controlling the flow of your code</title>
      <link>https://kamilpro.com/powershell-if-statement-controlling-the-flow-of-your-code/</link>
      <pubDate>Sat, 03 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-if-statement-controlling-the-flow-of-your-code/</guid>
      <description>&lt;h2 id=&#34;learn-powershell&#34;&gt;Learn PowerShell&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh1&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell For IT Professionals Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh2&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell Scripting Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh3&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell CI/CD With GitHub Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;video&#34;&gt;Video&lt;/h2&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/j8Ubwv8ApdU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;In this video we are exploring how to use If statement in various scenarios. If statement allows you to take tide control over the execution of your code, by dictating your script what to do in a given situation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Managing Software with Chocolatey - Automate installation and updates of your applications</title>
      <link>https://kamilpro.com/managing-software-with-chocolatey-automate-installation-and-updates-of-your-applications/</link>
      <pubDate>Wed, 10 Mar 2021 00:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/managing-software-with-chocolatey-automate-installation-and-updates-of-your-applications/</guid>
      <description>&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/Tmh8c77tHQ8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;Software management is not trivial task. Preparing for silent deployment is challenging, and even if you manage to install the application, how to keep it up to date?&lt;/p&gt;
&lt;p&gt;Chocolatey is package manager for Windows, that can fully automate lifecycle of your software.&lt;/p&gt;
&lt;p&gt;In this video, I&amp;rsquo;ll show you how to install Chocolatey, then how to find software, install it and finally keeping it up to date - all coming with free open-source license.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell for IT Professionals [#20] – Next Steps with PowerShell</title>
      <link>https://kamilpro.com/powershell-for-it-professionals-20-next-steps-with-powershell/</link>
      <pubDate>Thu, 26 Nov 2020 17:46:00 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-it-professionals-20-next-steps-with-powershell/</guid>
      <description>&lt;p&gt;Materials for &lt;a href=&#34;https://kamilpro.com/pwsh1&#34;&gt;PowerShell for IT Professionals course&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;update-2025&#34;&gt;Update 2025&lt;/h2&gt;
&lt;p&gt;I have released a new course called &lt;a href=&#34;https://kamilpro.com/pwsh2&#34;&gt;PowerShell Scripting&lt;/a&gt; which teaches you everything about scripting! Come join to continue your journey!&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kamilpro.com/pwsh2&#34;&gt;Click here to learn more&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;congratulations&#34;&gt;Congratulations!&lt;/h2&gt;
&lt;p&gt;This is 20th and last lesson in the course - and my aim here is to show you various paths you can take your PowerShell journey to.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m going to show what else you can do within PowerShell itself, as well how to keep up-to-day plus - what other doors writing code has opened for you - I&amp;rsquo;d love to hear back about this!&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell for IT Professionals [#19] – Websites and APIs</title>
      <link>https://kamilpro.com/powershell-for-it-professionals-19-websites-and-apis/</link>
      <pubDate>Sun, 15 Nov 2020 20:57:20 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-it-professionals-19-websites-and-apis/</guid>
      <description>&lt;p&gt;Materials for &lt;a href=&#34;https://kamilpro.com/pwsh1&#34;&gt;PowerShell for IT Professionals course&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;PowerShell is a great server automation tool, but what about Internet and any other web served services?&lt;/p&gt;
&lt;p&gt;As it turns out, PowerShell is great in scrapping websites and consuming APIs - and it&amp;rsquo;s been one of the main development areas of the tool in the last couple of years.&lt;/p&gt;
&lt;p&gt;In this lesson we are going to see how to use PowerShell to download files, scrap websites, discover links.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell for IT Professionals [#18] – Working with text strings</title>
      <link>https://kamilpro.com/powershell-for-it-professionals-18-working-with-text-strings/</link>
      <pubDate>Tue, 03 Nov 2020 17:33:18 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-it-professionals-18-working-with-text-strings/</guid>
      <description>&lt;p&gt;Materials for &lt;a href=&#34;https://kamilpro.com/pwsh1&#34;&gt;PowerShell for IT Professionals course&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Although PowerShell treats everything as object - including text strings - working with text might be particularly difficult - at least when first approached.&lt;/p&gt;
&lt;p&gt;In this lesson we are going to have a closer look at what is possible with built in text methods and see how these can help us e.g. by extracting a substring of text.&lt;/p&gt;
&lt;p&gt;PowerShell can also be great at parsing log files - we will use Select-String to quickly filter out the lines of text with the phrase we are looking for e.g. error.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell for IT Professionals [#17] – Scripting part 4 – parameters, running remotely and formatting</title>
      <link>https://kamilpro.com/powershell-for-it-professionals-17-scripting-part-4-parameters-running-remotely-and-formatting/</link>
      <pubDate>Mon, 19 Oct 2020 18:32:20 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-it-professionals-17-scripting-part-4-parameters-running-remotely-and-formatting/</guid>
      <description>&lt;p&gt;Materials for &lt;a href=&#34;https://kamilpro.com/pwsh1&#34;&gt;PowerShell for IT Professionals course&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the last part of scripting series, we will make the script to be able to query remote machines, e.g. servers.&lt;/p&gt;
&lt;p&gt;We will also check how to add parameters to the script (and configure the default value of parameter) so that user will able to pass the parameter name like in a standard PowerShell cmdlet.&lt;/p&gt;
&lt;p&gt;Finally, we are going to format the script so that it looks more reliable and make some refactoring so that the logic is simpler.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell for IT Professionals [#16] – Scripting part 3 – Add-Member and network</title>
      <link>https://kamilpro.com/powershell-for-it-professionals-16-scripting-part-3-add-member-and-network/</link>
      <pubDate>Tue, 13 Oct 2020 19:12:40 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-it-professionals-16-scripting-part-3-add-member-and-network/</guid>
      <description>&lt;p&gt;Materials for &lt;a href=&#34;https://kamilpro.com/pwsh1&#34;&gt;PowerShell for IT Professionals course&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In this lesson we are taking our script further by adding details about IP configuration and last installed hotfixes.&lt;/p&gt;
&lt;p&gt;But it turns out, the networking information is not that shallow as it seems at the first glance - thus I&amp;rsquo;ll show you how to retrieve the information from the configuration.&lt;/p&gt;
&lt;p&gt;We will also look on how to reuse our already created object so that we don&amp;rsquo;t need to duplicate code.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell for IT Professionals [#15] – Scripting part 2 – IF and psobject</title>
      <link>https://kamilpro.com/powershell-for-it-professionals-15-scripting-part-2-if-and-psobject/</link>
      <pubDate>Mon, 05 Oct 2020 17:16:21 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-it-professionals-15-scripting-part-2-if-and-psobject/</guid>
      <description>&lt;p&gt;Materials for &lt;a href=&#34;https://kamilpro.com/pwsh1&#34;&gt;PowerShell for IT Professionals course&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In this lesson we carry on writing the scripting by gathering requirements and putting them together as comments in code.&lt;/p&gt;
&lt;p&gt;Then we will retrieve OS information with the help of WMI and display it on the screen with Write-Host.&lt;/p&gt;
&lt;p&gt;Although using Write-Host is easy to use, it doesn&amp;rsquo;t really allow us to do very much e.g. we cannot export information to the CSV.&lt;/p&gt;
&lt;p&gt;Therefore we change it and start using custom PSObject - that way our script will start returning information like a regular PowerShell command.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell for IT Professionals [#14] – Scripting – Hello World!</title>
      <link>https://kamilpro.com/powershell-for-it-professionals-14-scripting-hello-world/</link>
      <pubDate>Sat, 26 Sep 2020 13:00:35 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-it-professionals-14-scripting-hello-world/</guid>
      <description>&lt;p&gt;Materials for &lt;a href=&#34;https://kamilpro.com/pwsh1&#34;&gt;PowerShell for IT Professionals course&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In this lesson we will be preparing our workstation for writing PowerShell scripts. We will start by enabling RSAT and then install Visual Studio Code which is a recommended and free PowerShell code editor.&lt;/p&gt;
&lt;p&gt;We will then have a look at the basic function of VS Code and create a simple “Hello World” script.&lt;/p&gt;
&lt;h2 id=&#34;exercises&#34;&gt;Exercises&lt;/h2&gt;
&lt;p&gt;If you haven&amp;rsquo;t followed along, you definitely would like to install VS Code and create a *.ps1 file. Then create a script that will display your name.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell for IT Professionals [#13] – Is PowerShell secure?</title>
      <link>https://kamilpro.com/powershell-for-it-professionals-13-is-powershell-secure/</link>
      <pubDate>Sat, 12 Sep 2020 16:09:00 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-it-professionals-13-is-powershell-secure/</guid>
      <description>&lt;p&gt;Materials for &lt;a href=&#34;https://kamilpro.com/pwsh1&#34;&gt;PowerShell for IT Professionals course&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In this lesson we will have a look on PowerShell built-in security features and how it differs from e.g. BAT files.&lt;/p&gt;
&lt;p&gt;We will then have a look how execution policy can help to control on what basis the PowerShell scripts can be executed.&lt;/p&gt;
&lt;p&gt;At the end, we will configure some GPOs to control the execution and transcription of scripts.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell for IT Professionals [#12] – WMI – Windows Management Instrumentation</title>
      <link>https://kamilpro.com/powershell-for-it-professionals-12-wmi-windows-management-instrumentation/</link>
      <pubDate>Sat, 05 Sep 2020 16:27:10 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-it-professionals-12-wmi-windows-management-instrumentation/</guid>
      <description>&lt;p&gt;Materials for &lt;a href=&#34;https://kamilpro.com/pwsh1&#34;&gt;PowerShell for IT Professionals course&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In this lesson we learn how to use PowerShell to access WMI (Windows Management Instrumentation), so that we can gain often hidden or obscure information.&lt;/p&gt;
&lt;p&gt;We will then use &lt;a href=&#34;https://github.com/vinaypamnani/wmie2/releases&#34;&gt;WMI Explorer&lt;/a&gt; graphical tool to ease discovering all possible classes and instances that WMI provides.&lt;/p&gt;
&lt;p&gt;Finally, we will use WMI queries to add another level of granularity in GPO so that we can target very specific computers in it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell for IT Professionals [#11] – Variables</title>
      <link>https://kamilpro.com/powershell-for-it-professionals-11-variables/</link>
      <pubDate>Sat, 29 Aug 2020 10:39:05 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-it-professionals-11-variables/</guid>
      <description>&lt;p&gt;Materials for &lt;a href=&#34;https://kamilpro.com/pwsh1&#34;&gt;PowerShell for IT Professionals course&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In this lesson we&amp;rsquo;re going to learn how what Variables are, why it&amp;rsquo;s good to use them and how to actually create them. We will then assign various values to variables to and use them solely, and in parameters.&lt;/p&gt;
&lt;p&gt;We will also have a look at foreach loop so that we can e.g. ping multiple computers using single variable with multiple objects in it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell for IT Professionals [#10] – Remote management with PowerShell</title>
      <link>https://kamilpro.com/powershell-for-it-professionals-10-remote-management-with-powershell/</link>
      <pubDate>Mon, 24 Aug 2020 10:00:00 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-it-professionals-10-remote-management-with-powershell/</guid>
      <description>&lt;p&gt;Materials for &lt;a href=&#34;https://kamilpro.com/pwsh1&#34;&gt;PowerShell for IT Professionals course&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In this lesson we&amp;rsquo;re going to learn how to do one-to-one and one-to-many remote management with PowerShell. There&amp;rsquo;s no need for telnet, ssh or psexec as PowerShell has its own protocol that&amp;rsquo;s built in right into Windows. We will look at how to create interactive sessions and send commands to multiple servers at once.&lt;/p&gt;
&lt;h2 id=&#34;exercises&#34;&gt;Exercises&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;With Enter-PSSesion, Remote to remote server and  restart “Windows update” service&lt;/li&gt;
&lt;li&gt;With Invoke-Command find out the remote computers last boot up/startup time&lt;/li&gt;
&lt;li&gt;List all running processes on remote server without using Enter-PsSession or Invoke-Command&lt;/li&gt;
&lt;li&gt;If you have a Domain Controller available, use Invoke-Command to list all computers on that network (you can use * for filter), remember that you need to provide all necessary parameters with your command in the script block so command just runs and doesn&amp;rsquo;t prompt for any additional information.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;notes&#34;&gt;Notes&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Enable-Psremoting&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Enter-PSSesion&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ps-svr1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Hostname&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;GIP&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# I can even run commands that are not available on my source machine&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-ADDomainController&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-ADUser&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Exit&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Exit-PSSession&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Caution about double hoping&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Invoke-Command&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Invoke-Command&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-computerName&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ps-svr1&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-command&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;get-service&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Invoke command executes commands on the remote comptuers and brings back the results&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Can you tell a difference?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Invoke-Command&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-computerName&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ps-svr1&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-command&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;get-service&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Where &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;status&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-eq&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;stopped&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Invoke-Command&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-computerName&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ps-svr1&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-command&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;get-service&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Where &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;status&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-eq&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;stopped&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# -ComputerName in the commandlet&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ComputerName&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ps-svr1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Invoke-Command&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-computerName&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ps-svr1&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-command&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;get-service&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# they look the same, but are they?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ComputerName&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ps-svr1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;GM
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Invoke-Command&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-computerName&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ps-svr1&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-command&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;get-service&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;GM
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>PowerShell for IT Professionals [#9] – Setting up Active Directory</title>
      <link>https://kamilpro.com/powershell-for-it-professionals-9-setting-up-active-directory/</link>
      <pubDate>Wed, 19 Aug 2020 12:49:09 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-it-professionals-9-setting-up-active-directory/</guid>
      <description>&lt;p&gt;Materials for &lt;a href=&#34;https://kamilpro.com/pwsh1&#34;&gt;PowerShell for IT Professionals course&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;exercises&#34;&gt;Exercises&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;On domain controller, find module that allows to manage Active Directory&lt;/li&gt;
&lt;li&gt;List all the Active Directory users&lt;/li&gt;
&lt;li&gt;List members of “Enterprise Administrators”&lt;/li&gt;
&lt;li&gt;Find the feature name for &lt;em&gt;Windows Server Backup&lt;/em&gt; and install it with PowerShell&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;commands&#34;&gt;Commands&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;### Server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Check IP configuration&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Show steps in Server how to install&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Check hostname&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Hostname&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Rename server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Rename-Computer&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ps-svr1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Restart computer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Reboot-computer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Get-WindowsFeature&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Install-WindowsFeature &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Install-WindowsFeature&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Name&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;AD-Domain&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-Services&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-IncludeManagementTools&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Install-ADDSForest&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-DomainName&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;posh&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;pri&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;### Client&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Check IP&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;GIP&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Hostname&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Add-Computer&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-DomainName&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;posh&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;pri&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>PowerShell for IT Professionals [#8] – Manage everything with PowerShell</title>
      <link>https://kamilpro.com/powershell-for-it-professionals-8-manage-everything-with-powershell/</link>
      <pubDate>Fri, 14 Aug 2020 16:31:00 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-it-professionals-8-manage-everything-with-powershell/</guid>
      <description>&lt;p&gt;Materials for &lt;a href=&#34;https://kamilpro.com/pwsh1&#34;&gt;PowerShell for IT Professionals course&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;exercises&#34;&gt;Exercises&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Can you uninstall module that was installed with Install-Module? Confirm your answer with Get-Module -ListAvaiable&lt;/li&gt;
&lt;li&gt;Can you update the installed module?&lt;/li&gt;
&lt;li&gt;Perhaps, you&amp;rsquo;d like to install version 1.0.0.0 of SNMP module, how can you force Install-Module to do so?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;install-module-error&#34;&gt;Install-Module error&lt;/h2&gt;
&lt;p&gt;If you encounter the issue with downloading modules, run this commandlet as a temporary workaround (it must be applied every time the shell is restarted):&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell for IT Professionals [#7] – Formatting output</title>
      <link>https://kamilpro.com/powershell-for-it-professionals-7-formatting-output/</link>
      <pubDate>Tue, 11 Aug 2020 12:35:44 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-it-professionals-7-formatting-output/</guid>
      <description>&lt;p&gt;Materials for &lt;a href=&#34;https://kamilpro.com/pwsh1&#34;&gt;PowerShell for IT Professionals course&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;exercises&#34;&gt;Exercises&lt;/h2&gt;
&lt;p&gt;Send output of any commandlet, e.g. get service to Printer&lt;/p&gt;
&lt;h2 id=&#34;lesson-notes&#34;&gt;Lesson notes&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# So far, we&amp;#39;ve been using default PowerShell behaviour for formatting output&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Although in the last lesson we did filtering data with Where-Object and Select-Object&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# We didn&amp;#39;t really focus on how data is presented on the screen. Let&amp;#39;s see what can be done here.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Let&amp;#39;s have a look at local &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-LocalGroup&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-LocalGroup&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Format-List&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#Alias is FL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#Like with Select-Object, we can specify properties we&amp;#39;re after&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-LocalGroup&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;fl &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-Property&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sid&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#Another example when List might be easier to read then table&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-CimInstance&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;win32_ComputerSystem&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;## Format Table&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#ipconfig...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-NetIPConfiguration&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;OR&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;GIP&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-NetIPConfiguration&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;FT
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;GIP&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;FT &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-Wrap&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;GIP&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Properties&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;GIP&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;FT &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-Autosize&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;### Grouping&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Format-Table&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-GroupBy&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Status&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Sort-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Status&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Sort-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Status&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Format-Table&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-GroupBy&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Status&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;### What if I want to show all properties, but they don&amp;#39;t fit on screen&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;GIP&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;FL &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Or we can display to GUI&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;gip&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Select-Object&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Out-GridView&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;### Speaking of Out...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;by&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;PowerShell&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;adds&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Out-Host&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;every&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;command&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;you&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;so&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;that&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;it&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;displays&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;screen&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;But&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;we&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;can&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Out&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;some&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;other&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;places&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Command&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Out&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Sort-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Status&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Format-Table&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-GroupBy&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Status&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Out-File&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;temp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;services&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Sort-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Status&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;  &lt;span class=&#34;nb&#34;&gt;ConvertTo-Html&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Out-File&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;temp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;html&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>PowerShell for IT Professionals [#6] – Filtering output</title>
      <link>https://kamilpro.com/powershell-for-it-professionals-6-filtering-output/</link>
      <pubDate>Fri, 07 Aug 2020 12:00:32 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-it-professionals-6-filtering-output/</guid>
      <description>&lt;p&gt;Materials for &lt;a href=&#34;https://kamilpro.com/pwsh1&#34;&gt;PowerShell for IT Professionals course&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;exercises&#34;&gt;Exercises&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;List all services that are stopped&lt;/li&gt;
&lt;li&gt;List all service that are stopped and they name begins with W&lt;/li&gt;
&lt;li&gt;Display only the Display Name of services that stopped and their name begins with W&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;lesson-notes&#34;&gt;Lesson notes&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;### Filtering&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Some commands accept wild cards in the search or have a filter parameter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;*,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#But there&amp;#39;s more universal method, based on property names&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Where-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Filter&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Status&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-eq&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;running&amp;#39;&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#So let&amp;#39;s break it down&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#Where-Object allows to filter out the incoming object based on the comparation operator&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#Most popular operators are:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;-eq&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Equals&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;-ne&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;equals&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;-gt&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Greather&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;than&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;-lt&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Less&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;-le&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Less&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;than&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;equal&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;-ge&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Greater&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;than&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;equal&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;-Like&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;-Notlike&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#There are more many, you can check these help topics:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Help&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;about_Operators&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Help&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;about_Comparison_Operators&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#$_ is current object; it&amp;#39;s what we&amp;#39;re piping in our case Get-Service&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# .Status that follows $_ indicates we&amp;#39;re passing only specific property of the Get-Service object, in this case Status&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;GM
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#Let&amp;#39;s talk this through this example once again&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Where-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Filter&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Status&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-eq&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;running&amp;#39;&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#We can use an alias Where instead of Where-Object&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Where &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Status&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-eq&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;running&amp;#39;&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#I can also link multiple comparissions together with -and -or&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Where &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Status&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-eq&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;stopped&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-and&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-like&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;w*&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;### What if I&amp;#39;d like to choose only specific properties&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Select-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Property&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DisplayName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Status&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# I can use alias Select instead &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Select &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DisplayName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Status&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Also allows to access hidden by default properties&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Let&amp;#39;s find out the path of the program where it&amp;#39;s running from, and when was it lunched&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Process&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Select &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Path&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Select &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;StartTime&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;### Always filter left&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>PowerShell for IT Professionals [#5] – Providers</title>
      <link>https://kamilpro.com/powershell-for-it-professionals-5-providers/</link>
      <pubDate>Tue, 04 Aug 2020 10:55:00 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-it-professionals-5-providers/</guid>
      <description>&lt;p&gt;Materials for &lt;a href=&#34;https://kamilpro.com/pwsh1&#34;&gt;PowerShell for IT Professionals course&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;exercises&#34;&gt;Exercises&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Create a folder in root of C: with the name of PowerShell&lt;/li&gt;
&lt;li&gt;Create a file inside the folder with the name of your choice and no content&lt;/li&gt;
&lt;li&gt;Retrieve all items from Env: drive&lt;/li&gt;
&lt;li&gt;Check the version of Notepad.exe in Windows directory&lt;/li&gt;
&lt;li&gt;Discover current Windows build version by registry property: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;notes-from-the-lesson&#34;&gt;Notes from the lesson&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Provider allows to access some data storage (e.g. File system, registry, remote system, Active Directory)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# This concept might sound a bit abstract at first, but becomes very straight forward once you&amp;#39;ve used it for a while&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Provider once connected to the data storage, kind of &amp;#34;mounts&amp;#34; it like a network drive, allowing to browse and manage it&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Once the storage is mounted PowerShell creates so called PSDrive&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Let&amp;#39;s review available providers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Psprovider&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Let&amp;#39;s review some PSDrives&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-PSDrive&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# A quick refresher how file system is organised: Drives, Folders, Files&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Since PowerShell connects to many different file data storages, it uses the generic term Item and specifies with type. Thus a folder is an Item of Type Directory, same as Registry key, it&amp;#39;s best described in the help:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Help&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;New-Item&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-full&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#We have three main nouns we&amp;#39;re working with:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Item&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-managing&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;files&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;folders&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;registry&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;keys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;certificates&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;etc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ItemProperty&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Get-ItemProperty&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;windows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;explorer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;exe&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Format-List&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ChildItem&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;lists&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;content&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;directory&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Get-ChildItem&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Windows&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# If you&amp;#39;ve used other shells in the past&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# You change directories by using Set-Location, however CD is an alias to the command&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# And since it&amp;#39;s PowerShell, you&amp;#39;re not only limited to file system&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# You can create a new directory with New-Item -Name Folder -Type Directory, however you can use MKDIR&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# You can list a content of current directory with Get-ChildItem, however DIR, and LS are also available&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# You can list a content of a file with Get-Content, or you can use CAT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Let&amp;#39;s put some of what we&amp;#39;ve seen into practice&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# File operations&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;New-Item&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Temp&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ItemType&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Directory&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Path&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Set-Location&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Temp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;new-item&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Type&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;File&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file1&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Value&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Kamil&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;nb&#34;&gt;new-item&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Type&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;File&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file2&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Value&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Kamil&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-ChildItem&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Content&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#Certificate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-ChildItem&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Cert&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CurrentUser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;My&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Exercises&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;mf&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;folder&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;root&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;PowerShell&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;mf&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;inside&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;folder&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;your&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;choice&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;no&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;mf&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Retrieve&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;all&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;items&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Env&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;drive&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;mf&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Check&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Notepad&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;exe&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Windows&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;directory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;mf&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Discover&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;current&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Windows&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;build&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;by&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;registry&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;property&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;HKEY_LOCAL_MACHINE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SOFTWARE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Microsoft&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Windows&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;NT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CurrentVersion&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;```&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>PowerShell for IT Professionals [#4] – Pipeline</title>
      <link>https://kamilpro.com/powershell-for-it-professionals-4-pipeline/</link>
      <pubDate>Thu, 30 Jul 2020 07:45:57 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-it-professionals-4-pipeline/</guid>
      <description>&lt;p&gt;Materials for &lt;a href=&#34;https://kamilpro.com/pwsh1&#34;&gt;PowerShell for IT Professionals course&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;exercises&#34;&gt;Exercises&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;There&amp;rsquo;s one particular command that allows you output anything from shell to file, find that command and use with any commands like Get-Service or Get-Process. Does it behave differently than Export-CSV?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Programs often use CSV but don&amp;rsquo;t use comma for delimiter - try to exporting to CSV but change the delimiter&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Can you print directly from shell? See if there are any commands available and if so, print some Event Logs!&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell for IT Professionals [#3] – Running Commands</title>
      <link>https://kamilpro.com/powershell-for-it-professionals-2-running-commands/</link>
      <pubDate>Mon, 27 Jul 2020 19:08:38 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-it-professionals-2-running-commands/</guid>
      <description>&lt;p&gt;Materials for &lt;a href=&#34;https://kamilpro.com/pwsh1&#34;&gt;PowerShell for IT Professionals course&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;exercises&#34;&gt;Exercises&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Display a list of all services that start with the letter W&lt;/li&gt;
&lt;li&gt;Display all processes (you might need to use Help to discover the right command. Remember the noun might be singular).&lt;/li&gt;
&lt;li&gt;Open Notepad (you can simply punch in notepad in the shell)
&lt;ol&gt;
&lt;li&gt;Display only processes that have a name “Notepad”&lt;/li&gt;
&lt;li&gt;Once you can there&amp;rsquo;s only one instance of Notepad running, close it with PowerShell! (Verb would be Stop)&lt;/li&gt;
&lt;li&gt;Confirm with Shell there are no more Notepad processes running&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Display last 10 lines of &lt;em&gt;C:\windows\setupact.log&lt;/em&gt; file (the command you&amp;rsquo;d like to use has &lt;em&gt;Content&lt;/em&gt; in noun&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;commands-used-in-video&#34;&gt;Commands used in video&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#We&amp;#39;ll do some work on services now, let&amp;#39;s see what commands are available&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;help&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;service&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#Lets retrieve all services&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#I&amp;#39;m more interested in bits and wuasvc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-name&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;wuauserv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bits&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#I can take a shortcut of parameter as long as &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-n&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;wuauserv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bits&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#But as we know from help, name is positional parameter thus I can run same command as...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;wuauserv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bits&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#Let&amp;#39;s stop services&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Stop-Service&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;wuauserv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bits&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;wuauserv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bits&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#And start services&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Start-Service&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;wuauserv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bits&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Service&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;wuauserv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bits&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#In excercises I&amp;#39;ve asked to retrieve event logs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-EventLog&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-LogName&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Application&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Newest&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;10&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-EntryType&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Error&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;## Naming convention&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Verb-Noun. You can retrieve all &amp;#34;approved&amp;#34; verbs by&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-Verb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;## There&amp;#39;s also a naming convention for nouns.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Nouns from the same module usually start with the same &amp;#34;Prefix&amp;#34; e.g. Active Directory cmdlets start with AD&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;## As it&amp;#39;s shell you can call other familiar programs, e.g. ping, nslookup etc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ping&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;8.8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;nslookup&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bbc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;## Some errors&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;GetService&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Get&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Service&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Gt-Service&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>PowerShell for IT Professionals [#1] [#2] – Help</title>
      <link>https://kamilpro.com/powershell-for-it-professionals-1-help/</link>
      <pubDate>Thu, 23 Jul 2020 16:32:54 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-for-it-professionals-1-help/</guid>
      <description>&lt;p&gt;Materials for &lt;a href=&#34;https://kamilpro.com/pwsh1&#34;&gt;PowerShell for IT Professionals course&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;about-files-solve-issue&#34;&gt;About files solve issue&lt;/h2&gt;
&lt;p&gt;If after running &lt;em&gt;Update-Help&lt;/em&gt; you don&amp;rsquo;t have About topics, you might want to manually download them and extract the archive to the root of:&lt;/p&gt;
&lt;p&gt;C:\Windows\System32\WindowsPowerShell\v1.0\en&lt;/p&gt;
&lt;h2 id=&#34;powershell-help---exercises&#34;&gt;PowerShell help - Exercises&lt;/h2&gt;
&lt;p&gt;PowerShell is great in working with CSV files. Can you find help for any CSV related commands (you will need to use a wildcard)&lt;/p&gt;
&lt;p&gt;Can you tell what&amp;rsquo;s a difference between &lt;em&gt;ConvertTo-CSV&lt;/em&gt; and &lt;em&gt;Export-CSV&lt;/em&gt; commands&lt;/p&gt;</description>
    </item>
    <item>
      <title>Deploying software with GPO</title>
      <link>https://kamilpro.com/deploying-software-with-gpo/</link>
      <pubDate>Sun, 15 Mar 2020 14:25:59 +0000</pubDate>
      <guid>https://kamilpro.com/deploying-software-with-gpo/</guid>
      <description>&lt;p&gt;Having software consistently deployed across the fleet of computers is one of the key points that can be automated.&lt;/p&gt;
&lt;p&gt;If I have a choice (and it makes sense), I will always choose GPO over any other solution because it&amp;rsquo;s embedded into Active Directory thus not requiring installation, learning and maintenance of additional management tool.&lt;/p&gt;
&lt;h2 id=&#34;msi---software-installation&#34;&gt;MSI - Software Installation&lt;/h2&gt;
&lt;p&gt;One of the main advantages of MSI installers is that in 99% of cases you can just use the “Software Installation” option in GPO, and GPO will take care of the silent installation. In addition, if the newer version of the installer is ever listed, you can simply link the newer version of the installer, and GPO will take care of upgrading current installations.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Prepare Hyper-V template of Windows Server 2016/2019</title>
      <link>https://kamilpro.com/prepare-hyper-v-template-of-windows-server-2016-2019/</link>
      <pubDate>Sun, 08 Mar 2020 10:52:17 +0000</pubDate>
      <guid>https://kamilpro.com/prepare-hyper-v-template-of-windows-server-2016-2019/</guid>
      <description>&lt;p&gt;Deploying a new server is always fun! Well, at least the part after ISO download, installation, patching. Having said that, why not create a template so that you jump right into the fun?&lt;/p&gt;
&lt;p&gt;So we are essentially going to create a preconfigured VHDX file that can be attached to the newly created VM, and it will take you straight to the login screen.&lt;/p&gt;
&lt;h2 id=&#34;whats-needed&#34;&gt;What&amp;rsquo;s needed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Windows server or Windows 10 with Hyper-V role and management tools enabled&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.microsoft.com/en-us/windows-hardware/get-started/adk-install&#34;&gt;Windows Assessment and Deployment Toolkit (ADK)&lt;/a&gt; - I always pick the latest version available, at the moment of writing this - Windows 10, version 1903 - is latest.&lt;/li&gt;
&lt;li&gt;ISO with the source - I&amp;rsquo;ve used Server for 2016/2019 from my.visualstudio.com (you need an MSDN subscription for this), or from &lt;a href=&#34;https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2019?filetype=ISO&#34;&gt;trial center&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;preparation&#34;&gt;Preparation&lt;/h2&gt;
&lt;h3 id=&#34;hyper-v&#34;&gt;Hyper-V&lt;/h3&gt;
&lt;p&gt;Open Windows PowerShell as admin and paste this command:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Restarting VSS Writers with PowerShell script</title>
      <link>https://kamilpro.com/restarting-vss-writers-with-powershell-script/</link>
      <pubDate>Sun, 01 Dec 2019 18:27:18 +0000</pubDate>
      <guid>https://kamilpro.com/restarting-vss-writers-with-powershell-script/</guid>
      <description>&lt;h2 id=&#34;learn-powershell&#34;&gt;Learn PowerShell&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh1&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell For IT Professionals Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh2&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell Scripting Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh3&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell CI/CD With GitHub Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;VSS Writers are responsible for backups - if they stop working, then backups might fail. The solution to that is restarting VSS Writers, but the problem here is that there are many, and at least out of the box, there&amp;rsquo;s no mechanism to make this automatic… but there&amp;rsquo;s PowerShell.&lt;/p&gt;
&lt;h2 id=&#34;im-not-interested-in-your-code-i-just-want-to-restart-these-vss-writers&#34;&gt;I&amp;rsquo;m not interested in your code, I just want to restart these VSS Writers&lt;/h2&gt;
&lt;p&gt;In that case, head on to: &lt;a href=&#34;https://github.com/kprocyszyn/tools/tree/master/KPVSSWriter&#34;&gt;mygithub&lt;/a&gt;, use the code and run:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Monitoring – why you need it</title>
      <link>https://kamilpro.com/monitoring-why-you-need-it/</link>
      <pubDate>Tue, 09 Jul 2019 06:45:00 +0000</pubDate>
      <guid>https://kamilpro.com/monitoring-why-you-need-it/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s Friday. 5.20PM. So close to the long weekend. Monday is bank holiday - thus three days off. Very happy Friday.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;re going to the server room to check some minor details. Upon opening the main door, you can feel that cold breeze and characteristic noise of hundreds of spinning fans. You quickly skim through all flashy lights, as it&amp;rsquo;s a good habit.&lt;/p&gt;
&lt;p&gt;And then you notice there&amp;rsquo;s something wrong. An orange light - why is there an orange light? Hopefully it&amp;rsquo;s nothing serious. It&amp;rsquo;s just above one of the disks. Fuck, it&amp;rsquo;s the main file server - the one that was meant to be virtulised a long time ago, but for some reason it haven&amp;rsquo;t happened for over two years.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The automation process stages</title>
      <link>https://kamilpro.com/the-automation-process-stages/</link>
      <pubDate>Tue, 25 Jun 2019 07:50:11 +0000</pubDate>
      <guid>https://kamilpro.com/the-automation-process-stages/</guid>
      <description>&lt;p&gt;This will be a high level experience I&amp;rsquo;ve been gaining whenever automating manual processes.&lt;/p&gt;
&lt;h2 id=&#34;what-does-it-mean-to-automate&#34;&gt;What does it mean to automate?&lt;/h2&gt;
&lt;p&gt;Simply put, is to remove a person from equation in order to complete the task. It can go as far as automating the whole process, or just part of it. The main goal here is to release the resource - that is a person&amp;rsquo;s time and energy - and redirect it toward something more valuable. They are also side benefits of automating like consistency, audit ability and cost.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sysadmin’s tools – what I have installed on my laptop</title>
      <link>https://kamilpro.com/sysadmins-tools-what-i-have-installed-on-my-laptop/</link>
      <pubDate>Sun, 06 Jan 2019 20:40:21 +0000</pubDate>
      <guid>https://kamilpro.com/sysadmins-tools-what-i-have-installed-on-my-laptop/</guid>
      <description>&lt;p&gt;We need tools to make our work. Either it&amp;rsquo;s notepad and paper, a hammer (for server&amp;rsquo;s hard reset… just joking) or some sophisticated and bespoke peace of hardware - we as professionals need tools to make our work better, or even possible.&lt;/p&gt;
&lt;p&gt;Since working as IT person, there are many software tools I need to do my day to day tasks, thus here&amp;rsquo;s the list of pieces of software I&amp;rsquo;ve been finding useful.&lt;/p&gt;</description>
    </item>
    <item>
      <title>2018 summary</title>
      <link>https://kamilpro.com/2018-summary/</link>
      <pubDate>Tue, 01 Jan 2019 13:42:49 +0000</pubDate>
      <guid>https://kamilpro.com/2018-summary/</guid>
      <description>&lt;p&gt;Here we are, again. Same symbolic time of the year.&lt;/p&gt;
&lt;p&gt;I find it perfect to review the past 12 months and have a think about it.&lt;/p&gt;
&lt;p&gt;I broke it down into three sections - professional, personal, and what didn’t work out. So, let&amp;rsquo;s go!&lt;/p&gt;
&lt;h2 id=&#34;professional&#34;&gt;Professional&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Learnt PowerShell&lt;/strong&gt; - I think it was the biggest achievement career wise this year. It’s hard to put this in formalised matter, or any sort of figure - but the change of my mindset is the biggest one. Simply put - from somebody who never coded before, and didn’t see using code in my life at all, I’ve started automating my tasks by actually writing PowerShell code. And that has opened a whole new world of possibilities.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Backup Exec – cataloging multiple tapes with a single tape drive</title>
      <link>https://kamilpro.com/backup-exec-cataloging-multiple-tapes-with-a-single-tape-drive/</link>
      <pubDate>Sun, 30 Sep 2018 20:33:33 +0000</pubDate>
      <guid>https://kamilpro.com/backup-exec-cataloging-multiple-tapes-with-a-single-tape-drive/</guid>
      <description>&lt;p&gt;Recently I&amp;rsquo;ve had a request to restore a certain backup from the old backup tapes. We&amp;rsquo;ve had a new Backup exec installation which didn&amp;rsquo;t have the catalogue/record of these tapes nor the actual tape drive to recover them - I knew it was going to be one in the world task. And the hell it was.&lt;/p&gt;
&lt;p&gt;Locating tapes in the storage unit was a pure joy - no need to go to the gym after this. Buying some used tape drive and set this up to the was surprisingly easy.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Use Windows Server as iSCSI target with ESXi</title>
      <link>https://kamilpro.com/use-windows-server-as-iscsi-target-with-esxi/</link>
      <pubDate>Wed, 15 Aug 2018 17:54:47 +0000</pubDate>
      <guid>https://kamilpro.com/use-windows-server-as-iscsi-target-with-esxi/</guid>
      <description>&lt;h2 id=&#34;learn-powershell&#34;&gt;Learn PowerShell&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh1&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell For IT Professionals Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh2&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell Scripting Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kamilpro.com/pwsh3&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;PowerShell CI/CD With GitHub Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;the-task&#34;&gt;The task&lt;/h2&gt;
&lt;p&gt;The task: to move a virtual machine from one ESXi to another. The ESXis are on two completely separate networks. VM size is 5.5 TB, with one file being 5TB.&lt;/p&gt;
&lt;p&gt;The problem: VM cannot be started due to maxed out resources. There&amp;rsquo;s no NAS or any other means of storage where the files could be transferred to. From previous experience, I knew that transfer over SSH or USB would be well too slow, as the task was time critical. There wasn&amp;rsquo;t also a big enough single hard disk which could be used to copy the files onto it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Resolve IP and DNS with Powershell tool</title>
      <link>https://kamilpro.com/powershell-tool-resolve-ip-and-dns/</link>
      <pubDate>Sun, 29 Apr 2018 21:40:00 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-tool-resolve-ip-and-dns/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been asked to prepare a simple tool which would:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Resolve IP address or DNS&lt;/li&gt;
&lt;li&gt;Return all results to table&lt;/li&gt;
&lt;li&gt;Import addresses from a file&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The reason behind was to check how IP/DNS records change over the period of time, therefore there was a need for something like that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A file with all addresses in question&lt;/li&gt;
&lt;li&gt;Tool which could import all these addresses and resolve them&lt;/li&gt;
&lt;li&gt;Save the results into a new file&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once having at least a couple of files, the results could be compared.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ultimate Windows Update fix</title>
      <link>https://kamilpro.com/ultimate-windows-update-fix/</link>
      <pubDate>Sun, 29 Oct 2017 22:12:15 +0000</pubDate>
      <guid>https://kamilpro.com/ultimate-windows-update-fix/</guid>
      <description>&lt;h2 id=&#34;the-reason&#34;&gt;The reason&lt;/h2&gt;
&lt;p&gt;I manage hundreds of workstations working on various Windows versions. As we know, Windows (and other Microsoft’s software) is updated monthly. While usually the process is just working fine, sometimes it simply doesn’t want to work.&lt;/p&gt;
&lt;p&gt;And yes, probably Google is your best friend here… but really, who has time to search for the solution, and apply it, manually, if there is more than 1 computer?&lt;/p&gt;
&lt;h2 id=&#34;use-the-script&#34;&gt;Use the script&lt;/h2&gt;
&lt;p&gt;I used technet, different posts and own knowledge of fixing that kind of issues. All it needs, is admin rights.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Powershell – resolve full names to usernames from CSV file</title>
      <link>https://kamilpro.com/powershell-resolve-full-names-usernames-csv-file/</link>
      <pubDate>Sat, 21 Oct 2017 14:03:58 +0000</pubDate>
      <guid>https://kamilpro.com/powershell-resolve-full-names-usernames-csv-file/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s unbelievable how long it took me to figure out this simple Powershell script, but yet it does the trick :).&lt;/p&gt;
&lt;p&gt;Often you receive a request to do a certain action with a bunch of accounts, and (obviously) the list provided contains the full names rather usernames. Pain to do it manually, but yet we can utilise Powershell here.&lt;/p&gt;
&lt;p&gt;What you need: CSV file, with only one column, and the header of the column must be called “Name”, if you prefer to use something different, simply amend Name in line 6 to reflect your header.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Need for energy – my short story of running</title>
      <link>https://kamilpro.com/need-energy-short-story-running/</link>
      <pubDate>Mon, 12 Jun 2017 21:23:57 +0000</pubDate>
      <guid>https://kamilpro.com/need-energy-short-story-running/</guid>
      <description>&lt;p&gt;This a quick story how sysadmin started running. I hope it will inspire you to do something with your body, mind and people around you. Yes, because once you’ll start feeling better, others around you will start feeling better as well.&lt;/p&gt;
&lt;h2 id=&#34;just-a-little-over-6-months-ago&#34;&gt;Just a little over 6 months ago&lt;/h2&gt;
&lt;p&gt;That was November - rainy, windy and cold November. I was exhausted after months of pushing forward the work load. Our team was going through fundamental changes, and the last months towards November were nerve wracking, and there was no light at the end of the tunnel. At least, not at this very time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Add any drivers to Windows – on example of GPU drivers</title>
      <link>https://kamilpro.com/add-any-drivers-to-windows-on-example-of-gpu-drivers/</link>
      <pubDate>Mon, 29 May 2017 18:53:05 +0000</pubDate>
      <guid>https://kamilpro.com/add-any-drivers-to-windows-on-example-of-gpu-drivers/</guid>
      <description>&lt;p&gt;Today we are going to inject drivers into the Windows image with the help of built-in tools in Windows.&lt;/p&gt;
&lt;h2 id=&#34;what-do-you-need&#34;&gt;What do you need?&lt;/h2&gt;
&lt;p&gt;Just a few things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Any hardware to which you’d like drivers to be added to&lt;/li&gt;
&lt;li&gt;Reference computer with the hardware attached to it&lt;/li&gt;
&lt;li&gt;Drivers&lt;/li&gt;
&lt;li&gt;Windows image which is going to be deployed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I think there’s not much to explain, so let’s analyse the actual process.&lt;/p&gt;
&lt;h2 id=&#34;what-we-are-going-to-do&#34;&gt;What we are going to do?&lt;/h2&gt;
&lt;p&gt;The problem with drivers is that they are often provided as one installation file which contains drivers with self installing package, which is convenient for a single user, but not for us, sysadmins.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Do you check email every 2 minutes? Start batching your tasks</title>
      <link>https://kamilpro.com/start-batching-your-tasks/</link>
      <pubDate>Tue, 16 May 2017 12:12:47 +0000</pubDate>
      <guid>https://kamilpro.com/start-batching-your-tasks/</guid>
      <description>&lt;p&gt;Bump. A new email has just arrived. Have to check it. Now. I might reply to it earlier, but need to read it now.&lt;/p&gt;
&lt;p&gt;Seriously, why?&lt;/p&gt;
&lt;p&gt;While being on top of every single thing might sound super productive, it’s not. Being busy doesn’t mean that you’re productive. Being busy means you’re busy, got nothing to do with effectiveness.&lt;/p&gt;
&lt;p&gt;This is the reason why you’d like to play it smart, and to organise your job into batches.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mastering PNPUTIL – how to add drivers to the Windows image</title>
      <link>https://kamilpro.com/mastering-pnputil-add-drivers-windows-image/</link>
      <pubDate>Mon, 01 May 2017 20:32:06 +0000</pubDate>
      <guid>https://kamilpro.com/mastering-pnputil-add-drivers-windows-image/</guid>
      <description>&lt;p&gt;Drivers - that&amp;rsquo;s what makes a harmony between hardware and software. Appropriate drivers can make a huge difference between computer&amp;rsquo;s performance, stability and even temperature. Therefore it&amp;rsquo;s super important to make sure you&amp;rsquo;ve got up-to-date files included with your image or Windows installation.&lt;/p&gt;
&lt;p&gt;We are going to review PNPUTIL tool - the versatile tool for handling drivers within the Windows.&lt;/p&gt;
&lt;h2 id=&#34;why-do-you-need-pnputil&#34;&gt;Why do you need PNPUTIL?&lt;/h2&gt;
&lt;p&gt;Yes, why bother with some command line tool (PNPUTIL is command line only) when there are dedicated installers and device manager? Not to mention that Windows update can download pretty much every single driver missing from the Internet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why Saturday is best to start new hobby.</title>
      <link>https://kamilpro.com/why-saturday-is-best-to-start-new-hobby/</link>
      <pubDate>Tue, 18 Apr 2017 06:30:22 +0000</pubDate>
      <guid>https://kamilpro.com/why-saturday-is-best-to-start-new-hobby/</guid>
      <description>&lt;p&gt;“I’m going to lose 10 KG”&lt;/p&gt;
&lt;p&gt;“I’ll start exercising”&lt;/p&gt;
&lt;p&gt;“I’ll crack on with my studies and get a better job”&lt;/p&gt;
&lt;p&gt;Can you recall any of these? We prefer to set ourselves goals within certain time frame, like beginning of the year, month or week. That sort of fresh-start gets extra power as a statement, allows us to easily cut off the imperfect past from the all new and wonderful future.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to prepare Windows 10 1607 image</title>
      <link>https://kamilpro.com/prepare-windows-10-1607-image/</link>
      <pubDate>Mon, 03 Apr 2017 22:35:09 +0000</pubDate>
      <guid>https://kamilpro.com/prepare-windows-10-1607-image/</guid>
      <description>&lt;p&gt;Sooner or later every company will come to the point when using standard Windows image is just not enough. Manual installation, fetching all updates or installing software etc. etc. takes time, and in IT, we really can use that time for something way more productive.&lt;/p&gt;
&lt;p&gt;Therefore, I propose you to create your very own, customised, Windows 10 image which will save you tonnes of time.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s set some goals:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic installation - no questions about user accounts, settings etc.&lt;/li&gt;
&lt;li&gt;Hardware neutral - image will be installable on any kind of computer with necessary drivers equipped within.&lt;/li&gt;
&lt;li&gt;Customised - image will be shipped with software and other preferences so that employees will be able to “just” log in straight after deployment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sounds good? So let&amp;rsquo;s start preparing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Do you even back up?</title>
      <link>https://kamilpro.com/do-you-even-back-up/</link>
      <pubDate>Wed, 26 Oct 2016 20:11:31 +0000</pubDate>
      <guid>https://kamilpro.com/do-you-even-back-up/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s early Monday - the time between the coffee and checking emails – you realise everything’s gone. Files. Videos of your children since they were  born. Years of company’s spreadsheets. Gone. It’s not going to be a good week, for sure.&lt;/p&gt;
&lt;h2 id=&#34;there-are-2-kinds-of-people8230&#34;&gt;There are 2 kinds of people…&lt;/h2&gt;
&lt;p&gt;According to one of the IT jokes, there are two kinds of people: ones who do back up, and the ones who will.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Blog is changing</title>
      <link>https://kamilpro.com/blog-is-changing/</link>
      <pubDate>Tue, 30 Aug 2016 07:30:13 +0000</pubDate>
      <guid>https://kamilpro.com/blog-is-changing/</guid>
      <description>&lt;p&gt;My idea of this place has been changing since I’ve brought it up. It wasn’t even my first blog, in fact, it was a third one. But the main difference was I wanted to get to the world this time. Don’t just write for the sake of writing.&lt;/p&gt;
&lt;p&gt;Very first version of this website was more like a business card or a CV, rather than a blog. I don’t say how proud I was, but also must admit how wrong I was. My business card is my skills and recommendations – it didn’t need a special website pumping it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I’m really missing time before the Internet.</title>
      <link>https://kamilpro.com/im-really-missing-time-internet/</link>
      <pubDate>Sun, 21 Aug 2016 19:47:22 +0000</pubDate>
      <guid>https://kamilpro.com/im-really-missing-time-internet/</guid>
      <description>&lt;p&gt;Because software was working without the need of downloading tons of patches. Why do we actually need to update software in the first place?&lt;/p&gt;
&lt;p&gt;In the past, the only way to obtain a software was by delivering the physical media to the recipient. There was a cost of media itself and shipment (and probably much more of which I&amp;rsquo;m not aware of), it couldn&amp;rsquo;t be cheap. While comparing to the current times, it is just a matter of uploading an update to the server and push to users.&lt;/p&gt;</description>
    </item>
    <item>
      <title>On time – to be or not to be</title>
      <link>https://kamilpro.com/on-time-to-be-or-not-to-be/</link>
      <pubDate>Wed, 17 Aug 2016 21:39:06 +0000</pubDate>
      <guid>https://kamilpro.com/on-time-to-be-or-not-to-be/</guid>
      <description>&lt;p&gt;We live in a time driven world. We to try to maximise 24 hours every day. Time wasting is not an option.&lt;/p&gt;
&lt;p&gt;Therefore we try to squeeze as much as possible in a schedule. Beginning from very morning.&lt;/p&gt;
&lt;p&gt;Every morning we start fairly the same, fulfilling daily ritual. Make up, news, coffee - ready, steady, go  - everything what make us ready to make a public appearance .&lt;/p&gt;
&lt;p&gt;So it&amp;rsquo;s 8 am, and we are certainly ready to leave. Despite the traffic, overcrowded public transport and finally - queues in the coffee shop - we made it through to the office. We can finally sit at the desk at 9 am.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Less is more</title>
      <link>https://kamilpro.com/less-is-more/</link>
      <pubDate>Sun, 14 Aug 2016 17:59:54 +0000</pubDate>
      <guid>https://kamilpro.com/less-is-more/</guid>
      <description>&lt;p&gt;We live in a cram-full world, full of anything we could possibly imagine.&lt;/p&gt;
&lt;p&gt;Having a choice is a great thing – I can pick stuff which really suits myself. In case I need, say, a teal corner 4 seater bed sofa, it’s just a matter of time and money I am prepared to spend, until I get one.&lt;/p&gt;
&lt;p&gt;But what happens when I don’t have too many options? When there are 2 things which really suit me, but say, I’ve got space just for 1 sofa?&lt;/p&gt;</description>
    </item>
    <item>
      <title>The kill joy, ready made type</title>
      <link>https://kamilpro.com/the-kill-joy-ready-made-type/</link>
      <pubDate>Wed, 10 Aug 2016 22:02:19 +0000</pubDate>
      <guid>https://kamilpro.com/the-kill-joy-ready-made-type/</guid>
      <description>&lt;p&gt;What an easy life when you are an ignorant!&lt;/p&gt;
&lt;p&gt;Dull face. Knows all football matches. Actually, this fellow made an art from sitting in front of a TV with a 4-for-£4 pack and trying to prove that this is his life passion. I think I could made another passion from observing clouds in the garden. I would watch them for hours while they change their shapes, move around in the sky, still sitting in the chair and observing them pointlessly. No hobby, no interests to substitute the pointless activity(!) or rather lack or activity.&lt;/p&gt;</description>
    </item>
    <item>
      <title>27 was a great number</title>
      <link>https://kamilpro.com/27-was-a-great-number/</link>
      <pubDate>Mon, 08 Aug 2016 21:58:56 +0000</pubDate>
      <guid>https://kamilpro.com/27-was-a-great-number/</guid>
      <description>&lt;p&gt;but I&amp;rsquo;m certain that 28 will be even better!&lt;/p&gt;
&lt;p&gt;Yes, yesterday was my birthday.  Another great year has passed but this time with a wonderful woman next to my side.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s unbelievable how many good things have happened in the last 365 days. I could now start telling you and show off… but not on this occasion, this is a celebration time!&lt;/p&gt;
&lt;p&gt;On the days like these, I think about changing my settings to neutral, stop rushing and just sit calmly and wait for what comes next…anything…&lt;/p&gt;</description>
    </item>
    <item>
      <title>Apps, and their impact on the smart phone</title>
      <link>https://kamilpro.com/apps-impact-smart-phone/</link>
      <pubDate>Sun, 07 Aug 2016 09:45:31 +0000</pubDate>
      <guid>https://kamilpro.com/apps-impact-smart-phone/</guid>
      <description>&lt;p&gt;When we buy a new phone, manufacturers advertise it always as a super fast with superb colours and a long lasting battery.&lt;/p&gt;
&lt;p&gt;Usually it&amp;rsquo;s true, which we can confirm just after the unboxing ritual when we hold our brand new device in the hands.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s shiny, without scratches, with a specific smell, plus it&amp;rsquo;s really fast and battery lasts very long.&lt;/p&gt;
&lt;p&gt;Until… we actually start using the phone, by this I mean installing the whole lot of our favourite apps.  Some of them are just sitting there, not being used.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Overloaded</title>
      <link>https://kamilpro.com/overloaded/</link>
      <pubDate>Sat, 06 Aug 2016 09:32:21 +0000</pubDate>
      <guid>https://kamilpro.com/overloaded/</guid>
      <description>&lt;p&gt;Recently I&amp;rsquo;ve been writing about information overload. That we should avoid it, select only the best information.&lt;/p&gt;
&lt;p&gt;Oh well, I have overloaded myself recently.&lt;/p&gt;
&lt;p&gt;I slept 24 hours over the last 2 days! From 8 PM till 8AM. Children don’t sleep that much. My last 2 days had been like: Wake up, shower, work, coffee, home, dinner, coffee, sleep.&lt;/p&gt;
&lt;p&gt;Exciting, isn&amp;rsquo;t it?&lt;/p&gt;
&lt;p&gt;For the past 2 days my memory was like ROM – Read Only Memory – mission was to think clearly. And of course I was like Pentium 4 class of processor – single threaded. No way of multitasking.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Whatever floats your boat…</title>
      <link>https://kamilpro.com/whatever-floats-your-boat/</link>
      <pubDate>Tue, 02 Aug 2016 21:57:25 +0000</pubDate>
      <guid>https://kamilpro.com/whatever-floats-your-boat/</guid>
      <description>&lt;p&gt;How many times I’ve put my all enthusiasm into something, being convinced that it was the right thing.&lt;/p&gt;
&lt;p&gt;Hundreds, maybe thousands of times.&lt;/p&gt;
&lt;p&gt;How many time afterwards I have realised that my belief was completely wrong. Like 100% wrong. Like back to front feeling.&lt;/p&gt;
&lt;p&gt;I think the most difficult is the moment of making a decision. That very moment when it’s time to commit to a long standing decision. The second when it’s time to reveal self and go public.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Headphones</title>
      <link>https://kamilpro.com/headphones/</link>
      <pubDate>Mon, 01 Aug 2016 21:25:29 +0000</pubDate>
      <guid>https://kamilpro.com/headphones/</guid>
      <description>&lt;p&gt;At home while writing, photo editing or just for fun. At work when I need to focus and be effective. At the time when I need a boost or completely opposite - when looking for a way to calm down. Headphones accompany me throughout the day.&lt;/p&gt;
&lt;p&gt;There is something about sound that keeps me going. When I need to keep up and focus on something certain, I listen to some energy energetic music. Not too loud, because it exhausts too much and causes a headache, and not too quiet because… actually, what&amp;rsquo;s a point of listening to quiet music? I cannot find 1 reason to listen quietly.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Self-investment</title>
      <link>https://kamilpro.com/self-investment/</link>
      <pubDate>Sat, 30 Jul 2016 22:13:47 +0000</pubDate>
      <guid>https://kamilpro.com/self-investment/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m crazy about few things in my life. One of them is self-investment. Something what I do entirely for myself, because I am convinced that it will be beneficial to me, eventually.&lt;/p&gt;
&lt;p&gt;At the beginning of my IT journey, I sacrificed a lot of time. There were whole weekends with computer as well as late nights during a week. I wasn&amp;rsquo;t aware that this could have been an actual investment, that I was working towards bettering my future. Because at the time, it was nothing but pure fun.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Routine</title>
      <link>https://kamilpro.com/routine/</link>
      <pubDate>Fri, 29 Jul 2016 22:35:35 +0000</pubDate>
      <guid>https://kamilpro.com/routine/</guid>
      <description>&lt;p&gt;They say that habits are our second nature. Things which we do repeatedly  are like pre-programmed functions which trigger specific time or action.&lt;/p&gt;
&lt;p&gt;Morning coffee. I simply cannot start the day without a cup of a real coffee. That was the reason why I bought the actual bean to coffee machine, because of the taste and smell of real coffee. Prepared in the exact way I like it.&lt;/p&gt;
&lt;p&gt;This week I&amp;rsquo;ve ran out of the time in the morning and couldn&amp;rsquo;t make my favourite coffee, so I used the instant one. Gosh, that was a terrible experience! No smoothness in taste at all, not the same smell, not the same kick in the morning.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rely</title>
      <link>https://kamilpro.com/rely/</link>
      <pubDate>Thu, 28 Jul 2016 19:49:01 +0000</pubDate>
      <guid>https://kamilpro.com/rely/</guid>
      <description>&lt;p&gt;Trust, hope, relationship. Words which make us feel good, because we can rely on others.&lt;/p&gt;
&lt;p&gt;I remember when sometime ago, I needed to push a new software to about 50 computers. As always, with that kind of operation, there was a very limited time to do this.&lt;/p&gt;
&lt;p&gt;In normal situation, there is deployment solution in place - a server which distributes the software in an automated way. Obviously, as an administrator I need to prepare the whole process - finding installers, commands and switches for these software and even writing scripts.&lt;/p&gt;</description>
    </item>
    <item>
      <title>No pain, no gain.</title>
      <link>https://kamilpro.com/no-pain-no-gain/</link>
      <pubDate>Wed, 27 Jul 2016 21:09:27 +0000</pubDate>
      <guid>https://kamilpro.com/no-pain-no-gain/</guid>
      <description>&lt;p&gt;How many times petty things have ruined your day? Or people? Or, even, yourself? Just admit it.&lt;/p&gt;
&lt;p&gt;We can take a lot. Our minds are like massive hard drives which store data in a form of memories, feelings and thoughts.&lt;/p&gt;
&lt;p&gt;Did you know that a human is able to erase certain bad memories or push them right back, deep in our subconscious? For example, women are going though unbelievable pain while giving a birth. Pain which lasts for hours, days or even weeks… If the process of erasing unpleasant experiences wouldn&amp;rsquo;t have happened, we would have had less babies right now…&lt;/p&gt;</description>
    </item>
    <item>
      <title>Share</title>
      <link>https://kamilpro.com/share/</link>
      <pubDate>Tue, 26 Jul 2016 22:05:34 +0000</pubDate>
      <guid>https://kamilpro.com/share/</guid>
      <description>&lt;p&gt;I remember like when I was 10-ish and had been trying to fix my first computer. There was no Internet, there was no one really to ask for advice or share the knowledge with me. It took me days, and at the very end, I found that I didn&amp;rsquo;t have essential drivers to make my computer really usable. Did I mention that the Internet wasn&amp;rsquo;t available yet?&lt;/p&gt;
&lt;p&gt;I had to figure this out, and it took me ridiculous amount of time to achieve such a basic task like reinstalling an operating system. It would have been much easier to find that knowledge somewhere, wouldn&amp;rsquo;t be?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Influence</title>
      <link>https://kamilpro.com/influence/</link>
      <pubDate>Mon, 25 Jul 2016 11:34:34 +0000</pubDate>
      <guid>https://kamilpro.com/influence/</guid>
      <description>&lt;p&gt;A friend  visited us yesterday. There was a nice cake, coffee, dinner and conversations thoughtout the night.&lt;/p&gt;
&lt;p&gt;Suddenly the ladies started to talk about navigation apps on mobile devices. K. was complaining about high data usage during browsing on the Internet. J. suggested her to try Here maps as it is free and allows to download the maps, therefore data is completely not needed for navigation to work, plus it is really accurate app.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Do something different</title>
      <link>https://kamilpro.com/do-something-different/</link>
      <pubDate>Sun, 24 Jul 2016 15:41:10 +0000</pubDate>
      <guid>https://kamilpro.com/do-something-different/</guid>
      <description>&lt;p&gt;Sometimes I am so deep in my thoughts that I have no notion of what time of the day is. I know I should be doing something, anything but wasting my time… Life is too short to waste time but all the possibilities somehow don’t even cross my mind.&lt;/p&gt;
&lt;p&gt;Do you get the same feeling where you can literally stare at the wall opposite while the time stands still? It’s a horrible feeling. It can last forever. Lethargic state of mind.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Silence</title>
      <link>https://kamilpro.com/silence/</link>
      <pubDate>Sat, 23 Jul 2016 19:33:49 +0000</pubDate>
      <guid>https://kamilpro.com/silence/</guid>
      <description>&lt;p&gt;The world is loud. It’s shouting though. Being expressive and extrovert is the key to the success this times. It doesn’t matter whether the person is good or positive.&lt;/p&gt;
&lt;p&gt;I think we’ve got used to being &lt;a href=&#34;https://kamilpro.com/spam/&#34;&gt;bombarded&lt;/a&gt; on daily basis, everyone and everything want to share with us. It’s up to us whether we’d like to take any of these screams on board, or just ignore them. And obviously, the question is -  how much we can accumulate.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The joy of crossing</title>
      <link>https://kamilpro.com/the-joy-of-crossing/</link>
      <pubDate>Fri, 22 Jul 2016 20:37:31 +0000</pubDate>
      <guid>https://kamilpro.com/the-joy-of-crossing/</guid>
      <description>&lt;p&gt;I’ve got a good memory. I can remember different things quite easily, organise and plan them in my mind. A serious and complex task is not a big deal to me, as long as I can understand it. At times I can be annoying (I guess some might say that), by asking many questions, as understanding of each step is a baseline to completing every task correctly.&lt;/p&gt;
&lt;p&gt;But there is something magical in writing down the tasks. Using to-do list might be efficient, as the task sits in the screen and stares directly into my eyes. But once finished, I can only click it to mark as completed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Process</title>
      <link>https://kamilpro.com/process/</link>
      <pubDate>Thu, 21 Jul 2016 19:58:56 +0000</pubDate>
      <guid>https://kamilpro.com/process/</guid>
      <description>&lt;p&gt;“We are in the process of management change”&lt;/p&gt;
&lt;p&gt;“The company is in the process of implementing new policies”&lt;/p&gt;
&lt;p&gt;etc. etc.&lt;/p&gt;
&lt;p&gt;This is quite a normal term and we don’t pay attention to it, instead we just take this information on board. Whether we like the changes, it’s entirely up to us, despite the fact often we don’t notice any changes in practice.&lt;/p&gt;
&lt;p&gt;But people are going through “process of a change” as well. Sometimes they make a promise to themselves “I spend too much time at work, therefore I should spend more time with my family.”  Sometimes, something happens what drives us to the change “My father died, I should  have spent more time with my family.”&lt;/p&gt;</description>
    </item>
    <item>
      <title>Notification</title>
      <link>https://kamilpro.com/notification/</link>
      <pubDate>Wed, 20 Jul 2016 19:48:05 +0000</pubDate>
      <guid>https://kamilpro.com/notification/</guid>
      <description>&lt;p&gt;I carry with me 2 phones - personal one and work one. On the first one, I store only personal stuff, while on the 0ther one everything what is work related.&lt;/p&gt;
&lt;p&gt;I have been using my phones like probably most of the people - putting them on vibration while in the restaurants, office etc. so that the phones wouldn&amp;rsquo;t annoy people around me. But, something&amp;rsquo;s changed when I was sent for a business trip abroad.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A winner!</title>
      <link>https://kamilpro.com/a-winner/</link>
      <pubDate>Tue, 19 Jul 2016 21:48:24 +0000</pubDate>
      <guid>https://kamilpro.com/a-winner/</guid>
      <description>&lt;p&gt;We are all winners, undoubtedly.  Whatever we do, whenever we create an action - we must win.&lt;/p&gt;
&lt;p&gt;Well, not really.&lt;/p&gt;
&lt;p&gt;Since the childhood we are taught and pushed to be the best. Get a grade A or B, at least C. Like the D, E or even F don&amp;rsquo;t exist. We are pushed through countless tests and exams, and being challenged on daily basis.&lt;/p&gt;
&lt;p&gt;And there is always somebody, who in a good faith has to say that “you won” even though we actually did not.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spam</title>
      <link>https://kamilpro.com/spam/</link>
      <pubDate>Mon, 18 Jul 2016 21:30:18 +0000</pubDate>
      <guid>https://kamilpro.com/spam/</guid>
      <description>&lt;p&gt;Spam. Spam everywhere. There isn&amp;rsquo;t a day without it. Without bombarding us with plenty of information. Way too much of information.&lt;/p&gt;
&lt;p&gt;While the original - email spam - is well handled by email providers, the other sources are not.&lt;/p&gt;
&lt;p&gt;On social media - there is plenty of shared stuff which someone (I hope so!) thought was worth of sharing. News is all over the place - starting from daily free newspapers, through radio and TV and ending up on the Internet. But the problem with the news is simple - there is plenty of repetition. And it is down to us - receivers - to pick best sources which fit us best.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Let’s get retar… Started!</title>
      <link>https://kamilpro.com/lets-get-retar-started/</link>
      <pubDate>Sun, 17 Jul 2016 21:51:23 +0000</pubDate>
      <guid>https://kamilpro.com/lets-get-retar-started/</guid>
      <description>&lt;p&gt;Thoughts. Ideas. Things which happen in my head for hours, days, sometimes even longer. My brain &lt;em&gt;is&lt;/em&gt; constantly thinking, analysing and making decisions, almost 24/7. The problem is - I don&amp;rsquo;t share… but I really want to.&lt;/p&gt;
&lt;p&gt;Some time ago I&amp;rsquo;ve made a decision to create my own website where I could share my &lt;em&gt;thoughts&lt;/em&gt; and where they would stay like carved in the stone.&lt;/p&gt;
&lt;p&gt;When I reflect on the past year (this is since I brought up my website) I have published less than 10 (TEN!) posts. Damn, that&amp;rsquo;s pretty low, isn&amp;rsquo;t it?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Post-Smartphone era, yet?</title>
      <link>https://kamilpro.com/post-smartphone-era-yet/</link>
      <pubDate>Tue, 07 Jun 2016 17:00:23 +0000</pubDate>
      <guid>https://kamilpro.com/post-smartphone-era-yet/</guid>
      <description>&lt;p&gt;Recently, Apple (and other big brands) recorded a drop of a smartphone sells. First time in over 10 years. Does it mean something is ending? I&amp;rsquo;d call it a big change. But let me take you step by step.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Free ride</title>
      <link>https://kamilpro.com/free-ride/</link>
      <pubDate>Sun, 31 Jan 2016 12:49:40 +0000</pubDate>
      <guid>https://kamilpro.com/free-ride/</guid>
      <description>&lt;p&gt;Nothing really makes me angrier than so called friends who remember about you only when they need something. They just wait to get free ride from you - because what&amp;rsquo;s a point to pay, if they can get it for free instead?&lt;/p&gt;
&lt;h2 id=&#34;its-nice-to-be-nice-when-you-need-something&#34;&gt; It&amp;rsquo;s nice to be nice when you need something&lt;/h2&gt;
&lt;p&gt;Typical conversation looks like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Oh hi, we haven&amp;rsquo;t talked for a while, how are you? How&amp;rsquo;s your life? Still working same place? We should catch up one day.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ekhm, &lt;em&gt;stop here&lt;/em&gt;. Firstly, we haven&amp;rsquo;t spoken for a while, usually couple of months or even longer, and suddenly you need to know the story of my life. At least the recent one. Secondly, when I tried to get in touch  with you - just because - I was ignored.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why certification matters?</title>
      <link>https://kamilpro.com/why-certification-matters/</link>
      <pubDate>Thu, 21 Jan 2016 11:42:35 +0000</pubDate>
      <guid>https://kamilpro.com/why-certification-matters/</guid>
      <description>&lt;p&gt;I gained most of my experience by doing and working things out. Quite often I was reinventing the wheel and discovering already discovered lands. Well, that gave me a lot practice, and no doubts, made me who I am now. But how could I actually proof my skills?&lt;/p&gt;
&lt;h2 id=&#34;you-can-be-a-specialist-while-being-an-amateur&#34;&gt;You can be a specialist, while being an amateur&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s not a secret that I have spent major part of my life providing outsource IT support. This allowed me to understand different industries and make connections with different people. But every single time when the question &amp;amp;##8216;How did you learn all this stuff&amp;rsquo; came up, my answer was &amp;amp;##8216;I have learnt it myself&amp;rsquo;. I was proud of it,  and I am still proud of it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The right people</title>
      <link>https://kamilpro.com/the-right-people/</link>
      <pubDate>Sun, 04 Oct 2015 18:54:31 +0000</pubDate>
      <guid>https://kamilpro.com/the-right-people/</guid>
      <description>&lt;p&gt;Each of us has some ideal places, songs, people and the way how the morning coffee should be prepared. Sometimes the way how negative situations happen describe the way our day, week, life look like. The way we are.&lt;/p&gt;
&lt;p&gt;Funnily enough, very often those things or people are just happening around us, the way we often don&amp;rsquo;t even notice it. We often can only notice the result of all those things.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to utilise a computer’s desktop</title>
      <link>https://kamilpro.com/how-to-utilise-a-computers-desktop/</link>
      <pubDate>Tue, 07 Jul 2015 11:00:46 +0000</pubDate>
      <guid>https://kamilpro.com/how-to-utilise-a-computers-desktop/</guid>
      <description>&lt;p&gt;Everyone has a computer, tablet, or mobile phone. And we usually have some wallpaper set on it.&lt;/p&gt;
&lt;p&gt;Usually, we set family, pets, beautiful landscapes or build quotes as our wallpaper. And this is fine, because this is the reason why the wallpaper was invented.&lt;/p&gt;
&lt;p&gt;Imagine that we needed some easy, cost-effective way to advertise local jobs to our learners (bear in mind I work in the learning centre, with mostly unemployed learners whose ultimate goal is to find a job) so they could easily find the ads and apply for jobs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Experience, that’s what really matters</title>
      <link>https://kamilpro.com/what-really-matters-experience/</link>
      <pubDate>Sat, 06 Jun 2015 19:55:25 +0000</pubDate>
      <guid>https://kamilpro.com/what-really-matters-experience/</guid>
      <description>&lt;p&gt;How can you cut the cost of hardware from £200 to £30? And how to avoid unnecessary money and time waste? You need somebody who thinks out of the box, is determined and the most important – has tons of experience. Below you can see how I was gaining experience and how it helped me to be where I am right now.&lt;/p&gt;
&lt;p&gt;I always considered myself as the guy who&amp;rsquo;s got practical knowledge. When I was setting up my first PC (in times of Windows 98) I learnt by myself how to partition and set up Windows. Well, it was journey full of obstacles, as the words “partition” or “volume” were absolutely new to me. In other words: I didn&amp;rsquo;t know what they really meant, I just knew I needed them to install OS.&lt;/p&gt;</description>
    </item>
    <item>
      <title>It happened – I ordered my first DSLR.</title>
      <link>https://kamilpro.com/it-happened-i-ordered-my-first-dslr/</link>
      <pubDate>Thu, 14 May 2015 20:02:59 +0000</pubDate>
      <guid>https://kamilpro.com/it-happened-i-ordered-my-first-dslr/</guid>
      <description>&lt;p&gt;When I look backwards, I have always been fascinated by a photography for quite a long time. But it really hit me about 4 years ago, when I bought some Panasonic camera with 16x zoom. It was only at that particular time that I thought zoom was the most important feature of a camera. Well, I can now say that it is cool to have zoom, but without vibration reduction you cannot do much on long focal length.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hello world!</title>
      <link>https://kamilpro.com/hello-world/</link>
      <pubDate>Sun, 26 Apr 2015 06:09:05 +0000</pubDate>
      <guid>https://kamilpro.com/hello-world/</guid>
      <description>&lt;p&gt;Every proper project should have the “Hello world!”, so does mine ;).&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
