<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Windows on wporter.org</title>
    <link>https://wporter.org/categories/windows/</link>
    <description>Recent content in Windows on wporter.org</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <lastBuildDate>Wed, 09 Sep 2026 20:00:00 +0000</lastBuildDate>
    <atom:link href="https://wporter.org/categories/windows/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Offline domain join - djoin.exe</title>
      <link>https://wporter.org/offline-domain-join-djoin.exe/</link>
      <pubDate>Wed, 09 Sep 2026 20:00:00 +0000</pubDate>
      <guid>https://wporter.org/offline-domain-join-djoin.exe/</guid>
      <description>&lt;p&gt;&lt;code&gt;djoin&lt;/code&gt; allows you to join devices to Active Directory with a provisioning blob (a text file) that is generated somewhere with line-of-sight to a DC, then used anywhere (on an online or offline Windows image). This means you can:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;skip authentication &lt;em&gt;on the target device&lt;/em&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;helps reduce privileges required on the endpoint - no longer need an account with permission to create the computer object to sign into the endpoint&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;join devices while they&amp;rsquo;re offline (e.g., at a remote site, or in a staging location without connectivity to the domain)&lt;/li&gt;&#xA;&lt;li&gt;join devices during provisioning without the need to save credentials capable of &lt;em&gt;many&lt;/em&gt; or arbitrary domain joins&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;An offline domain-joined machine will still require line-of-sight to a domain controller for initial user authentication, Group Policy processing, Kerberos, certificate enrollment, et cetera.&lt;/p&gt;</description>
    </item>
    <item>
      <title>An Active Directory security checklist</title>
      <link>https://wporter.org/an-active-directory-security-checklist/</link>
      <pubDate>Tue, 24 Mar 2026 21:45:00 +0000</pubDate>
      <guid>https://wporter.org/an-active-directory-security-checklist/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;Use a freely available Active Directory configuration/vulnerability scanner like Purple Knight or PingCastle to get a quick assessment of the environment&amp;rsquo;s state. Purple Knight is a great tool, PingCastle.. meh.&lt;/li&gt;&#xA;&lt;li&gt;Keep the Default Domain and Default Domain Controllers policies minimal. Explicitly name your policies and consider targeting them by security group rather than at the OU level. Audit your GPOs regularly.&lt;/li&gt;&#xA;&lt;li&gt;Consider disabling AAD Connect&amp;rsquo;s Seamless SSO if you&amp;rsquo;re not using it (e.g., your machines are all hybrid joined and W10+, so they use PRTs for SSO to Entra ID instead). The SSO computer account is a threat vector.&lt;/li&gt;&#xA;&lt;li&gt;Apply the freely available Microsoft Security and Compliance Toolkit configuration baselines for your Windows client &amp;amp; server OSes.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;READ. THE. SPREADSHEETS. AND. TEST. BEFORE. PUSHING. TO. PROD.&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Consider applying the baseline for Office, too.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;If you&amp;rsquo;ve got Defender for Endpoint, deploy it. Even if you&amp;rsquo;re using another EDR agent. Deploy Defender for Endpoint in passive or EDR block mode. Defender for Endpoint is REALLY good.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Apply Defender Attack Surface Reduction rules, too, while you&amp;rsquo;re at it. They&amp;rsquo;re free bits of hardening preconfigured for you.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATCH!! YOUR!!! STUFF!!!!!!&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Remove users from the &amp;ldquo;Operators&amp;rdquo; groups. These are often legacy leftovers from a more &amp;ldquo;consolidated&amp;rdquo; AD environment (e.g., a DC was a terminal server, and users occasionally had to restart the print spooler, so users were added to the Print Operators and Server Operators groups.. making it trivial for one to elevate to SYSTEM on a DC in the absence of other controls).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;DO NOT RUN ANYTHING BUT AD DS (and DHCP) ON A DOMAIN CONTROLLER&lt;/strong&gt;.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;I&amp;rsquo;ll repeat that. &lt;strong&gt;DO NOT RUN ANYTHING BUT AD DS (and DHCP) ON A DOMAIN CONTROLLER&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;DO NOT USE A DOMAIN CONTROLLER AS A JUMPBOX!!!&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;If you think this is good because you&amp;rsquo;ll save money on a Windows Server license, consider the cost of rebuilding the entire environment after it gets compromised vs $800 for another Server Standard OSE. If you do this and have Server Datacenter licenses I WILL find you and I WILL slap you silly.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;STOP&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;RUNNING&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;OTHER&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;SERVICES&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;ON&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;DOMAIN&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;CONTROLLERS&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Think about how much harder it would be to clean up a compromised domain versus JUST SETTING UP ANOTHER SERVER.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Disable multicast name resolution, including mDNS if your environment is using a .local TLD.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;This means NetBIOS, LLMNR, and mDNS.&lt;/li&gt;&#xA;&lt;li&gt;Either disable mDNS and break Spotify/Miracast, rename your domain, or get Responder&amp;rsquo;d to death. Three options. The first two are preferred.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Phase out RC4 Kerberos encryption.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;RC4 is highly vulnerable to offline attacks (&amp;ldquo;Kerberoasting&amp;rdquo;) and will be disabled by default in July 2026.&lt;/li&gt;&#xA;&lt;li&gt;Reset the KRBTGT password twice (reset once, wait at least 10H for old tickets to expire, reset again), then audit security events 4768 &amp;amp; 4769 for encryption type 0x17/0x18 (RC4, RC4 with preauth). If you don&amp;rsquo;t see anything, turn RC4 off!&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Enable Kerberos armoring (FAST).&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Encrypts pre-authentication. If in place, an attacker must first compromise a machine account to read pre-auth handshakes (making an offline attack against preauth much less worthwhile).&lt;/li&gt;&#xA;&lt;li&gt;Notably provides mutual authentication of the KDC (protecting against a MITM with a spoofed KDC), provides downgrade attack prevention, and protects the TGS exchange.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Ensure host firewalls are enabled. Restrict access to administrative services (e.g., RDP, WSMAN, SMB for the admin shares) to dedicated jump hosts/PAWs.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Use PAWs on trusted hypervisors or dedicated, modern physical hardware (e.g., with a TPM and supporting hardware virtualization, so you can make use of Credential Guard) for best results. A VM is only as good as the machine hosting it.&lt;/li&gt;&#xA;&lt;li&gt;Your 8th - 10th gen Intel machines in the ewaste pile are just begging for a second life!&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Sell your customer on PKI. The security benefits are colossal and it&amp;rsquo;s a prerequisite for a lot of stuff you&amp;rsquo;ll want to do:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;LDAPS - turn off LDAP, require encryption, without LDAPS your DCs are chatting with other services in plaintext&lt;/li&gt;&#xA;&lt;li&gt;Machine cert auth for 802.1X or VPN access (maybe even machine-cert-based AOVPN for your full AD-joined environments with remote workers)&lt;/li&gt;&#xA;&lt;li&gt;TLS for your internal services&lt;/li&gt;&#xA;&lt;li&gt;SMB over QUIC&lt;/li&gt;&#xA;&lt;li&gt;PKINIT - Kerberos pre-authentication with certificates!&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Replaces the traditional AS-REQ phase. No more password hash on the wire during preauth; instead, use the public key (an X509 cert). Private key stays on your device, as with any other form of keypair auth.&lt;/li&gt;&#xA;&lt;li&gt;You should still use FAST (Kerberos armoring) to encrypt the TGS exchange.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Foundation for WHfB/passwordless strong authentication (great for the user experience)&lt;/li&gt;&#xA;&lt;li&gt;Allows you to start signing internal apps/scripts&lt;/li&gt;&#xA;&lt;li&gt;Avoid getting MITM&amp;rsquo;d when you RDP or SSH around (trusted cert = more of a guarantee that this machine is who it says it is!)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;DO NOT EVER log in to a Domain Administrator on a workstation.&lt;/strong&gt; Add your Domain Admins (and any other privileged roles) to the Protected Users group so that their credentials cannot be cached and reused later.&lt;/li&gt;&#xA;&lt;li&gt;Adopt LAPS rather than creating a domain-wide admin account for your workstations - even if you &amp;ldquo;tier&amp;rdquo; the admin accounts and dedicate one to your workstations, that&amp;rsquo;s a wide blast radius.&lt;/li&gt;&#xA;&lt;li&gt;Segment your network.&lt;/li&gt;&#xA;&lt;li&gt;Treat hypervisors with even more sanctity than you do your DCs. If someone can knock over the server hosting your DC (and you don&amp;rsquo;t have confidential computing) they can read the memory of your DC and go to town.&lt;/li&gt;&#xA;&lt;li&gt;SEGMENT YOUR NETWORK!! Use firewall rules! Use deep packet inspection, MITM your traffic (SSL inspection), block all outbound by default! THIS IS A GOOD THING and worth the effort!&lt;/li&gt;&#xA;&lt;li&gt;Enforce security policy. For example, if you say &amp;ldquo;don&amp;rsquo;t sign in to workstations with a Domain Admin account&amp;rdquo; and your techs still have access to the domain admin password, they WILL sign into workstations with said Domain Admin account. Disable accounts, change passwords, and add the SeDenyLocalLogon privilege to that darn account.&lt;/li&gt;&#xA;&lt;li&gt;Consider adopting (at least &lt;em&gt;partially&lt;/em&gt; adopting) the tiered AD privilege model.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Your domain controllers are the king in the castle. DO NOT GIVE A DOMAIN ADMIN ACCOUNT AWAY by logging it in to poor old Judy&amp;rsquo;s workstation. She HAS installed or WILL install SocialSecurity.pdf.exe at some point. Somehow, despite all your efforts.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Enable and enforce SMB encryption. If this means too much overhead, fall back to just enabling SMB signing. Avoid getting MITM&amp;rsquo;d.&lt;/li&gt;&#xA;&lt;li&gt;Disable NTLM where possible, or audit and restrict it to the best of your ability.&lt;/li&gt;&#xA;&lt;li&gt;Audit and remove unnecessary SPNs.&lt;/li&gt;&#xA;&lt;li&gt;Replace traditional service accounts with MSAs and/or gMSAs for automatic password rotation.&lt;/li&gt;&#xA;&lt;li&gt;Audit ACLs on privileged AD objects. Don&amp;rsquo;t let some random account modify properties on your tier zero admin accounts.&lt;/li&gt;&#xA;&lt;li&gt;Ship your logs somewhere, configure basic alerting. I like to use VictoriaLogs and Grafana, but you can use any SIEM or log store you&amp;rsquo;d like.&lt;/li&gt;&#xA;&lt;li&gt;Alert on sensitive group membership changes.&lt;/li&gt;&#xA;&lt;li&gt;Enable PowerShell Script Block and Module logging.&lt;/li&gt;&#xA;&lt;li&gt;Disable the print spooler where it&amp;rsquo;s not needed.&lt;/li&gt;&#xA;&lt;li&gt;Remove stale AD objects regularly.&lt;/li&gt;&#xA;&lt;li&gt;Test your AD backup and restore procedure regularly.&lt;/li&gt;&#xA;&lt;li&gt;Do not synchronize privileged Active Directory identities to Microsoft Entra. ABSOLUTELY DO NOT sync a Domain Admin account to a Global Admin in M365.&lt;/li&gt;&#xA;&lt;li&gt;If hardware supports it, enable Credential Guard.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;This requires a TPM and hardware virtualization, but protects you against pass-the-hash and pass-the-ticket attacks by sandboxing credentials on your device.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Restrict dynamic DNS updates to authenticated clients to prevent &amp;ldquo;ADIDNS&amp;rdquo; (Active Directory-Integrated DNS) spoofing.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;With unauthenticated dynamic updates enabled, anyone can bump a DNS record and either break things or, perhaps worse, redirect connection attempts intended to go to a server to themselves.&lt;/li&gt;&#xA;&lt;li&gt;Consider locking this down further to specific principals (e.g., computer accounts and Domain Admins only) so Domain Users can&amp;rsquo;t make dynamic updates (by default, even with secure updates on, any authenticated user can create new DNS records, including wildcard records).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Restrict DCSync permissions.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Accounts with &amp;ldquo;Replicating Directory Changes&amp;rdquo; and &amp;ldquo;Replicating Directory Changes All&amp;rdquo; permissions can steal password hashes by simulating Active Directory replication to a fake DC.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Finally.. consider joining your endpoints to Entra ID rather than Active Directory. Microsoft has made it quite clear that this is their new way forwards. You can still authenticate to on-prem resources with no hassle (&lt;a href=&#34;https://wporter.org/configuring-the-cloud-kerberos-trust-kerberos-sso-to-domain-resources-with-whfb-for-entra-joined-clients/&#34;&gt;see my blog post on the Cloud Kerberos Trust and getting WHfB passwordless auth to both M365 and on-premises resources from an Entra-joined client&lt;/a&gt;).&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Configuring the cloud Kerberos trust - Kerberos SSO to domain resources with WHfB for Entra-joined clients</title>
      <link>https://wporter.org/configuring-the-cloud-kerberos-trust-kerberos-sso-to-domain-resources-with-whfb-for-entra-joined-clients/</link>
      <pubDate>Sat, 07 Mar 2026 17:30:00 +0000</pubDate>
      <guid>https://wporter.org/configuring-the-cloud-kerberos-trust-kerberos-sso-to-domain-resources-with-whfb-for-entra-joined-clients/</guid>
      <description>&lt;p&gt;The scenario: I have a hybrid AD environment (identity and password hash synchronization) with Entra-joined endpoints. I&amp;rsquo;d like to authenticate to both cloud resources and on-premise domain-joined resources (via Kerberos) with my Windows Hello keypair.&lt;/p&gt;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;h3 id=&#34;entra-joined-devices-authenticating-to-domain-resources&#34;&gt;Entra-joined devices authenticating to domain resources&lt;/h3&gt;&#xA;&lt;p&gt;Right out of the box, an Entra-joined workstation with a user who&amp;rsquo;s synchronized from the on-premise domain and has signed in with a password will be able to authenticate to domain resources.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Fluent Bit on Windows to ship event logs to VictoriaLogs</title>
      <link>https://wporter.org/using-fluent-bit-on-windows-to-ship-event-logs-to-victorialogs/</link>
      <pubDate>Wed, 14 Jan 2026 23:30:00 +0000</pubDate>
      <guid>https://wporter.org/using-fluent-bit-on-windows-to-ship-event-logs-to-victorialogs/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://docs.fluentbit.io/manual/installation/downloads/windows&#34;&gt;Windows install docs&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://docs.fluentbit.io/manual/installation/downloads/windows#can-you-manage-fluent-bit-service-using-powershell&#34;&gt;Windows service setup&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Fluent Bit is designed solely as a low-overhead forwarding agent, primarily for logs (though it does have support for metrics as well), and has a wide ecosystem of &amp;ldquo;input&amp;rdquo; and &amp;ldquo;output&amp;rdquo; plugins that permit it to be used to collect logs or metrics from a wide variety of things, then ship said logs or metrics to a wide variety of data stores (e.g., in our case, it&amp;rsquo;ll ship via a web request POSTing events to VictoriaLogs).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows Encrypted File System basics</title>
      <link>https://wporter.org/windows-encrypted-file-system-basics/</link>
      <pubDate>Sun, 04 Jan 2026 17:45:00 +0000</pubDate>
      <guid>https://wporter.org/windows-encrypted-file-system-basics/</guid>
      <description>&lt;p&gt;BitLocker is great, but is primarily useful for preventing tampering when the system is offline. Once your system is online, a sufficiently privileged user could write to or read from anywhere on the disk. The Encrypted File System (EFS) exists to mitigate this.&lt;/p&gt;&#xA;&lt;p&gt;EFS, a capability of NTFS (since Windows 2000) allows you to mark files or directories for transparent encryption.&lt;/p&gt;&#xA;&lt;p&gt;This is not to be confused with Windows Personal Data Encryption, an Enterprise-edition feature tied to Windows Hello for Business introduced with Windows 11, version 24H2. PDE is similar, requires Windows 11 Enterprise (e.g., M365 E3/E5) and uses WHfB keypairs rather than user certificates (and thus requires Entra join and Windows Hello logon, and thus doesn&amp;rsquo;t work via RDP).&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell Core (Microsoft Graph and Az) in a toolbox container on your Linux box</title>
      <link>https://wporter.org/powershell-core-microsoft-graph-and-az-in-a-toolbox-container-on-your-linux-box/</link>
      <pubDate>Sun, 24 Aug 2025 22:00:00 +0000</pubDate>
      <guid>https://wporter.org/powershell-core-microsoft-graph-and-az-in-a-toolbox-container-on-your-linux-box/</guid>
      <description>&lt;p&gt;If you&amp;rsquo;re like me (god, for your sake I hope you aren&amp;rsquo;t) you love PowerShell and use Linux.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m also super lazy. And I don&amp;rsquo;t like Microsoft adding 5,000 repositories to my system to keep PowerShell updated. The solution? A container!&lt;/p&gt;&#xA;&lt;p&gt;Toolbox lets you very easily jump into a podman container for a development environment. In this container, you can typically install whatever you&amp;rsquo;d need as if it was on a bare metal install - no special anything required. Since all I need is PowerShell, we&amp;rsquo;ll keep things simple.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Microsoft MD-102 (Endpoint Administrator): Pass!</title>
      <link>https://wporter.org/microsoft-md-102-endpoint-administrator-pass/</link>
      <pubDate>Sat, 23 Aug 2025 12:00:00 +0000</pubDate>
      <guid>https://wporter.org/microsoft-md-102-endpoint-administrator-pass/</guid>
      <description>&lt;h2 id=&#34;my-thoughts-on-the-certification&#34;&gt;My thoughts on the certification&lt;/h2&gt;&#xA;&lt;p&gt;I passed the Intune test!&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s been about a year since I started working at a shop that uses Intune (a bit - for iOS and Macs), so on a whim I decided I should get the cert. It took me about three weekends, plus a few hours of study during the week.&lt;/p&gt;&#xA;&lt;p&gt;I had a decent bit of experience with Intune, but don&amp;rsquo;t use it daily.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configuring silent OneDrive sign-in and Known Folders sync</title>
      <link>https://wporter.org/configuring-silent-onedrive-sign-in-and-known-folders-sync/</link>
      <pubDate>Sun, 17 Aug 2025 17:00:00 +0000</pubDate>
      <guid>https://wporter.org/configuring-silent-onedrive-sign-in-and-known-folders-sync/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://learn.microsoft.com/en-us/sharepoint/use-silent-account-configuration&#34;&gt;MS Learn link here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;You can do this via Group Policy or Intune, depending on how your environment is configured, but the policies are the same.&lt;/p&gt;&#xA;&lt;h2 id=&#34;deploying-silent-onedrive-sync-with-intune&#34;&gt;Deploying silent OneDrive sync with Intune&lt;/h2&gt;&#xA;&lt;p&gt;For successful, silent sync, you MUST configure these three policies:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Silently move known folders to OneDrive&lt;/li&gt;&#xA;&lt;li&gt;Silently sign users in to OneDrive with their Windows credentials&lt;/li&gt;&#xA;&lt;li&gt;Enable Files on Demand&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Here is an example of this minimal configuration in Intune. Choose just these settings from the Settings Catalog and enable them:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Onboarding Microsoft Defender for Endpoint with Intune</title>
      <link>https://wporter.org/onboarding-microsoft-defender-for-endpoint-with-intune/</link>
      <pubDate>Sun, 17 Aug 2025 16:45:00 +0000</pubDate>
      <guid>https://wporter.org/onboarding-microsoft-defender-for-endpoint-with-intune/</guid>
      <description>&lt;h2 id=&#34;licensing-prerequisites&#34;&gt;Licensing Prerequisites&lt;/h2&gt;&#xA;&lt;p&gt;Your tenant requires a license for Defender for Endpoint - either a Microsoft Defender for Endpoint P1 or P2, Microsoft Defender for Server, or Microsoft Defender for Business (&amp;ldquo;P1.5&amp;rdquo; edition for SMBs included with Microsoft 365 Business Premium).&lt;/p&gt;&#xA;&lt;p&gt;Without one of these licenses, you will not see the Assets &amp;gt; Devices tab or the Settings &amp;gt; Endpoints menu, and cannot onboard devices to MDE.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;It may take up to 24 hours for your Defender tenant to be provisioned&lt;/strong&gt; once you have purchased and assigned the required licensing. Your admin account does &lt;strong&gt;not&lt;/strong&gt; need to be licensed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Microsoft Intune Assignment Filters</title>
      <link>https://wporter.org/microsoft-intune-assignment-filters/</link>
      <pubDate>Sun, 17 Aug 2025 16:30:00 +0000</pubDate>
      <guid>https://wporter.org/microsoft-intune-assignment-filters/</guid>
      <description>&lt;p&gt;For info on designing filters for performance and manageability, &lt;a href=&#34;https://learn.microsoft.com/en-us/intune/intune-service/fundamentals/filters-performance-recommendations&#34;&gt;see MS docs&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Device assignment filters allow you to select what devices a policy assigned to users will apply to, and let you select what devices in a device group are eligible for a policy.&lt;/p&gt;&#xA;&lt;p&gt;App assignment filters allow you to select what devices specific app protection policies apply to.&lt;/p&gt;&#xA;&lt;p&gt;They&amp;rsquo;re both useful tools for scoping down your Intune configuration policies. Let&amp;rsquo;s have a look at them!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Deploying Windows LAPS for client PCs with Microsoft Intune</title>
      <link>https://wporter.org/deploying-windows-laps-for-client-pcs-with-microsoft-intune/</link>
      <pubDate>Sat, 09 Aug 2025 16:35:00 +0000</pubDate>
      <guid>https://wporter.org/deploying-windows-laps-for-client-pcs-with-microsoft-intune/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;The Windows Local Administrator Password Solution (LAPS) allows administrators to configure a randomized, automatically rotated administrative password for Windows devices. This is a distinct feature from macOS LAPS.&lt;/p&gt;&#xA;&lt;p&gt;Windows LAPS, integrated with Entra ID, replaces the older &amp;rsquo;legacy&amp;rsquo; Microsoft LAPS solution as of Windows 11 23H2. Microsoft is no longer updating &amp;rsquo;legacy&amp;rsquo; LAPS and its .msi package will be blocked from installing on Windows 11 24H2, Server 2025, and newer OSes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hardening and customizing Google Chrome via policy (registry)</title>
      <link>https://wporter.org/hardening-and-customizing-google-chrome-via-policy-registry/</link>
      <pubDate>Sun, 13 Jul 2025 17:35:00 +0000</pubDate>
      <guid>https://wporter.org/hardening-and-customizing-google-chrome-via-policy-registry/</guid>
      <description>&lt;p&gt;Quick one here. Just going to list some policies, discuss setting them, and link to the docs and a script for setting them.&lt;/p&gt;&#xA;&lt;p&gt;We can manage Chrome via MDM (like Intune), Group Policy (if the machine is joined to an Active Directory domain and you&amp;rsquo;ve imported the relevant ADMX), via &amp;lsquo;preferences&amp;rsquo; JSON config files (Mac or Linux), or via the Windows registry (my preferred option since it applies to any Windows PC, regardless of management infrastructure, and is easy to script).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why doesn&#39;t Windows support modern cryptography?</title>
      <link>https://wporter.org/why-doesnt-windows-support-modern-cryptography/</link>
      <pubDate>Tue, 01 Jul 2025 19:35:00 +0000</pubDate>
      <guid>https://wporter.org/why-doesnt-windows-support-modern-cryptography/</guid>
      <description>&lt;p&gt;Try to feed Windows a certificate with an Ed25519 signature somewhere in the chain and it&amp;rsquo;ll just FALL OVER because &lt;a href=&#34;https://learn.microsoft.com/en-us/windows/win32/seccng/&#34;&gt;CNG&lt;/a&gt; doesn&amp;rsquo;t support Ed25519 AT ALL?&lt;/p&gt;&#xA;&lt;p&gt;This is an operating system that is &amp;lsquo;modern&amp;rsquo; and &amp;lsquo;current&amp;rsquo; and &amp;lsquo;has AI&amp;rsquo;.&lt;/p&gt;&#xA;&lt;p&gt;Here! Watch it fall over when I try to do anything with a cert:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image.png&#34; alt=&#34;System level error occurred while verifying trust X509 cert signed with Ed25519 Windows 11 24H2 .crt dialog&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;God forbid you want to use something with an Ed25519 signature in the chain:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Grafana Alloy on Windows to export (push) metrics (from Prometheus) and logs (from Loki)</title>
      <link>https://wporter.org/using-grafana-alloy-on-windows-to-export-push-metrics-from-prometheus-and-logs-from-loki/</link>
      <pubDate>Sun, 29 Jun 2025 19:30:00 +0000</pubDate>
      <guid>https://wporter.org/using-grafana-alloy-on-windows-to-export-push-metrics-from-prometheus-and-logs-from-loki/</guid>
      <description>&lt;p&gt;Grafana Alloy is a multi-use exporter that we can run on our hosts to expose metrics for Prometheus. It also does other stuff, like send logs to Loki. It&amp;rsquo;s got a lot of features - &lt;a href=&#34;https://grafana.com/docs/alloy/latest/&#34;&gt;you can read more it at grafana.com/docs&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Essentially, Grafana Alloy is an Open Telemetry-compatible collector that serves as a unified telemetry agent for popular services like Loki and Prometheus.&lt;/p&gt;&#xA;&lt;p&gt;Some relevant points about Alloy:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;We can replace the Prometheus Windows Exporter with Alloy, as Alloy for Windows has the Prometheus Windows Exporter built in.&lt;/li&gt;&#xA;&lt;li&gt;We can use Alloy as a collector/forwarder to push metrics to Prometheus (rather than the default pull) which may be desirable, depending on your specific environment and firewalling&lt;/li&gt;&#xA;&lt;li&gt;Grafana Alloy replaced the older Grafana Agent.&lt;/li&gt;&#xA;&lt;li&gt;Alloy allows us collect and push logs to Loki in addition to collecting and pushing metrics to Prometheus.&lt;/li&gt;&#xA;&lt;li&gt;Alloy has a considerable memory footprint compared to the much leaner Windows Exporter, but is necessary if you would like to push metrics to Prometheus. I&amp;rsquo;ve noticed Alloy consuming an order of magnitude (20x, in this case) more memory than the standalone Exporter (~370 mb vs ~20 mb).&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;installing-alloy-on-windows&#34;&gt;Installing Alloy on Windows&lt;/h2&gt;&#xA;&lt;p&gt;There is not yet a Winget package for Grafana Alloy (thought there was, but couldn&amp;rsquo;t find it). You can download and (silently) install it with the following PowerShell:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using the Dell Command | Update CLI to update drivers from PowerShell</title>
      <link>https://wporter.org/using-the-dell-command-update-cli-to-update-drivers-from-powershell/</link>
      <pubDate>Mon, 23 Jun 2025 14:30:00 +0000</pubDate>
      <guid>https://wporter.org/using-the-dell-command-update-cli-to-update-drivers-from-powershell/</guid>
      <description>&lt;p&gt;Dell Command | Update is the only piece of Dell software that I intentionally put on machines. It&amp;rsquo;s one of the two useful Dell apps, alongside the Power Manager applet. It&amp;rsquo;s a driver manager that can be used to fetch the most recent drivers validated and published for a piece of Dell hardware, and it&amp;rsquo;s a nice utility to have.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s better (in my opinion) than HP and Lenovo&amp;rsquo;s options (Support Assistant and Commercial Vantage, respectively) because it&amp;rsquo;s available via the Winget packages &lt;code&gt;Dell.CommandUpdate&lt;/code&gt; (Classic, v4.6) and &lt;code&gt;Dell.CommandUpdate.Universal&lt;/code&gt; (.NET 8, v5.5), and it has a usable CLI interface that can be used to configure the software with PowerShell!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configuring a Server 2008 R2 domain</title>
      <link>https://wporter.org/configuring-a-server-2008-r2-domain/</link>
      <pubDate>Sun, 25 May 2025 16:30:00 +0000</pubDate>
      <guid>https://wporter.org/configuring-a-server-2008-r2-domain/</guid>
      <description>&lt;h2 id=&#34;why-are-you-doing-this&#34;&gt;Why are you doing this?&lt;/h2&gt;&#xA;&lt;p&gt;Fun!&lt;/p&gt;&#xA;&lt;h2 id=&#34;goal&#34;&gt;Goal&lt;/h2&gt;&#xA;&lt;p&gt;DNS, DHCP and AD DS installed and working for a FL 2008 AD domain that we can then join physical Hyper-V Server 2008 R2 machines to.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ll be installing a couple of VMs on my desktop/main Windows server running 24H2 (Windows 11 Enterprise LTSC and Windows Server 2025). These have an i9-12900KS and a pair of E5-2698 v3 CPUs, respectively, which are both x86-64-v3 (this is a newer 12900 without AVX512). Then, we&amp;rsquo;ll think about standing up a Hyper-V Server 2008R2 machine.. or a cluster of them.. in another post.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up a Windows 7 box in mid 2025</title>
      <link>https://wporter.org/setting-up-a-windows-7-box-in-mid-2025/</link>
      <pubDate>Fri, 23 May 2025 16:30:00 +0000</pubDate>
      <guid>https://wporter.org/setting-up-a-windows-7-box-in-mid-2025/</guid>
      <description>&lt;h2 id=&#34;why-on-earth-would-you-want-to-do-that&#34;&gt;Why on earth would you want to do that?&lt;/h2&gt;&#xA;&lt;p&gt;Windows 7 is great and I would love it if the whole world knew what kind of Content I watch. More seriously, I wanted to briefly play an old Command &amp;amp; Conquer game and didn&amp;rsquo;t feel like tinkering with my Windows 11 box. Plus, nostalgia.&lt;/p&gt;&#xA;&lt;h2 id=&#34;hardware&#34;&gt;Hardware&lt;/h2&gt;&#xA;&lt;p&gt;I will be using relatively appropriate hardware.&lt;/p&gt;&#xA;&lt;p&gt;I briefly tried a NUC7, but it doesn&amp;rsquo;t really have any USB 2 ports, so getting through setup is annoying.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Lazy PowerShell ssh-copy-id for Windows with SSH keys stored in 1Password</title>
      <link>https://wporter.org/lazy-powershell-ssh-copy-id-for-windows-with-ssh-keys-stored-in-1password/</link>
      <pubDate>Sun, 11 May 2025 16:30:00 +0000</pubDate>
      <guid>https://wporter.org/lazy-powershell-ssh-copy-id-for-windows-with-ssh-keys-stored-in-1password/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;The version of OpenSSH bundled with Windows does not include the &lt;code&gt;ssh-copy-id&lt;/code&gt; utility for quickly copying a SSH key to a remote machine.&lt;/p&gt;&#xA;&lt;p&gt;I use 1Password&amp;rsquo;s SSH agent, and store my SSH key in 1Password, so I can unlock it with biometrics (Windows Hello) instead of a passphrase, easily synchronize it between my machines, and avoid storing it on local disks. However, this means I can&amp;rsquo;t just copy my &lt;code&gt;id_ed25519.pub&lt;/code&gt; from one of my boxes using the 1Password SSH agent (because that file isn&amp;rsquo;t created!)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quick and dirty - install KB5002623 fix for Office 2016 crashing after KB5002700 installation via executable patch</title>
      <link>https://wporter.org/quick-and-dirty-install-kb5002623-fix-for-office-2016-crashing-after-kb5002700-installation-via-executable-patch/</link>
      <pubDate>Thu, 10 Apr 2025 18:30:00 +0000</pubDate>
      <guid>https://wporter.org/quick-and-dirty-install-kb5002623-fix-for-office-2016-crashing-after-kb5002700-installation-via-executable-patch/</guid>
      <description>&lt;p&gt;Really dirty quick fix to install &lt;a href=&#34;https://support.microsoft.com/en-us/topic/april-10-2025-update-for-office-2016-kb5002623-d60c1f31-bb7c-4426-b8f4-69186d7fc1e5&#34;&gt;Microsoft&amp;rsquo;s executable April 10, 2025 patch for Office 2016, KB5002623&lt;/a&gt; that resolves a number of crashes caused by the KB5002700 security fix from April 8, 2025.&lt;/p&gt;&#xA;&lt;p&gt;While it is not especially pretty, it works. Replace the &lt;code&gt;$Fileserver&lt;/code&gt; variable with a parent directory that has the four executables for KB5002700 and KB5002623 (64 and 32-bit) as children, like so:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[liam@server ~]$ sudo ls -l /srv/www/files&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r--. 1 nginx nginx 262752112 Apr 11 00:15 mso2016-kb5002700-fullfile-x64-glb.exe&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r--. 1 nginx nginx 134911608 Apr 11 00:15 mso2016-kb5002700-fullfile-x86-glb.exe&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r--. 1 nginx nginx   3556192 Apr 10 21:17 msodll202016-kb5002623-fullfile-x64-glb.exe&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r--. 1 nginx nginx   3556144 Apr 10 22:10 msodll202016-kb5002623-fullfile-x86-glb.exe&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And, without further ado, here&amp;rsquo;s the script:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cleaning up ghost Saved-Critical Hyper-V VMs after nuking all their files</title>
      <link>https://wporter.org/cleaning-up-ghost-saved-critical-hyper-v-vms-after-nuking-all-their-files/</link>
      <pubDate>Sun, 06 Apr 2025 00:30:59 +0000</pubDate>
      <guid>https://wporter.org/cleaning-up-ghost-saved-critical-hyper-v-vms-after-nuking-all-their-files/</guid>
      <description>&lt;p&gt;So, I decided to upgrade my laptop. Part of that upgrade was the very caring removal of my D: drive, since the new board only had a single M.2 slot. My D: drive happened to be a second SSD with.. my Hyper-V config and VM disk directories.&lt;/p&gt;&#xA;&lt;p&gt;Once I&amp;rsquo;d powered the machine back on and jumped back in to try and get rid of my ghost VMs via PowerShell, I was greeted with a pleasant sight:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Adventures with secedit.exe and PowerShell, pt. 1</title>
      <link>https://wporter.org/adventures-with-secedit.exe-and-powershell-pt.-1/</link>
      <pubDate>Thu, 27 Mar 2025 12:13:59 +0000</pubDate>
      <guid>https://wporter.org/adventures-with-secedit.exe-and-powershell-pt.-1/</guid>
      <description>&lt;h2 id=&#34;i-have-a-problem&#34;&gt;I have a problem&lt;/h2&gt;&#xA;&lt;p&gt;Secedit is a bit confusing to use at first, so let&amp;rsquo;s build a PowerShell wrapper to do our bidding!&lt;/p&gt;&#xA;&lt;h2 id=&#34;first-how-do-we-use-this-darn-thing&#34;&gt;First, how do we use this darn thing?&lt;/h2&gt;&#xA;&lt;p&gt;After a brief detour &lt;a href=&#34;https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/secedit&#34;&gt;to MS Learn&lt;/a&gt; and some poking around&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Secedit is funky! It wants you to treat it with care and take it on long walks. No slamming random SIDs at it and making it figure the hard stuff out (at least, not yet)!&lt;/p&gt;</description>
    </item>
    <item>
      <title>ReFS sucks and you shouldn&#39;t use it, but here&#39;s how you can configure ReFS deduplication and compression (if you really want to do this to yourself)</title>
      <link>https://wporter.org/refs-sucks-and-you-shouldnt-use-it-but-heres-how-you-can-configure-refs-deduplication-and-compression-if-you-really-want-to-do-this-to-yourself/</link>
      <pubDate>Sat, 22 Mar 2025 12:13:59 +0000</pubDate>
      <guid>https://wporter.org/refs-sucks-and-you-shouldnt-use-it-but-heres-how-you-can-configure-refs-deduplication-and-compression-if-you-really-want-to-do-this-to-yourself/</guid>
      <description>&lt;p&gt;Microsoft&amp;rsquo;s ReFS is their (terrible) answer to ZFS - a &amp;ldquo;modern&amp;rdquo; filesystem with fancy features like deduplication and checksumming.&lt;/p&gt;&#xA;&lt;p&gt;While the implementation of said features (specifically deduplication) frankly sucks, and I have not found it to be anywhere near production-ready, I have set ReFS up on my own machines to save some disk space when I&amp;rsquo;m being cheap and need Windows.&lt;/p&gt;&#xA;&lt;p&gt;If at all possible, you should switch to Linux and use ZFS or BTRFS instead. You will most likely have a bad time with ReFS.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Revisited: Working with Hyper-V NAT switches</title>
      <link>https://wporter.org/revisited-working-with-hyper-v-nat-switches/</link>
      <pubDate>Sat, 01 Feb 2025 10:12:59 +0000</pubDate>
      <guid>https://wporter.org/revisited-working-with-hyper-v-nat-switches/</guid>
      <description>&lt;h2 id=&#34;foreword&#34;&gt;Foreword&lt;/h2&gt;&#xA;&lt;p&gt;This is an update to &lt;a href=&#34;https://wporter.org/create-a-vswitch-and-a-netnat-object-to-avoid-default-switch-dhcp&#34;&gt;a similar post from back in October 2024&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve been going through and cleaning up a lot of my setup scripts and the like in pursuit of &lt;del&gt;SCIENCE&lt;/del&gt; easier to use and quickly reproducible testing environments.&lt;/p&gt;&#xA;&lt;p&gt;Occasionally, I want to configure NAT switches for small-scale, self-contained environments. I didn&amp;rsquo;t have anything that made this process nice, so I decided to fix something up.&lt;/p&gt;&#xA;&lt;p&gt;Of course, before I knew it I&amp;rsquo;d wound up redoing the original post linked above - so I&amp;rsquo;d might as well post it!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Getting started with Cloud-init on Hyper-V</title>
      <link>https://wporter.org/getting-started-with-cloud-init-on-hyper-v/</link>
      <pubDate>Fri, 24 Jan 2025 10:10:10 +0000</pubDate>
      <guid>https://wporter.org/getting-started-with-cloud-init-on-hyper-v/</guid>
      <description>&lt;h1 id=&#34;intro&#34;&gt;Intro&lt;/h1&gt;&#xA;&lt;p&gt;This will go over setting up an environment to build Cloud-init nocloud data drives (ISO, not vfat), converting nocloud disk images to VHDX, and then using those to hands-off provision VMs on Hyper-V hosts that can then be configured with Ansible.&lt;/p&gt;&#xA;&lt;p&gt;More specifically, this will demonstrate using Cloud-init and the Alma Linux genericcloud image to stand up an Alma Linux VM on a Server 2025 host.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-is-cloud-init&#34;&gt;What is Cloud-init?&lt;/h2&gt;&#xA;&lt;p&gt;Cloud-init is a Canonical project that&amp;rsquo;s become the defacto standard for touchless configuration of Linux VMs over the years. Cloud-init is a package that can be installed on a Linux or Unix system that will read configuration files and provision a template VM on first boot for its environment.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enabling Hyper-V in Windows Home editions</title>
      <link>https://wporter.org/enabling-hyper-v-in-windows-home-editions/</link>
      <pubDate>Sat, 11 Jan 2025 10:10:10 +0000</pubDate>
      <guid>https://wporter.org/enabling-hyper-v-in-windows-home-editions/</guid>
      <description>&lt;p&gt;There&amp;rsquo;s a batch script floating around that does this, but I was curious to see if it still worked and wanted to rewrite it in PowerShell.&lt;/p&gt;&#xA;&lt;p&gt;Tested and working with a Media Creation Tool version of Windows 10 Home Single Language 22H2 and Windows 11 Home 24H2.&lt;/p&gt;&#xA;&lt;p&gt;PowerShell:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-pwsh&#34; data-lang=&#34;pwsh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;Function&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;Enable-HyperVOnWinHome&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&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;nb&#34;&gt;CmdletBinding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()]&lt;/span&gt;&#xA;&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;param&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&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;$ssp&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$env:SystemRoot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;\Servicing\Packages&amp;#34;&lt;/span&gt;&#xA;&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;-Path&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$ssp&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;&#xA;&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;Where-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-like&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;*Hyper-V*.mum&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;&#xA;&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;ForEach-Object&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dism&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;n&#34;&gt;online&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;norestart&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;add-package&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ssp&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;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&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;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dism&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;n&#34;&gt;online&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;enable-feature&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;featurename&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;Microsoft-Hyper&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-V&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;all&lt;/span&gt;&#xA;&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;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&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 is not required, but you might want to enable the VM Platform while you&amp;#39;re here&lt;/span&gt;&#xA;&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 it&amp;#39;s missing, WSL won&amp;#39;t work.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&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;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dism&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;n&#34;&gt;online&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;enable-feature&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;featurename&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;VirtualMachinePlatform&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;all&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;norestart&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Proof:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows Hello fingerprint &#39;too similar to one that&#39;s already registered&#39; with no fingerprints registered</title>
      <link>https://wporter.org/windows-hello-fingerprint-too-similar-to-one-thats-already-registered-with-no-fingerprints-registered/</link>
      <pubDate>Sun, 05 Jan 2025 10:10:10 +0000</pubDate>
      <guid>https://wporter.org/windows-hello-fingerprint-too-similar-to-one-thats-already-registered-with-no-fingerprints-registered/</guid>
      <description>&lt;h2 id=&#34;problem&#34;&gt;Problem&lt;/h2&gt;&#xA;&lt;p&gt;Windows Hello fingerprint/face broke themselves after a hardware change (reenabling iGPU.) Not sure why. Fingerprint still working in UEFI (as supervisor authentication.)&#xA;Able to easily reregister Hello face ID. Not able to reregister Hello fingerprint ID with error &amp;ldquo;this fingerprint is too similar to one that&amp;rsquo;s already registered&amp;rdquo; when I attempt to register any fingerprint. Fingerprint is NOT cleared from the TPM (still usable for power on/supervisor authentication.)&lt;/p&gt;&#xA;&lt;p&gt;Device: ThinkPad P1 Gen 4 w/ Synaptics UWP WBDI fingerprint reader (synaumdf.cat, WUDFRd.sys, AuthenticateFAM_SecureFP.dll) using 6.0.45.1136 driver (1/30/24)&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Bitlocker Script</title>
      <link>https://wporter.org/the-bitlocker-script/</link>
      <pubDate>Mon, 16 Dec 2024 10:10:10 +0000</pubDate>
      <guid>https://wporter.org/the-bitlocker-script/</guid>
      <description>&lt;h2 id=&#34;problem&#34;&gt;Problem&lt;/h2&gt;&#xA;&lt;p&gt;Needed to enable BitLocker on lots of machines with varying configurations.&lt;/p&gt;&#xA;&lt;p&gt;Really didn&amp;rsquo;t want to do it manually, especially since this problem will not go away.&lt;/p&gt;&#xA;&lt;h2 id=&#34;solution&#34;&gt;Solution&lt;/h2&gt;&#xA;&lt;p&gt;Uhh. Couple hours of PowerShell.&lt;/p&gt;&#xA;&lt;p&gt;It works OK. Couple things I could still improve. I&amp;rsquo;ve run this probably a couple thousand times by now. It should be more or less idempotent and plays nicely with common edge cases (does not catastrophically fail.) It will happily encrypt my USB disks since they&amp;rsquo;re just exposed to the system as fixed NVMEs, but that&amp;rsquo;s not the script&amp;rsquo;s fault&amp;hellip; as annoying as it can be.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hide &#39;sign into all apps&#39; pop-up in Microsoft apps</title>
      <link>https://wporter.org/hide-sign-into-all-apps-pop-up-in-microsoft-apps/</link>
      <pubDate>Tue, 10 Dec 2024 12:34:56 +0000</pubDate>
      <guid>https://wporter.org/hide-sign-into-all-apps-pop-up-in-microsoft-apps/</guid>
      <description>&lt;h2 id=&#34;problem&#34;&gt;Problem&lt;/h2&gt;&#xA;&lt;p&gt;Users, when signing into Teams or Office, are prompted to &amp;ldquo;sign into all apps on this device&amp;rdquo; (Entra join a machine), which then fails with error &amp;ldquo;Your account was not set up on this device because device management could not be enabled&amp;rdquo; with code 80192EE7 (server msg: 0x80192ee7.)&lt;/p&gt;&#xA;&lt;p&gt;We don&amp;rsquo;t want users getting this prompt at all.&lt;/p&gt;&#xA;&lt;h2 id=&#34;solution&#34;&gt;Solution&lt;/h2&gt;&#xA;&lt;p&gt;Luckily, there&amp;rsquo;s a way to do just that (block our users from getting this prompt.) It&amp;rsquo;s only possible to do this directly from the registry, with key and value:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Snippet: one-liners to install all RSAT utilities</title>
      <link>https://wporter.org/snippet-one-liners-to-install-all-rsat-utilities/</link>
      <pubDate>Mon, 02 Dec 2024 12:34:56 +0000</pubDate>
      <guid>https://wporter.org/snippet-one-liners-to-install-all-rsat-utilities/</guid>
      <description>&lt;h2 id=&#34;server-2025&#34;&gt;Server 2025&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-pwsh&#34; data-lang=&#34;pwsh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-WindowsFeature&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;n&#34;&gt;Name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-like&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;*RSAT*&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Install-WindowsFeature&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;windows-11&#34;&gt;Windows 11&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-pwsh&#34; data-lang=&#34;pwsh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-WindowsCapability&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Online&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;n&#34;&gt;Name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-like&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;*RSAT*&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Add-WindowsCapability&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Online&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Requiring multiple, different factors for Windows Hello console authentication</title>
      <link>https://wporter.org/requiring-multiple-different-factors-for-windows-hello-console-authentication/</link>
      <pubDate>Sun, 01 Dec 2024 12:34:56 +0000</pubDate>
      <guid>https://wporter.org/requiring-multiple-different-factors-for-windows-hello-console-authentication/</guid>
      <description>&lt;p&gt;NOTE: this works with normal Windows Hello without any backing infrastructure if you just want to require two Hello factors to sign on to a machine - this is how I use it (make a convenience PIN more secure.)&#xA;NOTE: yes, Hello for Biz is MFA on its own, kind of.&lt;/p&gt;&#xA;&lt;p&gt;By setting up first factor to be biometric or a PIN, then setting the second factor to be proximity or a PIN, I can make sure that I&amp;rsquo;m able to sign in with Hello when my phone is dead by passing biometric authentication and then entering my PIN.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Snippet: enabling forwarding between Hyper-V NAT vSwitches (WSL &amp; int. NAT)</title>
      <link>https://wporter.org/snippet-enabling-forwarding-between-hyper-v-nat-vswitches-wsl-int.-nat/</link>
      <pubDate>Tue, 26 Nov 2024 12:34:56 +0000</pubDate>
      <guid>https://wporter.org/snippet-enabling-forwarding-between-hyper-v-nat-vswitches-wsl-int.-nat/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://superuser.com/a/1764704&#34;&gt;https://superuser.com/a/1764704&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;In my case, with NAT switch &amp;lsquo;vlab0-natswitch&amp;rsquo; and the default WSL NAT switch (so I can run Ansible playbooks against VMs behind a different NAT switch) the following one-liner does the trick. Adjust interfacealias values to suit.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-pwsh&#34; data-lang=&#34;pwsh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;get-netipinterface&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;interfacealias&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-eq&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;vEthernet (vlab0-natswitch)&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-or&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;interfacealias&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-eq&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;vEthernet (WSL (Hyper-V firewall))&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;nb&#34;&gt;set-netipinterface&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-forwarding&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Enabled&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-verbose&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Works!&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;liam@liam-p1g4i-0:~$ ip a&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1: lo: &amp;lt;LOOPBACK,UP,LOWER_UP&amp;gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet 127.0.0.1/8 scope host lo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft forever preferred_lft forever&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet 10.255.255.254/32 brd 10.255.255.254 scope global lo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft forever preferred_lft forever&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet6 ::1/128 scope host&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft forever preferred_lft forever&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc mq state UP group default qlen 1000&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    link/ether 00:15:5d:b7:bc:42 brd ff:ff:ff:ff:ff:ff&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet 172.28.133.19/20 brd 172.28.143.255 scope global eth0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft forever preferred_lft forever&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet6 fe80::215:5dff:feb7:bc42/64 scope link&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft forever preferred_lft forever&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;liam@liam-p1g4i-0:~$ uname -r&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5.15.167.4-microsoft-standard-WSL2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;liam@liam-p1g4i-0:~$ ping 192.0.2.10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PING 192.0.2.10 (192.0.2.10) 56(84) bytes of data.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;64 bytes from 192.0.2.10: icmp_seq=1 ttl=127 time=1.41 ms&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Snippet: using Winget from system context (NinjaRMM scripts)</title>
      <link>https://wporter.org/snippet-using-winget-from-system-context-ninjarmm-scripts/</link>
      <pubDate>Fri, 22 Nov 2024 12:34:56 +0000</pubDate>
      <guid>https://wporter.org/snippet-using-winget-from-system-context-ninjarmm-scripts/</guid>
      <description>&lt;p&gt;Yes, NinjaRMM has features for Winget package management. No, I didn&amp;rsquo;t look it up, and it wasn&amp;rsquo;t enabled in our tenant.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-pwsh&#34; data-lang=&#34;pwsh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$WingetPath&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Resolve-Path&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller*\winget.exe&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&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;o&#34;&gt;-not&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$WingetPath&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;){&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;nb&#34;&gt;Write-Error&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Message&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Winget path not found. Failure. Exiting.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&#xA;&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;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&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;$WingetPath&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Split-Path&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Path&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$WingetPath&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Parent&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&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;nv&#34;&gt;$WingetPath&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&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;winget&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;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-exact&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-id&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;py&#34;&gt;Teams&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-silent&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-accept-package-agreements&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-accept-source-agreements&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Renaming domain member detaches Computer Object</title>
      <link>https://wporter.org/renaming-domain-member-detaches-computer-object/</link>
      <pubDate>Wed, 20 Nov 2024 12:34:56 +0000</pubDate>
      <guid>https://wporter.org/renaming-domain-member-detaches-computer-object/</guid>
      <description>&lt;p&gt;If renaming a domain member succeeds but the corresponding computer object is not updated, the trust relationship between the domain and the computer will break, preventing you from logging in, among other things.&lt;/p&gt;&#xA;&lt;p&gt;Luckily, the fix is just modifying the &lt;code&gt;Name&lt;/code&gt;, &lt;code&gt;SamAccountName&lt;/code&gt; (mandatory) and &lt;code&gt;DNSHostName&lt;/code&gt; (optional) properties of the computer object:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-pwsh&#34; data-lang=&#34;pwsh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-ADComputer&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;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Where &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-eq&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;OLDNAME&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Rename-ADObject&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-NewName&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;NEWNAME&amp;#39;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-PassThru&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Set-ADComputer&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-SamAccountName&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;NEWNAME$&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I&amp;rsquo;d probably rename the machine again afterwards in an attempt to get it to clean any remaining bits of itself up. You can do this once the computer account name and AD object name have been updated.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
