<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>PowerShell on Nathan McNulty</title><link>https://nathanmcnulty.com/tags/powershell/</link><description>Recent content in PowerShell on Nathan McNulty</description><generator>Hugo</generator><language>en</language><lastBuildDate>Tue, 13 Oct 2026 22:08:40 -0800</lastBuildDate><atom:link href="https://nathanmcnulty.com/tags/powershell/index.xml" rel="self" type="application/rss+xml"/><item><title>Microsoft Graph PowerShell examples for Application Management</title><link>https://nathanmcnulty.com/notes/entra/microsoft-graph-powershell-examples-for-application-management/</link><pubDate>Sat, 14 Dec 2024 09:13:00 +0000</pubDate><guid>https://nathanmcnulty.com/notes/entra/microsoft-graph-powershell-examples-for-application-management/</guid><description>&lt;p&gt;Before writing another app credential report from scratch, check Microsoft&amp;rsquo;s &lt;a&#10; href="https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/app-management-powershell-samples"&#10; &#10; target="_blank" rel="noopener noreferrer"&gt;Graph PowerShell application-management samples&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;The collection includes reports for app registrations and enterprise apps, with versions focused on expiring secrets and certificates. Pick the right object type: app registrations are application objects, while enterprise apps are service principals in your tenant.&lt;/p&gt;&#10;&lt;p&gt;A useful starting point is the &lt;a&#10; href="https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/scripts/powershell-export-apps-with-expiring-secrets"&#10; &#10; target="_blank" rel="noopener noreferrer"&gt;app-registration expiry report&lt;/a&gt;. It asks for an expiry window, whether to include already-expired credentials, and a CSV destination, then includes owner information so you know who to contact.&lt;/p&gt;</description></item><item><title>Defender Firewall FQDN filtering - prefer NRPT for broad blocks</title><link>https://nathanmcnulty.com/notes/defender/defender-firewall-fqdn-based-filtering/</link><pubDate>Tue, 19 Nov 2024 22:18:00 +0000</pubDate><guid>https://nathanmcnulty.com/notes/defender/defender-firewall-fqdn-based-filtering/</guid><description>&lt;p&gt;For broad domain or TLD blocking, &lt;strong&gt;I recommend NRPT rules over Windows Firewall dynamic keyword blocks&lt;/strong&gt;. Firewall FQDN rules turn matching DNS results into IP-based restrictions, which can affect unrelated names sharing the same address.&lt;/p&gt;&#10;&lt;p&gt;I hit this in &lt;a&#10; href="https://x.com/NathanMcNulty/status/2064507585668227425"&#10; &#10; target="_blank" rel="noopener noreferrer"&gt;June 2026&lt;/a&gt;: blocking &lt;code&gt;*.cn&lt;/code&gt; picked up an Azure Front Door IP after a user visited &lt;code&gt;docs.azure.cn&lt;/code&gt;. That IP also served Microsoft portals, so Azure, Entra, and Intune access broke.&lt;/p&gt;&#10;&lt;p&gt;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10; &#10; &#10; &#10; &#10; &#10; &lt;figure class="figure " &gt;&#10; &lt;picture &gt;&#10; &lt;img class="figure-img img-fluid" src="https://nathanmcnulty.com/images/HKaaRB7bgAASa7p.jpg?v=1bd64392a159cb512eb6cf6a22a97c2d" alt="Windows Filtering Platform block detail with destination IP 13.107.246.70 and Remote Dynamic Keyword Address set to True." title="Original close-up of the blocked connection showing that a dynamic keyword address matched. Historical June 2026 trace; the destination IP and private source address are diagnostic values, not stable configuration guidance." loading="lazy" height="508" width="903" /&gt;&#10;&lt;/picture&gt;&#10;&#10; &lt;figcaption class="figure-caption"&gt;Original close-up of the blocked connection showing that a dynamic keyword address matched. Historical June 2026 trace; the destination IP and private source address are diagnostic values, not stable configuration guidance.&lt;/figcaption&gt;&#10;&lt;/figure&gt;&#10;&lt;/p&gt;</description></item></channel></rss>