Congratulations!

[Valid RSS] This is a valid RSS feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://feeds.feedburner.com/helloitsliam?format=xml

  1. <?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
  2. xmlns:content="http://purl.org/rss/1.0/modules/content/"
  3. xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  4. xmlns:dc="http://purl.org/dc/elements/1.1/"
  5. xmlns:atom="http://www.w3.org/2005/Atom"
  6. xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  7. xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  8. xmlns:georss="http://www.georss.org/georss"
  9. xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
  10. >
  11.  
  12. <channel>
  13. <title>Liam Cleary [MVP Alumni and MCT]</title>
  14. <atom:link href="https://helloitsliam.com/feed/" rel="self" type="application/rss+xml" />
  15. <link>https://helloitsliam.com</link>
  16. <description>Architecture, Development, Security, Hacking and anything that I deem as important</description>
  17. <lastBuildDate>Thu, 28 Mar 2024 14:19:26 +0000</lastBuildDate>
  18. <language>en-US</language>
  19. <sy:updatePeriod>
  20. hourly </sy:updatePeriod>
  21. <sy:updateFrequency>
  22. 1 </sy:updateFrequency>
  23.  
  24. <image>
  25. <url>https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/01/cropped-Liam-New-2.jpg?fit=32%2C32&#038;ssl=1</url>
  26. <title>Liam Cleary [MVP Alumni and MCT]</title>
  27. <link>https://helloitsliam.com</link>
  28. <width>32</width>
  29. <height>32</height>
  30. </image>
  31. <site xmlns="com-wordpress:feed-additions:1">197682877</site> <item>
  32. <title>Attacks in the Middle (AitM)</title>
  33. <link>https://helloitsliam.com/2024/03/28/attacks-in-the-middle-aitm/</link>
  34. <comments>https://helloitsliam.com/2024/03/28/attacks-in-the-middle-aitm/#respond</comments>
  35. <dc:creator><![CDATA[helloitsliam]]></dc:creator>
  36. <pubDate>Thu, 28 Mar 2024 14:19:06 +0000</pubDate>
  37. <category><![CDATA[Microsoft 365 Defender]]></category>
  38. <category><![CDATA[Multi-Factor]]></category>
  39. <category><![CDATA[Security]]></category>
  40. <category><![CDATA[Microsoft]]></category>
  41. <category><![CDATA[Microsoft 365]]></category>
  42. <guid isPermaLink="false">https://helloitsliam.com/?p=42476</guid>
  43.  
  44. <description><![CDATA[Bypassing Multi-Factor Authentication (MFA) Using Attacks in the Middle (AitM) As more organizations and individuals rely on Multi-Factor Authentication (MFA) to secure their digital assets, a new threat called Attacks in the Middle (AitM) has emerged. These attacks aim to bypass Multi-Factor Authentication (MFA) defenses, designed to add extra layers of security beyond the traditional [&#8230;]]]></description>
  45. <content:encoded><![CDATA[
  46. <h1 class="wp-block-heading">Bypassing Multi-Factor Authentication (MFA) Using Attacks in the Middle (AitM)</h1>
  47.  
  48.  
  49.  
  50. <p>As more organizations and individuals rely on Multi-Factor Authentication (MFA) to secure their digital assets, a new threat called Attacks in the Middle (AitM) has emerged. These attacks aim to bypass Multi-Factor Authentication (MFA) defenses, designed to add extra layers of security beyond the traditional username and password. Although Multi-Factor Authentication (MFA) is considered a cornerstone of modern cybersecurity practices, the increasing sophistication of Attacks in the Middle (AitM) shows that even these enhanced measures could be better.</p>
  51.  
  52.  
  53.  
  54. <p></p>
  55.  
  56.  
  57.  
  58. <h2 class="wp-block-heading">Attacks in the Middle (AitM) Challenge to MFA</h2>
  59.  
  60.  
  61.  
  62. <p>Multi-factor authentication (MFA) security relies on multiple independent authentication factors, such as something you know, have, or are. This multi-layered approach ensures that overall security remains intact if one factor is compromised. However, attacks in the middle (AitM) pose a unique challenge to multi-factor authentication (MFA) because they exploit real-time transactions or communication processes instead of trying to break through each security layer independently.&nbsp;</p>
  63.  
  64.  
  65.  
  66. <p>During an Attacks in the Middle (AitM) attack, an attacker can intercept a one-time password (OTP) sent via SMS or generated by an authenticator app and use it in real-time to gain unauthorized access. Similarly, if an attacker manipulates a user into authenticating a session through a phishing site, they can relay or reuse these credentials to bypass MFA. It demonstrates Attacks in the Middle (AitM) ability to circumvent multi-factor authentication (MFA). It highlights their capacity to exploit the human factor, which remains one of the weakest links in cybersecurity.</p>
  67.  
  68.  
  69.  
  70. <p></p>
  71.  
  72.  
  73.  
  74. <h2 class="wp-block-heading">Implications</h2>
  75.  
  76.  
  77.  
  78. <p>Attacks that can bypass Multi-Factor Authentication (MFA) have significant implications for both individuals and organizations. For individuals, this means that even with MFA in place, personal data, including financial information and sensitive personal records, could still be accessed. It poses a real threat to privacy and security. For organizations, the stakes are even higher. Unauthorized access to their systems or data could lead to significant financial losses, breaches, and damage to their reputation. Many industries require MFA to access certain types of data or systems. If attackers can bypass these controls, organizations could fall short of legal and regulatory requirements unwittingly. It could result in potential fines, legal action, and cybersecurity risks.</p>
  79.  
  80.  
  81.  
  82. <p></p>
  83.  
  84.  
  85.  
  86. <h2 class="wp-block-heading">Need for a Comprehensive Security Strategy</h2>
  87.  
  88.  
  89.  
  90. <p>The rise of Attacks in the Middle (AitM) has shown that Multi-Factor Authentication (MFA) is insufficient to ensure complete protection against cyberattacks. Organizations and individuals must implement additional security measures such as secure connection protocols, behavioral analytics, and phishing awareness training to create a comprehensive security strategy. These measures mitigate the risks of AitM attacks. It&#8217;s crucial to evolve Multi-Factor Authentication (MFA) technologies and techniques to stay ahead of attackers. Some examples are exploring MFA methods that are less susceptible to interception and replay, such as biometrics authenticated directly within a secure application environment or using encrypted communication channels that can&#8217;t be easily intercepted or manipulated by attackers.</p>
  91.  
  92.  
  93.  
  94. <p>While Multi-Factor Authentication (MFA) is an essential cybersecurity defense component, Attacks in the Middle (AitM) show that no security measure is foolproof. The fight against cyber threats requires constant vigilance, innovation, and a holistic approach to security that anticipates and mitigates the full spectrum of potential vulnerabilities.</p>
  95.  
  96.  
  97.  
  98. <p></p>
  99.  
  100.  
  101.  
  102. <h1 class="wp-block-heading">Microsoft 365: A Prime Target for Attacks in the Middle (AitM)</h1>
  103.  
  104.  
  105.  
  106. <p>Microsoft 365 is widely used in various industries, which makes it an attractive target for cybercriminals, especially those carrying out Attacks in the Middle (AitM). Attacks in the Middle (AitM) exploit the platform&#8217;s security infrastructure vulnerabilities and compromise sensitive information, such as emails, documents, and other systems accessed via single sign-on (SSO) configurations.</p>
  107.  
  108.  
  109.  
  110. <p>Microsoft 365&#8217;s complex configuration settings can lead to security oversights, misconfigured permissions, insufficient security policies, or neglected security updates, creating vulnerabilities that AitM attacks can exploit. Additionally, the high volume of data and communication flowing through the platform can make it difficult for traditional security monitoring tools to detect anomalies in real-time, allowing Attacks in the Middle (AitM) attackers to carry out their attacks undetected.</p>
  111.  
  112.  
  113.  
  114. <p>AitM attacks against Microsoft 365 can exploit many vulnerabilities, including human factors such as phishing susceptibility and technical loopholes such as the interception of authentication tokens, phishing campaigns aimed at gaining Office 365 credentials, and the exploitation of legacy protocols.</p>
  115.  
  116.  
  117.  
  118. <p>An Attacks in the Middle (AitM) attack on a user&#8217;s Microsoft 365 account can have severe consequences. Attackers can access confidential information, including emails, documents, contacts, and calendar information, and use it for further attacks, identity theft, financial fraud, or espionage. Furthermore, the breach of one account can be a foothold for compromising entire corporate networks, especially if the account has administrative privileges.</p>
  119.  
  120.  
  121.  
  122. <p>Organizations must adopt a multi-faceted approach to safeguard against Attacks in the Middle (AitM) targeting Microsoft 365. This approach should include regularly educating users to recognize phishing attempts and other social engineering tactics, implementing advanced threat protection solutions that offer real-time analysis of email attachments and links along with anomaly detection capabilities, securing Microsoft 365 configurations, turning off legacy protocols where possible, applying security updates promptly, and adopting a zero-trust security model that treats every access request as if it originates from an untrusted network, regardless of the user&#8217;s location or device.</p>
  123.  
  124.  
  125.  
  126. <p>While Microsoft 365 is a powerful business platform, its popularity and centrality make it a prime target for Attacks in the Middle (AitM). Understanding such attacks&#8217; vulnerabilities and potential impacts is crucial in developing a robust defense strategy that safeguards sensitive data and maintains trust in this essential platform.</p>
  127.  
  128.  
  129.  
  130. <p></p>
  131.  
  132.  
  133.  
  134. <h1 class="wp-block-heading">Recognizing Attacks in the Middle (AitM) on Microsoft 365</h1>
  135.  
  136.  
  137.  
  138. <p>Understanding the user experience during an attack in the middle (AitM) against Microsoft 365 is crucial to promptly identifying and mitigating these attacks. Users are often the first line of defense and recognizing the signs of an Attack in the Middle (AitM) can prevent significant data breaches. Understanding the user experience during an Attack in the Middle (AitM) against Microsoft 365 can be pivotal in identifying and mitigating these attacks promptly. Users are often the first line of defense; recognizing the signs of an AitM attack can prevent significant data breaches. This section will outline the flow of events a user might expect when targeted by an Attack in the Middle (AitM) on Microsoft 365, along with key indicators that something is amiss.</p>
  139.  
  140.  
  141.  
  142. <p></p>
  143.  
  144.  
  145.  
  146. <h2 class="wp-block-heading">Initial Contact</h2>
  147.  
  148.  
  149.  
  150. <p>An Attack in the Middle (AitM) commonly starts with a phishing attempt. The user might receive an email, message, or even a fake notification urging them to log into their Microsoft 365 account. These messages can be highly sophisticated, often mimicking official Microsoft communications, with compelling calls to action. For instance, the message may ask users to verify their account details, respond to a supposed security alert, or view an important document.</p>
  151.  
  152.  
  153.  
  154. <p></p>
  155.  
  156.  
  157.  
  158. <h2 class="wp-block-heading">Login Attempt</h2>
  159.  
  160.  
  161.  
  162. <p>If the user clicks on the link in the phishing message, they get redirected to a fake Microsoft 365 login page that looks similar to the real one. The user may then enter their login details, thinking they are safely accessing their Microsoft 365 account.</p>
  163.  
  164.  
  165.  
  166. <p></p>
  167.  
  168.  
  169.  
  170. <h2 class="wp-block-heading">Interception and Unauthorized Access</h2>
  171.  
  172.  
  173.  
  174. <p>The attacker captures the user&#8217;s credentials or session tokens in real-time without the user&#8217;s knowledge. With this information, the attacker can bypass Multi-Factor Authentication (MFA) by either using the credentials before the session token expires or manipulating the authentication process to gain access to the user&#8217;s Microsoft 365 account. This means that the attacker can gain unauthorized access to the account, putting the user&#8217;s sensitive information at risk.</p>
  175.  
  176.  
  177.  
  178. <p></p>
  179.  
  180.  
  181.  
  182. <h2 class="wp-block-heading">Signs of Compromise</h2>
  183.  
  184.  
  185.  
  186. <p>Several indicators may signal to users that an Attack in the Middle (AitM) has compromised their Microsoft 365 account:</p>
  187.  
  188.  
  189.  
  190. <ul>
  191. <li><strong>Unexpected Activity Alerts</strong>: Users may receive notifications from Microsoft about unusual sign-in activities or access attempts from unfamiliar locations.</li>
  192.  
  193.  
  194.  
  195. <li><strong>Inability to Access Accounts</strong>: An immediate sign of compromise is when users find themselves locked out of their Microsoft 365 accounts due to password changes, they didn&#8217;t initiate.</li>
  196.  
  197.  
  198.  
  199. <li><strong>Suspicious Outbox Items</strong>: Finding emails or calendar invites sent by users they did not create can indicate that an attacker has gained control of their account.</li>
  200.  
  201.  
  202.  
  203. <li><strong>Altered Account Settings or Permissions</strong>: Unexplained changes to account settings, permissions, or forwarded emails might suggest unauthorized access.</li>
  204.  
  205.  
  206.  
  207. <li><strong>Performance Issues</strong>: An unexpected degradation in the performance of Microsoft 365 applications might indicate that malicious processes are running in the background.</li>
  208. </ul>
  209.  
  210.  
  211.  
  212. <p></p>
  213.  
  214.  
  215.  
  216. <h2 class="wp-block-heading">Flow of an Attack in the Middle (AitM)</h2>
  217.  
  218.  
  219.  
  220. <ul>
  221. <li><strong>Phishing Initiation: </strong>The user receives a deceitful communication leading to a fraudulent login page.</li>
  222.  
  223.  
  224.  
  225. <li><strong>Credential Submission:</strong> Believing the page to be genuine, the user enters their login details.</li>
  226.  
  227.  
  228.  
  229. <li><strong>Interception:&nbsp;</strong>The attacker captures these credentials in real time and can use them instantly to access the user&#8217;s account.</li>
  230.  
  231.  
  232.  
  233. <li><strong>Exploitation:</strong>&nbsp;The attacker exploits the access for malevolent activities, such as stealing data, sending phishing emails from the compromised account, or taking over other accounts.</li>
  234.  
  235.  
  236.  
  237. <li><strong>Detection and Response:&nbsp;</strong>The user or their organization&#8217;s IT department detects indications of compromise and initiates response procedures, such as resetting passwords, reviewing account activity, and implementing extra security measures.</li>
  238. </ul>
  239.  
  240.  
  241.  
  242. <p></p>
  243.  
  244.  
  245.  
  246. <h1 class="wp-block-heading">Protecting Against AitM Attacks</h1>
  247.  
  248.  
  249.  
  250. <p>Attacks in the Middle (AitM) directed at Microsoft 365 can be a severe threat. However, several strategies and best practices can reduce the risk. These measures range from increasing user awareness to implementing advanced security technologies, creating a comprehensive defense against Attacks in the Middle (AitM).</p>
  251.  
  252.  
  253.  
  254. <p></p>
  255.  
  256.  
  257.  
  258. <h2 class="wp-block-heading"><strong>Enhanced User Education</strong></h2>
  259.  
  260.  
  261.  
  262. <p>Conduct training sessions regularly to help users identify phishing attempts and suspicious links. Real-world examples and simulated phishing exercises can improve users&#8217; ability to recognize and respond appropriately to malicious communications. Develop ongoing programs that keep security at the forefront of users&#8217; minds, including the risks of AitM attacks and the importance of reporting suspicious activity.</p>
  263.  
  264.  
  265.  
  266. <p></p>
  267.  
  268.  
  269.  
  270. <h2 class="wp-block-heading"><strong>Advanced Security Solutions</strong></h2>
  271.  
  272.  
  273.  
  274. <p>Implement and enforce MFA wherever possible, which adds a critical security layer. Encourage using biometric verification or hardware security keys, which are less susceptible to interception. Deploy EDR tools that monitor for signs of compromise on user devices, including malware that could facilitate Attacks in the Middle (AitM). Use advanced email security solutions that scan for and filter out phishing emails before they reach users, reducing the chance of initial contact with attackers. Ensure you regularly update all systems, including those unrelated to Microsoft 365, to close security vulnerabilities attackers could exploit.</p>
  275.  
  276.  
  277.  
  278. <p></p>
  279.  
  280.  
  281.  
  282. <h2 class="wp-block-heading"><strong>Secure Configuration and Network Defenses</strong></h2>
  283.  
  284.  
  285.  
  286. <p>Implement policies that restrict access to Microsoft 365 resources based on user location, device compliance, and risk level, minimizing the chances of unauthorized access. Educate users on the dangers of public Wi-Fi and provide secure alternatives, such as Virtual Private Networks (VPNs), for accessing corporate resources remotely. Utilize Security Information and Event Management (SIEM) systems to aggregate and analyze logs from various sources, detecting unusual patterns that may indicate an AitM attack is in progress.</p>
  287.  
  288.  
  289.  
  290. <p></p>
  291.  
  292.  
  293.  
  294. <h2 class="wp-block-heading"><strong>Incident Response Planning</strong></h2>
  295.  
  296.  
  297.  
  298. <p>Establish a dedicated team responsible for responding to cybersecurity incidents, including Attacks in the Middle (AitM). This team should have clear procedures for isolating affected systems, conducting forensic analysis, and restoring services. Create easy-to-use channels for users to promptly report suspected phishing attempts or other security concerns.</p>
  299.  
  300.  
  301.  
  302. <p></p>
  303.  
  304.  
  305.  
  306. <h2 class="wp-block-heading"><strong>Regular Security Assessments:</strong></h2>
  307.  
  308.  
  309.  
  310. <p>Conduct regular assessments to identify and mitigate vulnerabilities within your Microsoft 365 setup and broader network infrastructure. Engage with external cybersecurity experts to audit your organization&#8217;s security posture, providing an objective assessment of defenses and potential weaknesses.</p>
  311.  
  312.  
  313.  
  314. <p>Protecting against Attacks in the Middle (AitM) requires a multi-layered strategy addressing technical vulnerabilities and human factors. </p>
  315.  
  316.  
  317.  
  318. <p></p>
  319.  
  320.  
  321.  
  322. <h1 class="wp-block-heading">Conclusion</h1>
  323.  
  324.  
  325.  
  326. <p>Attacks in the Middle (AitM) highlight the ongoing competition between cyber defenders and attackers. With organizations&#8217; increasing dependence on cloud services such as Microsoft 365 for critical operations, the need to safeguard these digital environments has become more vital than ever before. Attacks in the Middle (AitM) attacks pose a significant challenge as they can bypass traditional security measures like Multi-Factor Authentication (MFA). Therefore, a proactive and comprehensive approach to cybersecurity is required to protect against such attacks.</p>
  327.  
  328.  
  329.  
  330. <p>The key to defending against Attacks in the Middle (AitM) is not just deploying the latest technologies but also promoting a culture of security awareness throughout the organization. Building a resilient defense strategy involves the following:</p>
  331.  
  332.  
  333.  
  334. <ul>
  335. <li>User education.</li>
  336.  
  337.  
  338.  
  339. <li>Establish robust security policies.</li>
  340.  
  341.  
  342.  
  343. <li>Implement advanced threat detection systems.</li>
  344.  
  345.  
  346.  
  347. <li>Planning incident responses.</li>
  348. </ul>
  349.  
  350.  
  351.  
  352. <p>By implementing these practices, organizations can protect against Attacks in the Middle (AitM) and improve their overall security posture against a broad range of cyber threats.</p>
  353.  
  354.  
  355.  
  356. <p>While Attacks in the Middle (AitM) presents a formidable challenge, they allow organizations to review and enhance their cybersecurity practices. By understanding the nature of these attacks, recognizing the signs of compromise, and implementing a multi-layered defense strategy, organizations can safeguard their Microsoft 365 environments and ensure the security and integrity of their digital operations. The journey towards cybersecurity is continuous, requiring commitment, collaboration, and a proactive approach to stay ahead of threats in the digital age. The evolving threat landscape, marked by sophisticated Attacks in the Middle (AitM), underscores the continuous arms race between cyber defenders and attackers. Organizations increasingly depend on cloud services like Microsoft 365 for critical operations, so the stakes for safeguarding these digital environments have never been higher. Attacks in the Middle (AitM) represent a significant challenge that demands a proactive and comprehensive approach to cybersecurity.</p>
  357. ]]></content:encoded>
  358. <wfw:commentRss>https://helloitsliam.com/2024/03/28/attacks-in-the-middle-aitm/feed/</wfw:commentRss>
  359. <slash:comments>0</slash:comments>
  360. <post-id xmlns="com-wordpress:feed-additions:1">42476</post-id> </item>
  361. <item>
  362. <title>I wrote a book!!</title>
  363. <link>https://helloitsliam.com/2024/02/22/i-wrote-a-book/</link>
  364. <comments>https://helloitsliam.com/2024/02/22/i-wrote-a-book/#comments</comments>
  365. <dc:creator><![CDATA[helloitsliam]]></dc:creator>
  366. <pubDate>Thu, 22 Feb 2024 15:15:08 +0000</pubDate>
  367. <category><![CDATA[Book]]></category>
  368. <category><![CDATA[Personal Project]]></category>
  369. <category><![CDATA[PowerShell]]></category>
  370. <guid isPermaLink="false">https://helloitsliam.com/?p=42333</guid>
  371.  
  372. <description><![CDATA[I have had several offers to write a computer book throughout my career. However, even though it sounded cool to do it, I had always said no due to the amount of effort and the required commitment. I have also spoken to some friends who have done it, and their experience could have been better.  [&#8230;]]]></description>
  373. <content:encoded><![CDATA[
  374. <p>I have had several offers to write a computer book throughout my career. However, even though it sounded cool to do it, I had always said no due to the amount of effort and the required commitment. I have also spoken to some friends who have done it, and their experience could have been better. </p>
  375.  
  376.  
  377.  
  378. <p>Go back to the start of 2023, and for some reason, I said yes and wrote a computer book. I am excited to announce that I am officially a book author for a book on PowerShell. I know, don&#8217;t all get excited. Some of you may not know what that is; some will understand it and feel the same way.</p>
  379.  
  380.  
  381.  
  382. <figure class="wp-block-image size-large is-resized"><img fetchpriority="high" decoding="async" width="616" height="775" data-attachment-id="42340" data-permalink="https://helloitsliam.com/2024/02/22/i-wrote-a-book/971-front/" data-orig-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/971-front.jpg?fit=2326%2C2926&amp;ssl=1" data-orig-size="2326,2926" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;User&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1707324233&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="971-front" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/971-front.jpg?fit=238%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/971-front.jpg?fit=616%2C775&amp;ssl=1" src="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/971-front.jpg?resize=616%2C775&#038;ssl=1" alt="" class="wp-image-42340" style="width:444px;height:auto" srcset="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/971-front.jpg?resize=814%2C1024&amp;ssl=1 814w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/971-front.jpg?resize=238%2C300&amp;ssl=1 238w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/971-front.jpg?resize=768%2C966&amp;ssl=1 768w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/971-front.jpg?resize=1221%2C1536&amp;ssl=1 1221w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/971-front.jpg?resize=1628%2C2048&amp;ssl=1 1628w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/971-front.jpg?resize=1200%2C1510&amp;ssl=1 1200w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/971-front.jpg?resize=816%2C1026&amp;ssl=1 816w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/971-front.jpg?resize=64%2C80&amp;ssl=1 64w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/971-front.jpg?w=1848&amp;ssl=1 1848w" sizes="(max-width: 616px) 100vw, 616px" data-recalc-dims="1" /></figure>
  383.  
  384.  
  385.  
  386. <p>Anyway, after about ten months of hard work around everyday life, the book is available from the publisher&#8217;s site and Amazon. Please take a look, and if you feel like it, buy a copy and learn more about PowerShell.</p>
  387.  
  388.  
  389.  
  390. <p><strong>BPB Online:</strong> <a href="https://bit.ly/PWSH7DAYBPB" target="_blank" rel="noreferrer noopener">https://bit.ly/PWSH7DAYBPB</a></p>
  391.  
  392.  
  393.  
  394. <figure class="wp-block-image size-full is-resized"><img decoding="async" width="616" height="616" data-attachment-id="42336" data-permalink="https://helloitsliam.com/2024/02/22/i-wrote-a-book/bit-ly_pwsh7daybpb/" data-orig-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYBPB.png?fit=656%2C656&amp;ssl=1" data-orig-size="656,656" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="bit.ly_PWSH7DAYBPB" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYBPB.png?fit=300%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYBPB.png?fit=616%2C616&amp;ssl=1" src="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYBPB.png?resize=616%2C616&#038;ssl=1" alt="" class="wp-image-42336" style="width:334px;height:auto" srcset="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYBPB.png?w=656&amp;ssl=1 656w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYBPB.png?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYBPB.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYBPB.png?resize=600%2C600&amp;ssl=1 600w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYBPB.png?resize=400%2C400&amp;ssl=1 400w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYBPB.png?resize=200%2C200&amp;ssl=1 200w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYBPB.png?resize=88%2C88&amp;ssl=1 88w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYBPB.png?resize=80%2C80&amp;ssl=1 80w" sizes="(max-width: 616px) 100vw, 616px" data-recalc-dims="1" /></figure>
  395.  
  396.  
  397.  
  398. <p><strong>Amazon:</strong> <a href="https://bit.ly/PWSH7DAYSAMAZON" target="_blank" rel="noreferrer noopener">https://bit.ly/PWSH7DAYSAMAZON</a></p>
  399.  
  400.  
  401.  
  402. <figure class="wp-block-image size-full is-resized"><img decoding="async" width="616" height="616" data-attachment-id="42338" data-permalink="https://helloitsliam.com/2024/02/22/i-wrote-a-book/bit-ly_pwsh7daysamazon/" data-orig-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYSAMAZON.png?fit=720%2C720&amp;ssl=1" data-orig-size="720,720" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="bit.ly_PWSH7DAYSAMAZON" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYSAMAZON.png?fit=300%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYSAMAZON.png?fit=616%2C616&amp;ssl=1" src="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYSAMAZON.png?resize=616%2C616&#038;ssl=1" alt="" class="wp-image-42338" style="width:334px" srcset="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYSAMAZON.png?w=720&amp;ssl=1 720w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYSAMAZON.png?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYSAMAZON.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYSAMAZON.png?resize=600%2C600&amp;ssl=1 600w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYSAMAZON.png?resize=400%2C400&amp;ssl=1 400w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYSAMAZON.png?resize=200%2C200&amp;ssl=1 200w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYSAMAZON.png?resize=88%2C88&amp;ssl=1 88w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2024/02/bit.ly_PWSH7DAYSAMAZON.png?resize=80%2C80&amp;ssl=1 80w" sizes="(max-width: 616px) 100vw, 616px" data-recalc-dims="1" /></figure>
  403.  
  404.  
  405.  
  406. <p>I am grateful for the support of my family, especially my wife, as I spend evenings and weekends staring into my laptop and typing away. I want to thank BPB Online for the opportunity to write the book and all those who helped along the way.&nbsp;</p>
  407. ]]></content:encoded>
  408. <wfw:commentRss>https://helloitsliam.com/2024/02/22/i-wrote-a-book/feed/</wfw:commentRss>
  409. <slash:comments>2</slash:comments>
  410. <post-id xmlns="com-wordpress:feed-additions:1">42333</post-id> </item>
  411. <item>
  412. <title>Merry Christmas and a Happy New Year</title>
  413. <link>https://helloitsliam.com/2023/12/24/merry-christmas-and-a-happy-new-year/</link>
  414. <comments>https://helloitsliam.com/2023/12/24/merry-christmas-and-a-happy-new-year/#respond</comments>
  415. <dc:creator><![CDATA[helloitsliam]]></dc:creator>
  416. <pubDate>Sun, 24 Dec 2023 19:00:00 +0000</pubDate>
  417. <category><![CDATA[General]]></category>
  418. <category><![CDATA[christmas]]></category>
  419. <category><![CDATA[New Year]]></category>
  420. <guid isPermaLink="false">https://helloitsliam.com/?p=42123</guid>
  421.  
  422. <description><![CDATA[Hello, &#160; &#160; &#160;&#160;As the snowflakes gently fall (well, I hope they do) and the Christmas lights twinkle with festive cheer, I reflect on the year that&#8217;s passed. It&#8217;s been a journey filled with challenges and triumphs that shaped the year. As we come together with our loved ones during this holiday season, I want [&#8230;]]]></description>
  423. <content:encoded><![CDATA[
  424. <p>Hello,</p>
  425.  
  426.  
  427.  
  428. <p>&nbsp; &nbsp; &nbsp;&nbsp;As the snowflakes gently fall (well, I hope they do) and the Christmas lights twinkle with festive cheer, I reflect on the year that&#8217;s passed. It&#8217;s been a journey filled with challenges and triumphs that shaped the year.</p>
  429.  
  430.  
  431.  
  432. <p>As we come together with our loved ones during this holiday season, I want to express my heartfelt gratitude to all of you. Whether you have been with me from the start or are someone who I am just beginning to get to know, I appreciate you.</p>
  433.  
  434.  
  435.  
  436. <h1 class="wp-block-heading has-text-align-center"><strong>Merry Christmas!</strong> </h1>
  437.  
  438.  
  439.  
  440. <p>May your homes be filled with laughter, love, and the joyous spirit of the season. Let the jingle bells ring, and the Christmas carols sing as we wrap up this year with hearts full of hope and excitement.</p>
  441.  
  442.  
  443.  
  444. <p>And as we bid farewell to this year and welcome the new one, I want to wish you all a&nbsp;<strong>Happy New Year!</strong>&nbsp;May&nbsp;<strong>2024</strong>&nbsp;be a year of new beginnings, blessings, and endless opportunities. Let&#8217;s embrace it with open hearts and an adventurous spirit, ready to write new stories and create unforgettable memories. Remember, the magic of this time of year is not just in the gifts we give but in the love we share and the joy we bring to others. So, let&#8217;s spread kindness, share smiles, and make this holiday season one to remember.</p>
  445.  
  446.  
  447.  
  448. <p>Thank you for being a part of this wonderful journey with me. Here&#8217;s to a Merry Christmas and a Happy New Year!</p>
  449.  
  450.  
  451.  
  452. <p class="has-text-align-center">Warm wishes,</p>
  453.  
  454.  
  455.  
  456. <p class="has-text-align-center">Liam</p>
  457. ]]></content:encoded>
  458. <wfw:commentRss>https://helloitsliam.com/2023/12/24/merry-christmas-and-a-happy-new-year/feed/</wfw:commentRss>
  459. <slash:comments>0</slash:comments>
  460. <post-id xmlns="com-wordpress:feed-additions:1">42123</post-id> </item>
  461. <item>
  462. <title>Playlist: High-Octane Fast Beats</title>
  463. <link>https://helloitsliam.com/2023/12/21/playlist-high-octane-fast-beats/</link>
  464. <comments>https://helloitsliam.com/2023/12/21/playlist-high-octane-fast-beats/#comments</comments>
  465. <dc:creator><![CDATA[helloitsliam]]></dc:creator>
  466. <pubDate>Thu, 21 Dec 2023 15:08:38 +0000</pubDate>
  467. <category><![CDATA[General]]></category>
  468. <category><![CDATA[Personal]]></category>
  469. <category><![CDATA[music]]></category>
  470. <category><![CDATA[Playlist]]></category>
  471. <category><![CDATA[techno]]></category>
  472. <guid isPermaLink="false">https://helloitsliam.com/?p=42108</guid>
  473.  
  474. <description><![CDATA[Use this playlist to boost productivity during work sessions or energize your running routines. Every beat infuses adrenaline, and each rhythm brings a powerful surge to keep you perfectly synchronized and in the zone. Whether pushing through a challenging project or hitting the pavement, these tracks match your relentless tempo and elevate your spirit. Embrace [&#8230;]]]></description>
  475. <content:encoded><![CDATA[
  476. <p>Use this playlist to boost productivity during work sessions or energize your running routines. Every beat infuses adrenaline, and each rhythm brings a powerful surge to keep you perfectly synchronized and in the zone. Whether pushing through a challenging project or hitting the pavement, these tracks match your relentless tempo and elevate your spirit. Embrace the rush and let the speed take you to new heights!</p>
  477.  
  478.  
  479.  
  480. <ul>
  481. <li>JUNGLE IN MY HEART (Frenchcore) &#8211; deity, EXODIA, and eternityz</li>
  482.  
  483.  
  484.  
  485. <li>Voices &#8211; Aeriu Ika</li>
  486.  
  487.  
  488.  
  489. <li>How to Love &#8211; Flerian</li>
  490.  
  491.  
  492.  
  493. <li>Hardcore Riot &#8211; Goetia</li>
  494.  
  495.  
  496.  
  497. <li>Trezvo (Frenchcore) &#8211; damnenby</li>
  498.  
  499.  
  500.  
  501. <li>Nervous &#8211; Psiko, and The Sequel</li>
  502.  
  503.  
  504.  
  505. <li>L9 BOOST M4CH1N3 &#8211; rahasya</li>
  506.  
  507.  
  508.  
  509. <li>FOLTERHAMMER (220bpm) &#8211; Unartekk</li>
  510.  
  511.  
  512.  
  513. <li>Built For This &#8211; Detest</li>
  514.  
  515.  
  516.  
  517. <li>Fear &#8211; T-Energize</li>
  518.  
  519.  
  520.  
  521. <li>Frenchcore&#8217;s Creed &#8211; DJ Unscarred</li>
  522.  
  523.  
  524.  
  525. <li>Madhouse (FREQ-DLT Remix) &#8211; AI Storm and FREQ-DLT</li>
  526.  
  527.  
  528.  
  529. <li>She Knows It &#8211; molly</li>
  530.  
  531.  
  532.  
  533. <li>Full Control (Extended Mix) &#8211; Lab-E, and Deadlock</li>
  534. </ul>
  535.  
  536.  
  537.  
  538. <p>As usual, here is the <strong>Spotify</strong> playlist:</p>
  539.  
  540.  
  541.  
  542. <figure class="wp-block-image size-full"><a href="https://open.spotify.com/playlist/4LhxA1ebkIGAE68c2bXEri?si=776bd214fce14d9d"><img loading="lazy" decoding="async" width="240" height="126" data-attachment-id="28594" data-permalink="https://helloitsliam.com/2018/04/01/music-playlist-april-2018/031718_1540_musicplayli1-png/" data-orig-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2021/09/73c21-031718_1540_musicplayli1.png?fit=240%2C126&amp;ssl=1" data-orig-size="240,126" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="031718_1540_MusicPlayli1.png" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2021/09/73c21-031718_1540_musicplayli1.png?fit=240%2C126&amp;ssl=1" data-large-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2021/09/73c21-031718_1540_musicplayli1.png?fit=240%2C126&amp;ssl=1" src="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2021/09/73c21-031718_1540_musicplayli1.png?resize=240%2C126&#038;ssl=1" alt="" class="wp-image-28594" data-recalc-dims="1"/></a></figure>
  543. ]]></content:encoded>
  544. <wfw:commentRss>https://helloitsliam.com/2023/12/21/playlist-high-octane-fast-beats/feed/</wfw:commentRss>
  545. <slash:comments>1</slash:comments>
  546. <post-id xmlns="com-wordpress:feed-additions:1">42108</post-id> </item>
  547. <item>
  548. <title>Connecting to Azure using Azure CLI with an App Registration and a Certificate</title>
  549. <link>https://helloitsliam.com/2023/12/12/connecting-to-azure-using-azure-cli-with-an-app-registration-and-a-certificate/</link>
  550. <comments>https://helloitsliam.com/2023/12/12/connecting-to-azure-using-azure-cli-with-an-app-registration-and-a-certificate/#comments</comments>
  551. <dc:creator><![CDATA[helloitsliam]]></dc:creator>
  552. <pubDate>Wed, 13 Dec 2023 02:39:43 +0000</pubDate>
  553. <category><![CDATA[Azure Active Directory]]></category>
  554. <category><![CDATA[Azure CLI]]></category>
  555. <category><![CDATA[Entra ID]]></category>
  556. <category><![CDATA[Azure]]></category>
  557. <guid isPermaLink="false">https://helloitsliam.com/?p=42065</guid>
  558.  
  559. <description><![CDATA[Azure CLI (Command-Line Interface) is a powerful tool for managing Azure services. Although people commonly use interactive login methods with Azure CLI, scenarios like continuous integration and deployment in DevOps pipelines require automation or non-interactive processes. It is where Azure App Registrations and Certificates come into play, providing a secure and automated way to connect [&#8230;]]]></description>
  560. <content:encoded><![CDATA[
  561. <p>Azure CLI (Command-Line Interface) is a powerful tool for managing Azure services. Although people commonly use interactive login methods with Azure CLI, scenarios like continuous integration and deployment in DevOps pipelines require automation or non-interactive processes. It is where Azure App Registrations and Certificates come into play, providing a secure and automated way to connect to Azure.</p>
  562.  
  563.  
  564.  
  565. <p><strong>NOTE: </strong>The assumption is that you have already installed Azure CLI. If not, review the documentation here: <a href="https://learn.microsoft.com/en-us/cli/azure/install-azure-cli">https://learn.microsoft.com/en-us/cli/azure/install-azure-cli</a></p>
  566.  
  567.  
  568.  
  569. <p></p>
  570.  
  571.  
  572.  
  573. <h2 class="wp-block-heading">The Role of App Registration and Certificates</h2>
  574.  
  575.  
  576.  
  577. <p>An<strong>&nbsp;App Registration</strong>&nbsp;in Azure Active Directory (Azure AD) represents the identity of the application or automated tool that needs to interact with Azure resources. It is the foundation for enabling authentication and defining permissions for automated processes.</p>
  578.  
  579.  
  580.  
  581. <p><strong>Certificates</strong>, on the other hand, are used for secure authentication. Combined with Azure App Registration, they provide a robust method for script-based login to Azure CLI without the need for interactive credential inputs. This method enhances security by avoiding storing sensitive credentials in scripts or automation servers.</p>
  582.  
  583.  
  584.  
  585. <p></p>
  586.  
  587.  
  588.  
  589. <h2 class="wp-block-heading">Step-by-Step Guide to Using Azure CLI with App Registration and Certificate</h2>
  590.  
  591.  
  592.  
  593. <p>The&nbsp;<strong>first</strong>&nbsp;step involves setting up an&nbsp;<strong>App Registration</strong>&nbsp;in&nbsp;<strong>Microsoft Entra ID (Azure Active Directory)</strong>. It acts as the identity for your automated process or application.</p>
  594.  
  595.  
  596.  
  597. <ul>
  598. <li><strong>Access Azure Portal</strong>: Log in to the Azure Portal and navigate to Microsoft Entra ID.</li>
  599.  
  600.  
  601.  
  602. <li><strong>Register a New Application</strong>:
  603. <ul>
  604. <li>Go to the&nbsp;<strong>App Registrations</strong>&nbsp;section and select&nbsp;<strong>New Registration</strong>.</li>
  605.  
  606.  
  607.  
  608. <li>Provide a&nbsp;<strong>Name</strong>&nbsp;for your application.</li>
  609.  
  610.  
  611.  
  612. <li>Select the&nbsp;<strong>Supported Account Type</strong>s (single or multi-tenant, based on your requirement).</li>
  613.  
  614.  
  615.  
  616. <li>Specify the&nbsp;<strong>Redirect URI</strong>&nbsp;(optional for CLI purposes).</li>
  617.  
  618.  
  619.  
  620. <li>Click&nbsp;<strong>Register</strong>&nbsp;to create the&nbsp;<strong>App Registration</strong>.</li>
  621. </ul>
  622. </li>
  623. </ul>
  624.  
  625.  
  626.  
  627. <p><strong>Note the Application (Client) ID</strong>: Azure will assign an Application ID (or Client ID) to your App Registration after creation. Record this ID, as you will need it later.</p>
  628.  
  629.  
  630.  
  631. <p>The&nbsp;<strong>next</strong>&nbsp;step is to retrieve and upload a certificate. Certificates are crucial for secure authentication. You can generate a self-signed certificate or use an existing one. You can create a certificate using tools like OpenSSL or PowerShell. Here&#8217;s how you can do it in PowerShell:</p>
  632.  
  633.  
  634. <div class="wp-block-syntaxhighlighter-code "><pre class="brush: powershell; title: ; notranslate">
  635. $cert = New-SelfSignedCertificate `
  636.      -Subject &quot;CN=AzureCLI&quot; `
  637.      -CertStoreLocation &quot;cert:\CurrentUser\My&quot; `
  638.      -KeyExportPolicy Exportable `
  639.      -KeySpec Signature
  640. </pre></div>
  641.  
  642.  
  643. <p>The above command creates a new self-signed certificate and stores it in the personal certificate store of the current user. Now, you need to export the <strong>Certificate</strong> in <strong>PEM</strong> format. You must export the <strong>Certificate</strong> and the <strong>Private Key</strong> separately in the PEM format. PowerShell doesn&#8217;t natively support exporting directly to PEM, but you can use the .NET classes to achieve this.</p>
  644.  
  645.  
  646. <div class="wp-block-syntaxhighlighter-code "><pre class="brush: powershell; title: ; notranslate">
  647. $certPath = &quot;path\to\Cert.cer&quot;
  648. $pemCertPath = &quot;path\to\Cert.pem&quot;
  649.  
  650. Export-Certificate -Cert $cert -FilePath $certPath
  651.  
  652. $certContent = &#x5B;System.IO.File]::ReadAllBytes($certPath)
  653. $pemCertContent = &#x5B;System.Convert]::ToBase64String($certContent, &#x5B;System.Base64FormattingOptions]::InsertLineBreaks)
  654. $pemCertOutput = &quot;-----BEGIN CERTIFICATE-----`n$pemCertContent`n-----END CERTIFICATE-----&quot;
  655. &#x5B;System.IO.File]::WriteAllText($pemCertPath, $pemCertOutput)
  656. </pre></div>
  657.  
  658.  
  659. <p>You&#8217;ll then need <strong>OpenSSL</strong> to convert the private key to PEM format. First, export the private key as a PFX file, then use OpenSSL to convert it to PEM.</p>
  660.  
  661.  
  662. <div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
  663. $pfxPath = &quot;path\to\yourKey.pfx&quot;
  664. $pemKeyPath = &quot;path\to\yourKey.pem&quot;
  665. $pfxPassword = &quot;Password&quot;
  666.  
  667. Export-PfxCertificate `
  668.      -Cert $cert `
  669.      -FilePath $pfxPath `
  670.      -Password (ConvertTo-SecureString
  671. -String $pfxPassword -Force -AsPlainText)
  672.  
  673. openssl pkcs12 -in $pfxPath -out $pemKeyPath -nodes -passin pass:$pfxPassword
  674. </pre></div>
  675.  
  676.  
  677. <p>The folder should now contain these four files:</p>
  678.  
  679.  
  680.  
  681. <figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="288" height="185" data-attachment-id="42076" data-permalink="https://helloitsliam.com/2023/12/12/connecting-to-azure-using-azure-cli-with-an-app-registration-and-a-certificate/2-4/" data-orig-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/2.png?fit=288%2C185&amp;ssl=1" data-orig-size="288,185" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="2" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/2.png?fit=288%2C185&amp;ssl=1" data-large-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/2.png?fit=288%2C185&amp;ssl=1" src="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/2.png?resize=288%2C185&#038;ssl=1" alt="" class="wp-image-42076" srcset="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/2.png?w=288&amp;ssl=1 288w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/2.png?resize=125%2C80&amp;ssl=1 125w" sizes="(max-width: 288px) 100vw, 288px" data-recalc-dims="1" /></figure>
  682.  
  683.  
  684.  
  685. <p>Now, you need to upload the <strong>Certificate</strong> to the <strong>App Registration</strong>. You do this by navigating the <strong>Azure Portal</strong> and entering the <strong>App Registrations</strong> section within <strong>Microsoft Entra ID</strong>. Once there, select the <strong>App Registration</strong> you created and click <strong>Certificates &amp; Secrets</strong>, then under <strong>Certificates</strong>, click on <strong>Upload Certificate</strong> and upload the CER file.</p>
  686.  
  687.  
  688.  
  689. <p>Your <strong>App Registration</strong> needs the necessary permissions (API permissions and role assignments) to perform actions in Azure (if that is what is required). In the <strong>App Registration</strong>, go to <strong>API Permissions</strong> and add the necessary permissions (e.g., Microsoft Graph, Azure Service Management). More<strong> </strong>importantly, you need to assign the correct permissions to the <strong>App Registration</strong> within the Azure Portal so it can access the subscriptions.</p>
  690.  
  691.  
  692.  
  693. <figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="402" height="246" data-attachment-id="42079" data-permalink="https://helloitsliam.com/2023/12/12/connecting-to-azure-using-azure-cli-with-an-app-registration-and-a-certificate/3-4/" data-orig-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/3.png?fit=402%2C246&amp;ssl=1" data-orig-size="402,246" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="3" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/3.png?fit=300%2C184&amp;ssl=1" data-large-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/3.png?fit=402%2C246&amp;ssl=1" src="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/3.png?resize=402%2C246&#038;ssl=1" alt="" class="wp-image-42079" srcset="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/3.png?w=402&amp;ssl=1 402w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/3.png?resize=300%2C184&amp;ssl=1 300w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/3.png?resize=400%2C246&amp;ssl=1 400w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/3.png?resize=131%2C80&amp;ssl=1 131w" sizes="(max-width: 402px) 100vw, 402px" data-recalc-dims="1" /></figure>
  694.  
  695.  
  696.  
  697. <figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="449" height="240" data-attachment-id="42080" data-permalink="https://helloitsliam.com/2023/12/12/connecting-to-azure-using-azure-cli-with-an-app-registration-and-a-certificate/attachment/4/" data-orig-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/4.png?fit=449%2C240&amp;ssl=1" data-orig-size="449,240" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="4" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/4.png?fit=300%2C160&amp;ssl=1" data-large-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/4.png?fit=449%2C240&amp;ssl=1" src="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/4.png?resize=449%2C240&#038;ssl=1" alt="" class="wp-image-42080" srcset="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/4.png?w=449&amp;ssl=1 449w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/4.png?resize=300%2C160&amp;ssl=1 300w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/4.png?resize=150%2C80&amp;ssl=1 150w" sizes="(max-width: 449px) 100vw, 449px" data-recalc-dims="1" /></figure>
  698.  
  699.  
  700.  
  701. <p>If you don&#8217;t assign access, you will get a &#8220;<strong>No subscriptions found for {Tenant ID}.</strong>&#8221; message after you connect.</p>
  702.  
  703.  
  704.  
  705. <p>With the <strong>App Registration</strong> and <strong>Certificate</strong> in place, the next step is to configure <strong>Azure CLI</strong> to authenticate using these components.</p>
  706.  
  707.  
  708.  
  709. <p>To log in using the <strong>Service Principal</strong>, you need to use your command-line interface and execute the following command to log in using the service principal created earlier.&nbsp;</p>
  710.  
  711.  
  712.  
  713. <p>Replace&nbsp;<strong>&lt;appId&gt;</strong>,&nbsp;<strong>&lt;tenantId&gt;</strong>, and&nbsp;<strong>&lt;certificatePath&gt;</strong>&nbsp;with your&nbsp;<strong>Application ID</strong>,&nbsp;<strong>Tenant ID</strong>, and the&nbsp;<strong>path to your PFX certificate file</strong>, respectively.</p>
  714.  
  715.  
  716. <div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
  717. az login \
  718.       --service-principal \
  719.       --username &lt;appId&gt; \
  720.       --tenant &lt;tenantId&gt; \
  721.       --password &lt;certificatePath&gt;
  722. </pre></div>
  723.  
  724.  
  725. <p>In the above code, the&nbsp;<strong>&#8211;username</strong>&nbsp;is your&nbsp;<strong>Application (client) ID</strong>,&nbsp;<strong>&#8211;tenant&nbsp;</strong>is your&nbsp;<strong>Azure AD tenant ID</strong>, and&nbsp;<strong>&#8211;password</strong>&nbsp;is the path to the&nbsp;<strong>PFX file containing your Certificate and its private key</strong>.</p>
  726.  
  727.  
  728.  
  729. <p>After running the login command, you can verify the successful authentication by executing:</p>
  730.  
  731.  
  732. <div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
  733. az account show
  734. </pre></div>
  735.  
  736.  
  737. <figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="463" height="274" data-attachment-id="42082" data-permalink="https://helloitsliam.com/2023/12/12/connecting-to-azure-using-azure-cli-with-an-app-registration-and-a-certificate/5-4/" data-orig-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/5.png?fit=463%2C274&amp;ssl=1" data-orig-size="463,274" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="5" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/5.png?fit=300%2C178&amp;ssl=1" data-large-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/5.png?fit=463%2C274&amp;ssl=1" src="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/5.png?resize=463%2C274&#038;ssl=1" alt="" class="wp-image-42082" srcset="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/5.png?w=463&amp;ssl=1 463w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/5.png?resize=300%2C178&amp;ssl=1 300w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/5.png?resize=135%2C80&amp;ssl=1 135w" sizes="(max-width: 463px) 100vw, 463px" data-recalc-dims="1" /></figure>
  738.  
  739.  
  740.  
  741. <p>The above command displays the currently active subscription and tenant, confirming that the CLI is now operating under the context of the service principal.</p>
  742.  
  743.  
  744.  
  745. <p>Once you have configured Azure CLI for non-interactive authentication, you can easily automate various Azure tasks without manual intervention. With Azure CLI commands, you can write scripts in languages like Bash and PowerShell for resource management, security checks, and service deployment tasks. You can then integrate these scripts into your CI/CD pipelines to automate configuration, deployment, and security assurance tasks.</p>
  746.  
  747.  
  748.  
  749. <p></p>
  750.  
  751.  
  752.  
  753. <h2 class="wp-block-heading">Practical Azure CLI Queries for IT Administrators</h2>
  754.  
  755.  
  756.  
  757. <p>In managing Azure environments, IT administrators frequently need to execute various queries to monitor, manage, and audit resources. Below are four simple yet practical Azure CLI queries commonly used in day-to-day administration tasks:</p>
  758.  
  759.  
  760.  
  761. <p><strong>Listing All Virtual Machines in a Subscription</strong>: This command provides a tabulated list of Virtual Machine names, resource groups, and current power states (e.g., running, stopped). </p>
  762.  
  763.  
  764. <div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
  765. az vm list \
  766.       --show-details \
  767.       --query &quot;&#x5B;].{Name:name, ResourceGroup:resourceGroup, Status:powerState}&quot; \
  768.       -o table
  769. </pre></div>
  770.  
  771.  
  772. <p><strong>Checking the Status of All Network Security Groups (NSGs): </strong>This output helps identify existing NSGs, allowing for a more detailed examination of their specific rules.</p>
  773.  
  774.  
  775. <div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
  776. az network nsg list \
  777.       --query &quot;&#x5B;].{Name:name, ResourceGroup:resourceGroup}&quot; \
  778.       -o table
  779. </pre></div>
  780.  
  781.  
  782. <p><strong>Viewing Storage Account Details: </strong>The following command helps administrators quickly understand the types of storage accounts in use and their access tiers, which is crucial for cost management and performance considerations.</p>
  783.  
  784.  
  785. <div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
  786. az storage account list \
  787.       --query &quot;&#x5B;].{Name:name, Type:sku.name, AccessTier:accessTier}&quot; \
  788.      -o table
  789. </pre></div>
  790.  
  791.  
  792. <p><strong>Auditing Role Assignments: </strong>This query provides a comprehensive view of role assignments, helping administrators monitor access rights and ensure adherence to the principle of least privilege.</p>
  793.  
  794.  
  795. <div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
  796. az role assignment list \
  797.       --query &quot;&#x5B;].{Principal:principalName, Role:roleDefinitionName, Scope:scope}&quot; \
  798.       -o table
  799. </pre></div>
  800.  
  801.  
  802. <p></p>
  803.  
  804.  
  805.  
  806. <h2 class="wp-block-heading"><strong>Conclusio</strong>n</h2>
  807.  
  808.  
  809.  
  810. <p>These represent a handful of instructions you can carry out once linked to your Azure Tenant. The Azure CLI tool is fundamental for IT administrators, offering a swift and effective way to manage Azure assets. It streamlines regular checks of digital machines, scrutinizes network security arrangements, oversees storage solutions, and audits access controls with its intuitive syntax and powerful abilities. The concise command framework of Azure CLI saves time and enhances the overall efficiency and security of Azure environments. As cloud technologies progress, Azure CLI stays a crucial part of the kit of every Azure professional, as it enables them to navigate and manage their cloud assets expertly.</p>
  811.  
  812.  
  813.  
  814. <p>In future posts, I will expand on the types of commands you can run using Azure CLI, specifically when trying to review an Azure Tenant.</p>
  815. ]]></content:encoded>
  816. <wfw:commentRss>https://helloitsliam.com/2023/12/12/connecting-to-azure-using-azure-cli-with-an-app-registration-and-a-certificate/feed/</wfw:commentRss>
  817. <slash:comments>2</slash:comments>
  818. <post-id xmlns="com-wordpress:feed-additions:1">42065</post-id> </item>
  819. <item>
  820. <title>Email, Attachments, Query, and Microsoft Graph PowerShell</title>
  821. <link>https://helloitsliam.com/2023/12/07/email-attachments-query-and-microsoft-graph-powershell/</link>
  822. <comments>https://helloitsliam.com/2023/12/07/email-attachments-query-and-microsoft-graph-powershell/#comments</comments>
  823. <dc:creator><![CDATA[helloitsliam]]></dc:creator>
  824. <pubDate>Thu, 07 Dec 2023 20:32:52 +0000</pubDate>
  825. <category><![CDATA[Exchange Online]]></category>
  826. <category><![CDATA[General]]></category>
  827. <category><![CDATA[Graph]]></category>
  828. <category><![CDATA[Random]]></category>
  829. <category><![CDATA[Scripting]]></category>
  830. <category><![CDATA[Microsoft 365]]></category>
  831. <category><![CDATA[PowerShell]]></category>
  832. <guid isPermaLink="false">https://helloitsliam.com/?p=42019</guid>
  833.  
  834. <description><![CDATA[As you know, I like challenges. I like things that take me some time to figure out and may or may not work. I recently had someone reach out and ask for some help with PowerShell. What was needed is the following: You know that technically, you could do this manually; you could use SharePoint [&#8230;]]]></description>
  835. <content:encoded><![CDATA[
  836. <p>As you know, I like challenges. I like things that take me some time to figure out and may or may not work. I recently had someone reach out and ask for some help with PowerShell. What was needed is the following:</p>
  837.  
  838.  
  839.  
  840. <ol>
  841. <li>Access specific user mailbox in Exchange Online.</li>
  842.  
  843.  
  844.  
  845. <li>Navigate to a particular sub-folder.</li>
  846.  
  847.  
  848.  
  849. <li>Access the mail items.</li>
  850.  
  851.  
  852.  
  853. <li>Retrieve all the attachments that are PDFs.</li>
  854.  
  855.  
  856.  
  857. <li>Download the PDFs locally.</li>
  858.  
  859.  
  860.  
  861. <li>Inspect the content in the PDFs for a specific word.</li>
  862.  
  863.  
  864.  
  865. <li>Reattach the PDFs to a new email and send them.</li>
  866. </ol>
  867.  
  868.  
  869.  
  870. <p>You know that technically, you could do this manually; you could use SharePoint search, find the files, download them, and email them again, or you could do it manually using Outlook mail client. However, the request was for using PowerShell.&nbsp;</p>
  871.  
  872.  
  873.  
  874. <p>Luckily, the Microsoft Graph PowerShell module is ideal for this. So, to get started, you&nbsp;<strong>first</strong>&nbsp;need to install and import the module:</p>
  875.  
  876.  
  877. <div class="wp-block-syntaxhighlighter-code "><pre class="brush: powershell; title: ; notranslate">
  878. Install-Module -Name Microsoft.Graph -Force
  879. Import-Module -Name Microsoft.Graph
  880. </pre></div>
  881.  
  882.  
  883. <p><strong>Next</strong>, you need to connect to the tenant. I am using an App Registration with a Certificate with the required permissions I need.</p>
  884.  
  885.  
  886. <div class="wp-block-syntaxhighlighter-code "><pre class="brush: powershell; title: ; notranslate">
  887. Connect-MgGraph `
  888. -ClientId &quot;5584d545-45a6-3660c3031532&quot; `
  889. -TenantId &quot;5cd54330-cd94-38a0c1ed90ae&quot; `
  890. -CertificateThumbprint &quot;51F85A30512A3B8F2C9E0B8A2&quot;
  891. </pre></div>
  892.  
  893.  
  894. <figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="616" height="142" data-attachment-id="42029" data-permalink="https://helloitsliam.com/2023/12/07/email-attachments-query-and-microsoft-graph-powershell/image-2-11/" data-orig-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-2.png?fit=2036%2C470&amp;ssl=1" data-orig-size="2036,470" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-2" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-2.png?fit=300%2C69&amp;ssl=1" data-large-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-2.png?fit=616%2C142&amp;ssl=1" src="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-2.png?resize=616%2C142&#038;ssl=1" alt="" class="wp-image-42029" srcset="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-2.png?resize=1024%2C236&amp;ssl=1 1024w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-2.png?resize=300%2C69&amp;ssl=1 300w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-2.png?resize=768%2C177&amp;ssl=1 768w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-2.png?resize=1536%2C355&amp;ssl=1 1536w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-2.png?resize=1200%2C277&amp;ssl=1 1200w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-2.png?resize=816%2C188&amp;ssl=1 816w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-2.png?resize=347%2C80&amp;ssl=1 347w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-2.png?w=2036&amp;ssl=1 2036w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-2.png?w=1848&amp;ssl=1 1848w" sizes="(max-width: 616px) 100vw, 616px" data-recalc-dims="1" /></figure>
  895.  
  896.  
  897.  
  898. <p>Now, you set the variables needed for it all to work:</p>
  899.  
  900.  
  901. <div class="wp-block-syntaxhighlighter-code "><pre class="brush: powershell; title: ; notranslate">
  902. $folderName = &quot;Test&quot;
  903. $searchableWord = &quot;Error&quot;
  904. $user = &quot;user@M365.onmicrosoft.com&quot;
  905. $downloadFolder = &quot;C:\PowerShell\Files\&quot;
  906. $pdfDownloadFolder = &quot;C:\PowerShell\Files\PDFs\&quot;
  907. $userEmail = &quot;user@M365.onmicrosoft.com&quot;
  908. $recipientEmail = &quot;user@M365.onmicrosoft.com&quot;
  909. </pre></div>
  910.  
  911.  
  912. <p>To retrieve the user folders from their email, you use <strong>Get-MgUserMailFolder</strong>.</p>
  913.  
  914.  
  915. <div class="wp-block-syntaxhighlighter-code "><pre class="brush: powershell; title: ; notranslate">
  916. $parentFolders = Get-MgUserMailFolder -UserId $user
  917. </pre></div>
  918.  
  919.  
  920. <p>Depending on the folder location, for example, stored underneath&nbsp;<strong>Inbox</strong>, you must iterate the parent to find it.</p>
  921.  
  922.  
  923. <div class="wp-block-syntaxhighlighter-code "><pre class="brush: powershell; title: ; notranslate">
  924. foreach ($parentFolder in $parentFolders) {
  925.    $subFolders = Get-MgUserMailFolderChildFolder `
  926. -UserId $user `
  927. -MailFolderId $parentFolder.Id | `
  928. Where-Object { $_.DisplayName -eq $folderName }
  929.     foreach ($subFolder in $subFolders) {
  930.         $folderId = $subFolder.Id
  931.   }
  932. }
  933. </pre></div>
  934.  
  935.  
  936. <p>Now, you need to retrieve the specific folder.</p>
  937.  
  938.  
  939. <div class="wp-block-syntaxhighlighter-code "><pre class="brush: powershell; title: ; notranslate">
  940. $specificFolder = Get-MgUserMailFolder `
  941. -UserId $user `
  942. -MailFolderId $folderId
  943. </pre></div>
  944.  
  945.  
  946. <p>Now you have the required folder; you now need to get all the messages saved within the folder.</p>
  947.  
  948.  
  949. <div class="wp-block-syntaxhighlighter-code "><pre class="brush: powershell; title: ; notranslate">
  950. $messages = Get-MgUserMailFolderMessage `
  951. -UserId $user `
  952. -MailFolderId $specificFolder.Id | `
  953. Where-Object {$_.HasAttachments -eq $true}
  954. </pre></div>
  955.  
  956.  
  957. <p>Now you have all the messages loaded from the selected folder with attachments, you can start processing them. You may know that opening PDF files is quite complicated with PowerShell and requires some 3rd Party component. For this you need to download &#8220;<strong>pdftotext</strong>&#8221; from here:</p>
  958.  
  959.  
  960.  
  961. <p><a href="https://dl.xpdfreader.com/xpdf-tools-win-4.04.zip">https://dl.xpdfreader.com/xpdf-tools-win-4.04.zip</a></p>
  962.  
  963.  
  964.  
  965. <p>The logic here is this:</p>
  966.  
  967.  
  968.  
  969. <ul>
  970. <li>Iterate the PDF files.</li>
  971.  
  972.  
  973.  
  974. <li>Download them locally.</li>
  975.  
  976.  
  977.  
  978. <li>Create a &#8220;*.txt&#8221; version of the PDF.</li>
  979.  
  980.  
  981.  
  982. <li>Inspect the &#8220;*.txt&#8221; version for the required word.</li>
  983.  
  984.  
  985.  
  986. <li>Move the identified PDF files to a new folder.</li>
  987. </ul>
  988.  
  989.  
  990. <div class="wp-block-syntaxhighlighter-code "><pre class="brush: powershell; title: ; notranslate">
  991. foreach ($message in $messages) {
  992. $attachments = Get-MgUserMessageAttachment `
  993. -UserId $user `
  994. -MessageId $message.Id
  995. foreach ($attachment in $attachments) {
  996. $attachmentExtension = &#x5B;System.IO.Path]::GetExtension($attachment.Name).ToLower()
  997. $attachmentName = $attachment.Name.Replace($attachmentExtension, '')
  998.  
  999. $uniqueIdentifier = -join ((65..90) + (97..122) + (48..57) | Get-Random -Count 8 | `
  1000. ForEach-Object {&#x5B;char]$_})
  1001.         $fileName = &quot;{0}_{1}.{2}&quot; `
  1002. -f $attachmentName, $uniqueIdentifier, $attachmentExtension
  1003.  
  1004. $filePath = Join-Path `
  1005. -Path $downloadFolder `
  1006. -ChildPath $fileName
  1007.  
  1008. if (-not (Test-Path $filePath)) {
  1009. Write-Host &quot;Downloading $($attachmentExtension) to $filePath | $($attachment.Id)&quot;
  1010.            
  1011. try {
  1012. if($attachmentExtension -like &quot;*.pdf&quot;)
  1013. {
  1014. $contentBytes = &#x5B;System.Convert]::FromBase64String($attachment.AdditionalProperties.contentBytes)
  1015. &#x5B;System.IO.File]::WriteAllBytes($filePath, $contentBytes)
  1016.  
  1017. $pdfFilePath = $filePath
  1018. $textFilePath = $pdfFilePath.Replace(&quot;.pdf&quot;, &quot;.txt&quot;)
  1019.                  
  1020. &amp; .\pdftotext.exe -layout -nopgbrk $pdfFilePath $textFilePath
  1021.  
  1022. $textContent = Get-Content $textFilePath -Raw
  1023. if ($textContent -match $searchableWord) {
  1024. $pdfDestinationPath = Join-Path -Path $pdfDownloadFolder -ChildPath $fileName
  1025. Move-Item $pdfFilePath $pdfDestinationPath
  1026. Write-Host &quot;Moved $($attachment.Name) to $pdfDestinationPath&quot;
  1027. }
  1028.                }
  1029.  
  1030.                $textFiles = Get-ChildItem -Path $downloadFolder -Filter &quot;*.txt&quot;
  1031.                foreach ($textFile in $textFiles) {
  1032. Remove-Item $textFile.FullName -Force
  1033.                }
  1034.            } catch {
  1035.                Write-Host &quot;Error processing $($attachment.Name): $_&quot;
  1036.            }
  1037.        } else {
  1038.            Write-Host &quot;File $($attachment.Name) already exists at $filePath&quot;
  1039.        }
  1040.    }
  1041. }
  1042. </pre></div>
  1043.  
  1044.  
  1045. <figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="434" height="198" data-attachment-id="42027" data-permalink="https://helloitsliam.com/2023/12/07/email-attachments-query-and-microsoft-graph-powershell/image-82/" data-orig-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image.png?fit=434%2C198&amp;ssl=1" data-orig-size="434,198" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image.png?fit=300%2C137&amp;ssl=1" data-large-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image.png?fit=434%2C198&amp;ssl=1" src="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image.png?resize=434%2C198&#038;ssl=1" alt="" class="wp-image-42027" srcset="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image.png?w=434&amp;ssl=1 434w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image.png?resize=300%2C137&amp;ssl=1 300w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image.png?resize=175%2C80&amp;ssl=1 175w" sizes="(max-width: 434px) 100vw, 434px" data-recalc-dims="1" /></figure>
  1046.  
  1047.  
  1048.  
  1049. <figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="454" height="448" data-attachment-id="42028" data-permalink="https://helloitsliam.com/2023/12/07/email-attachments-query-and-microsoft-graph-powershell/image-1-13/" data-orig-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-1.png?fit=454%2C448&amp;ssl=1" data-orig-size="454,448" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-1" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-1.png?fit=300%2C296&amp;ssl=1" data-large-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-1.png?fit=454%2C448&amp;ssl=1" src="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-1.png?resize=454%2C448&#038;ssl=1" alt="" class="wp-image-42028" srcset="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-1.png?w=454&amp;ssl=1 454w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-1.png?resize=300%2C296&amp;ssl=1 300w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-1.png?resize=88%2C88&amp;ssl=1 88w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-1.png?resize=81%2C80&amp;ssl=1 81w" sizes="(max-width: 454px) 100vw, 454px" data-recalc-dims="1" /></figure>
  1050.  
  1051.  
  1052.  
  1053. <p>As you can see, each file uses its original name and then a unique identifier to make sure there are no duplicates.</p>
  1054.  
  1055.  
  1056.  
  1057. <p><strong>Next</strong>, you can construct our email and attachments using the matching PDF files you moved to the folder. You can then use&nbsp;<strong>Send-MgUserMail</strong>&nbsp;to email the requested user or group.</p>
  1058.  
  1059.  
  1060. <div class="wp-block-syntaxhighlighter-code "><pre class="brush: powershell; title: ; notranslate">
  1061. $attachments = Get-ChildItem -Path $pdfDownloadFolder -Filter &quot;*.pdf&quot; | ForEach-Object {
  1062.    $pdfContentBytes = &#x5B;System.IO.File]::ReadAllBytes($_.FullName)
  1063.    $pdfContentBase64 = &#x5B;System.Convert]::ToBase64String($pdfContentBytes)
  1064.  
  1065.    @{
  1066.        &quot;@odata.type&quot; = &quot;#microsoft.graph.fileAttachment&quot;
  1067.        Name = $_.Name
  1068.        ContentType = &quot;application/pdf&quot;
  1069.        ContentBytes = $pdfContentBase64
  1070.    }
  1071. }
  1072.  
  1073. $params = @{
  1074.    Message = @{
  1075.        Subject = &quot;PDF Files with Errors&quot;
  1076.        Body = @{
  1077.            ContentType = &quot;Text&quot;
  1078.            Content = &quot;Attached are the PDF files with errors.&quot;
  1079.        }
  1080.        ToRecipients = @(
  1081.            @{
  1082.                EmailAddress = @{
  1083.                    Address = $recipientEmail
  1084.                }
  1085.            }
  1086.        )
  1087.        Attachments = $attachments
  1088.    }
  1089. }
  1090.  
  1091. Send-MgUserMail -UserId $userEmail -BodyParameter $params
  1092. </pre></div>
  1093.  
  1094.  
  1095. <p>The generated email contains the matching attachments you moved to the PDF folder that matched the required word.</p>
  1096.  
  1097.  
  1098.  
  1099. <figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="616" height="200" data-attachment-id="42031" data-permalink="https://helloitsliam.com/2023/12/07/email-attachments-query-and-microsoft-graph-powershell/image-3-9/" data-orig-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-3.png?fit=2110%2C686&amp;ssl=1" data-orig-size="2110,686" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-3" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-3.png?fit=300%2C98&amp;ssl=1" data-large-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-3.png?fit=616%2C200&amp;ssl=1" src="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-3.png?resize=616%2C200&#038;ssl=1" alt="" class="wp-image-42031" srcset="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-3.png?resize=1024%2C333&amp;ssl=1 1024w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-3.png?resize=300%2C98&amp;ssl=1 300w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-3.png?resize=768%2C250&amp;ssl=1 768w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-3.png?resize=1536%2C499&amp;ssl=1 1536w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-3.png?resize=2048%2C666&amp;ssl=1 2048w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-3.png?resize=1200%2C390&amp;ssl=1 1200w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-3.png?resize=816%2C265&amp;ssl=1 816w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-3.png?resize=246%2C80&amp;ssl=1 246w, https://i0.wp.com/helloitsliam.com/wp-content/uploads/2023/12/image-3.png?w=1848&amp;ssl=1 1848w" sizes="(max-width: 616px) 100vw, 616px" data-recalc-dims="1" /></figure>
  1100.  
  1101.  
  1102.  
  1103. <p>Like I said, I like a bit of challenge, which makes me think about it and wonder if I can get it to work. I am not too worried about the reason for it; more about whether it is possible, whether it works, and whether it is even worth the complexity.</p>
  1104. ]]></content:encoded>
  1105. <wfw:commentRss>https://helloitsliam.com/2023/12/07/email-attachments-query-and-microsoft-graph-powershell/feed/</wfw:commentRss>
  1106. <slash:comments>2</slash:comments>
  1107. <post-id xmlns="com-wordpress:feed-additions:1">42019</post-id> </item>
  1108. <item>
  1109. <title>Playlist: Need for Speed&#8230;and some Bass</title>
  1110. <link>https://helloitsliam.com/2023/11/02/playlist-need-for-speed-and-some-bass/</link>
  1111. <comments>https://helloitsliam.com/2023/11/02/playlist-need-for-speed-and-some-bass/#respond</comments>
  1112. <dc:creator><![CDATA[helloitsliam]]></dc:creator>
  1113. <pubDate>Thu, 02 Nov 2023 19:22:18 +0000</pubDate>
  1114. <category><![CDATA[General]]></category>
  1115. <category><![CDATA[Personal]]></category>
  1116. <category><![CDATA[dance]]></category>
  1117. <category><![CDATA[hardcore]]></category>
  1118. <category><![CDATA[music]]></category>
  1119. <category><![CDATA[Playlist]]></category>
  1120. <category><![CDATA[techno]]></category>
  1121. <guid isPermaLink="false">https://helloitsliam.com/?p=41903</guid>
  1122.  
  1123. <description><![CDATA[So this playlist is hard and fast. I wanted a new playlist to keep me going as I work and when I run and this does the trick. Enjoy the speed. As normal here is the Spotify playlist:]]></description>
  1124. <content:encoded><![CDATA[
  1125. <p>So this playlist is hard and fast. I wanted a new playlist to keep me going as I work and when I run and this does the trick. Enjoy the speed.</p>
  1126.  
  1127.  
  1128.  
  1129. <ul>
  1130. <li>Take Me Up – Da Tweekaz, Gammer</li>
  1131.  
  1132.  
  1133.  
  1134. <li>2003 – TNT, Technology, Tuneboy</li>
  1135.  
  1136.  
  1137.  
  1138. <li>Laserbeam – Ray Volpe</li>
  1139.  
  1140.  
  1141.  
  1142. <li>Whistle – 4B, Teez</li>
  1143.  
  1144.  
  1145.  
  1146. <li>Dominate VIP – Space Laces</li>
  1147.  
  1148.  
  1149.  
  1150. <li>404 – Hekler, Gladez</li>
  1151.  
  1152.  
  1153.  
  1154. <li>Rising Up – Brennan Heart, Mingue</li>
  1155.  
  1156.  
  1157.  
  1158. <li>Where Have You Been (HardStyle) – Dimatik, Overdrive</li>
  1159.  
  1160.  
  1161.  
  1162. <li>Rise Up (The Reawkening) – Atmozfears, Aftershock</li>
  1163.  
  1164.  
  1165.  
  1166. <li>Wonder – TNT, Darren Styles, Technoboy, Tuneboy</li>
  1167.  
  1168.  
  1169.  
  1170. <li>For Those About To Rave – Timmy Trumpet, Scooter</li>
  1171.  
  1172.  
  1173.  
  1174. <li>Elevate – Little Sis Nora, S3RL</li>
  1175.  
  1176.  
  1177.  
  1178. <li>Dropping Bombs – The Keytown Connection</li>
  1179.  
  1180.  
  1181.  
  1182. <li>Breakdown The Wall – Faster, TK</li>
  1183.  
  1184.  
  1185.  
  1186. <li>Clic Clac – Pinotello, NRKi, Darkside Unleashed</li>
  1187.  
  1188.  
  1189.  
  1190. <li>Breaking Necks (Original Mix) – Dolphin, Motormouth Recordz</li>
  1191.  
  1192.  
  1193.  
  1194. <li>Immortal – Xeramon</li>
  1195.  
  1196.  
  1197.  
  1198. <li>The Clock – Machination</li>
  1199.  
  1200.  
  1201.  
  1202. <li>Pursuit – Andy the Core, Stealth</li>
  1203.  
  1204.  
  1205.  
  1206. <li>Bass Boom – Never Surrender, Resolute</li>
  1207. </ul>
  1208.  
  1209.  
  1210.  
  1211. <p>As normal here is the <strong>Spotify</strong> playlist:</p>
  1212.  
  1213.  
  1214.  
  1215. <figure class="wp-block-image size-full"><a href="https://open.spotify.com/playlist/1eYFRotMoJyBUM1Nk3upXN?si=a9ddb293853549a1" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="240" height="126" data-attachment-id="28594" data-permalink="https://helloitsliam.com/2018/04/01/music-playlist-april-2018/031718_1540_musicplayli1-png/" data-orig-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2021/09/73c21-031718_1540_musicplayli1.png?fit=240%2C126&amp;ssl=1" data-orig-size="240,126" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="031718_1540_MusicPlayli1.png" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2021/09/73c21-031718_1540_musicplayli1.png?fit=240%2C126&amp;ssl=1" data-large-file="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2021/09/73c21-031718_1540_musicplayli1.png?fit=240%2C126&amp;ssl=1" src="https://i0.wp.com/helloitsliam.com/wp-content/uploads/2021/09/73c21-031718_1540_musicplayli1.png?resize=240%2C126&#038;ssl=1" alt="" class="wp-image-28594" data-recalc-dims="1"/></a></figure>
  1216. ]]></content:encoded>
  1217. <wfw:commentRss>https://helloitsliam.com/2023/11/02/playlist-need-for-speed-and-some-bass/feed/</wfw:commentRss>
  1218. <slash:comments>0</slash:comments>
  1219. <post-id xmlns="com-wordpress:feed-additions:1">41903</post-id> </item>
  1220. <item>
  1221. <title>Where did I go?</title>
  1222. <link>https://helloitsliam.com/2023/10/24/where-did-i-go/</link>
  1223. <comments>https://helloitsliam.com/2023/10/24/where-did-i-go/#comments</comments>
  1224. <dc:creator><![CDATA[helloitsliam]]></dc:creator>
  1225. <pubDate>Tue, 24 Oct 2023 18:34:04 +0000</pubDate>
  1226. <category><![CDATA[General]]></category>
  1227. <category><![CDATA[Personal]]></category>
  1228. <category><![CDATA[Speaking]]></category>
  1229. <guid isPermaLink="false">https://helloitsliam.com/?p=41841</guid>
  1230.  
  1231. <description><![CDATA[Hey, Everyone. I hope you are all doing well. It has been a while since I have posted due to various things. Today, I felt like I needed to say hello and let you know I am still here.  About a month ago, we had my son&#8217;s wedding, which had me out for almost two weeks; [&#8230;]]]></description>
  1232. <content:encoded><![CDATA[
  1233. <p>Hey, <strong>Everyone</strong>. I hope you are all doing well. It has been a while since I have posted due to various things. Today, I felt like I needed to say hello and let you know I am still here. </p>
  1234.  
  1235.  
  1236.  
  1237. <p>About a month ago, we had my son&#8217;s wedding, which had me out for almost two weeks; plus, as is usual with traveling, I got sick once I got home. However, that has dragged itself out, and I am still getting over a mix of a head cold, COVID, and a few other things that my body seems to be fighting. Work has suffered a little due to this, plus my normal cycle of mountain biking, running, hiking, coaching soccer, and everyday family life.&nbsp;</p>
  1238.  
  1239.  
  1240.  
  1241. <p>However, I am slowly on the mend and starting to get back out and about and working as usual, albeit slowly. Next week (November 1-3), I will be in Chicago speaking at&nbsp;<a target="_blank" href="https://www.365educon.com/Chicago/" rel="noreferrer noopener">365 EduCon</a>&nbsp;on the following:</p>
  1242.  
  1243.  
  1244.  
  1245. <ul>
  1246. <li><a target="_blank" href="https://www.365educon.com/Chicago/365educonspeakers/speakers#" rel="noreferrer noopener">Data Security: It&#8217;s Not Just for IT Anymore</a></li>
  1247.  
  1248.  
  1249.  
  1250. <li><a target="_blank" href="https://www.365educon.com/Chicago/365educonspeakers/speakers#" rel="noreferrer noopener">Data Security Breach in Microsoft 365, Now What?</a></li>
  1251. </ul>
  1252.  
  1253.  
  1254.  
  1255. <p>If you are there, join the sessions and say hello. I will also be in California later this month for a week, recording two training courses at the LinkedIn Recording Studios. More details to come on these, but they are:</p>
  1256.  
  1257.  
  1258.  
  1259. <ul>
  1260. <li><strong>Managed Detection and Response Fundamentals</strong></li>
  1261.  
  1262.  
  1263.  
  1264. <li><strong>Managed Detection and Response Strategies</strong></li>
  1265. </ul>
  1266.  
  1267.  
  1268.  
  1269. <p>Outside of the travel, I am also working on completing a couple of courses and a LAB:</p>
  1270.  
  1271.  
  1272.  
  1273. <ul>
  1274. <li><strong>Pluralsight Course:&nbsp;</strong>Microsoft Purview Records Management and eDiscovery in Microsoft 365</li>
  1275.  
  1276.  
  1277.  
  1278. <li><strong>Pluralsight LAB:&nbsp;</strong>PowerShell Hands-On Exercises Primer 3</li>
  1279.  
  1280.  
  1281.  
  1282. <li><strong>Cybrary IT Course:&nbsp;</strong>SC-400: Administering Information Protection and Compliance in Microsoft 365</li>
  1283. </ul>
  1284.  
  1285.  
  1286.  
  1287. <p>I have almost finished writing a book for <a href="https://bpbonline.com/" target="_blank" rel="noreferrer noopener">BPB</a> called <strong>PowerShell in 7 Days</strong>. I am unsure of the final release date, but it has been a long process that I have always wanted to try. I have tried it, let&#8217;s say that.</p>
  1288.  
  1289.  
  1290.  
  1291. <p>Of course, I am working as usual on various projects and am grateful for the work; it has been <strong>challenging</strong> and <strong>rewarding</strong>. I have also been writing content for the usual places. I will be doing a webinar in December to go with the Security eBook &#8220;<strong>Understanding Microsoft Cloud Services and Security</strong>,&#8221; which I wrote and is available from <a href="https://go.rencore.com/microsoft-cyber-security/" target="_blank" rel="noreferrer noopener">Rencore</a> and <a href="https://www.tekkigurus.com/understanding-microsoft-cloud-services-security/" target="_blank" rel="noreferrer noopener">TekkiGurus</a>.</p>
  1292.  
  1293.  
  1294.  
  1295. <p>I am honored to attend the <a href="https://m365miami.com/" target="_blank" rel="noreferrer noopener">Microsoft 365 Community Day in Miami</a> in February as a speaker, and I look forward to that. Like I said in one of my previous posts, <strong>I am still a member of the community</strong> and <strong>doing what I can</strong>. </p>
  1296.  
  1297.  
  1298.  
  1299. <p>Outside of work, sickness, travel, and family, I am also about to go into Marathon training. My son asked me to join him next year to run the&nbsp;<a target="_blank" href="https://www.rexburgraces.com/teton-dam-marathon/" rel="noreferrer noopener">Teton Dam Marathon</a>, so I need to get training again.&nbsp;</p>
  1300.  
  1301.  
  1302.  
  1303. <p>Overall, things are great, albeit a little too busy, and I need the illness and sickness to leave to return to everyday life. As I am sure you can attest, nothing is more discouraging than being sick and trying to push through and unable to.&nbsp;</p>
  1304.  
  1305.  
  1306.  
  1307. <p>On a side note, however, there are others I know of, friends that have far greater struggles than I do, and I want them to know they are in my thoughts and prayers and hope things become easier and better. Compared to their struggles, I don&#8217;t have the right to complain.</p>
  1308.  
  1309.  
  1310.  
  1311. <p>I hope to see you around as I return to everyday life somewhere.</p>
  1312. ]]></content:encoded>
  1313. <wfw:commentRss>https://helloitsliam.com/2023/10/24/where-did-i-go/feed/</wfw:commentRss>
  1314. <slash:comments>1</slash:comments>
  1315. <post-id xmlns="com-wordpress:feed-additions:1">41841</post-id> </item>
  1316. <item>
  1317. <title>And Just Like That&#8230;.</title>
  1318. <link>https://helloitsliam.com/2023/07/06/and-just-like-that/</link>
  1319. <comments>https://helloitsliam.com/2023/07/06/and-just-like-that/#comments</comments>
  1320. <dc:creator><![CDATA[helloitsliam]]></dc:creator>
  1321. <pubDate>Thu, 06 Jul 2023 18:17:28 +0000</pubDate>
  1322. <category><![CDATA[General]]></category>
  1323. <category><![CDATA[MVP]]></category>
  1324. <category><![CDATA[MVPAward]]></category>
  1325. <category><![CDATA[Personal]]></category>
  1326. <guid isPermaLink="false">https://helloitsliam.com/?p=41518</guid>
  1327.  
  1328. <description><![CDATA[Five years ago this past month, I left my comfortable paying full-time job to go on my own and see what would happen. It probably went well, as five years have passed. When I decided to do this, I knew deep down that there would be a point where I would focus more on making [&#8230;]]]></description>
  1329. <content:encoded><![CDATA[
  1330. <p>Five years ago this past month, I left my comfortable paying full-time job to go on my own and see what would happen. It probably went well, as five years have passed. When I decided to do this, I knew deep down that there would be a point where I would focus more on making the business work than on other things I had previously done. Until then, I had always been able to schedule time each week to study, write blogs, prepare conference sessions and give back to the Community.</p>
  1331.  
  1332.  
  1333.  
  1334. <p>I noticed that as time went on, it became more complicated to dedicate time to those types of activities, and I started to realize that the day would come when the MVP status I had held for so long would disappear. Today was that day! <strong>After 17 years</strong> of doing all I could to help the Community, it became time for my spot to be released and someone new to take it. It is a strange feeling to lose something, albeit an award that you have received religiously every year for that long, but it was no surprise.&nbsp;</p>
  1335.  
  1336.  
  1337.  
  1338. <p>In the past years, my priorities have changed, the areas of work I focus on have changed, and all to support my family. There have been many things that have changed.</p>
  1339.  
  1340.  
  1341.  
  1342. <ol>
  1343. <li><strong>I took paid work instead of doing community work.</strong>
  1344. <ul>
  1345. <li><em>Writing for free is much harder when people want you to write for them, and you must provide for your family.</em></li>
  1346. </ul>
  1347. </li>
  1348.  
  1349.  
  1350.  
  1351. <li><strong>Our daughter got married.</strong></li>
  1352.  
  1353.  
  1354.  
  1355. <li><strong>Our daughter and her husband had two kids.</strong></li>
  1356.  
  1357.  
  1358.  
  1359. <li><strong>My wife and I became grandparents.</strong></li>
  1360.  
  1361.  
  1362.  
  1363. <li><strong>Our eldest son went out to college.</strong></li>
  1364.  
  1365.  
  1366.  
  1367. <li><strong>Our eldest son is getting married this year.</strong></li>
  1368.  
  1369.  
  1370.  
  1371. <li><strong>Our other two moved up to High School and Middle School.</strong></li>
  1372.  
  1373.  
  1374.  
  1375. <li><strong>I started coaching Boys U10/U12 Soccer.</strong></li>
  1376.  
  1377.  
  1378.  
  1379. <li><strong>I got crazy ill from a bacterial infection, making me rethink where I spend my time. I was out for weeks and weeks.</strong></li>
  1380.  
  1381.  
  1382.  
  1383. <li><strong>Some family deaths.</strong></li>
  1384.  
  1385.  
  1386.  
  1387. <li><strong>Oh yeah, that crazy COVID thing happened at the same time.</strong></li>
  1388. </ol>
  1389.  
  1390.  
  1391.  
  1392. <p>These are just a few things that happened these past few years, making the MVP commitment slowly disappear.</p>
  1393.  
  1394.  
  1395.  
  1396. <p>I remember in 2007 when I first received the MVP award back in the UK, with only a handful of us. I have fond memories of presenting at the Manchester User Group that Neil was part of and presenting on making SharePoint not look like SharePoint. My most-read best post ever for SharePoint was how to write a Membership and Role Provider and deploy it. I think of those early MVP summits where there were twenty of us in a room with members of the engineering team and some paper flip-charts that we drew ideas on and chatted about, not quite the same as the thousands that attend now and the presentations now. I think of the opportunities Microsoft gave me to assist at conferences and speak at conferences from Tech-Ed, IT Forum, SharePoint Conference, and all the other events I have been able to speak at; I am so grateful for those experiences.&nbsp;</p>
  1397.  
  1398.  
  1399.  
  1400. <p>What I have enjoyed and hope to enjoy further is the friendships made along the way, both within Microsoft and out. Some of my best friends, made when I moved to the US, have come from being an MVP and meeting at various events together. I am forever grateful for them and the program I have enjoyed for so long.</p>
  1401.  
  1402.  
  1403.  
  1404. <p>Don&#8217;t get me wrong; I am not disappearing; I will still be here, writing content, building courses, and hopefully speaking at conferences. Just because I don&#8217;t have the three letters now, I still remember what I know and how to do what I enjoy. So what am I doing now with the extra free time I never had? <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
  1405.  
  1406.  
  1407.  
  1408. <p><strong>UPDATE (09/05/23): </strong>Published Content Links Added</p>
  1409.  
  1410.  
  1411.  
  1412. <ol>
  1413. <li><strong>Building courses over the new few months</strong>
  1414. <ul>
  1415. <li><em><a href="https://www.pluralsight.com/courses/microsoft-purview-manage-protect-on-premises-content" data-type="link" data-id="https://www.pluralsight.com/courses/microsoft-purview-manage-protect-on-premises-content">Microsoft Purview: Manage and Protect On-premises Content</a></em></li>
  1416.  
  1417.  
  1418.  
  1419. <li><em>Microsoft Purview: Records Management and eDiscovery in Microsoft 365&nbsp;</em></li>
  1420.  
  1421.  
  1422.  
  1423. <li><em>Microsoft Purview: Mitigating Insider Risks in Microsoft 365</em></li>
  1424.  
  1425.  
  1426.  
  1427. <li><em>Microsoft Purview: Using Purview for Regulatory Compliance in Microsoft 365 </em></li>
  1428.  
  1429.  
  1430.  
  1431. <li><a href="https://www.pluralsight.com/labs/aws/write-execute-powershell-scripts" data-type="link" data-id="https://www.pluralsight.com/labs/aws/write-execute-powershell-scripts">LAB: Write and Execute PowerShell Scripts</a></li>
  1432.  
  1433.  
  1434.  
  1435. <li><em><a href="https://www.cybrary.it/course/microsoft-identity-and-access-administrator" data-type="link" data-id="https://www.cybrary.it/course/microsoft-identity-and-access-administrator">Exam SC-300: Microsoft Identity and Access Administrator</a></em></li>
  1436.  
  1437.  
  1438.  
  1439. <li><em>Exam SC-400: Microsoft Information Protection Administrator</em></li>
  1440.  
  1441.  
  1442.  
  1443. <li><em><a href="https://www.linkedin.com/learning/powershell-automating-it-administration/it-automation-with-powershell" data-type="link" data-id="https://www.linkedin.com/learning/powershell-automating-it-administration/it-automation-with-powershell">PowerShell Automating IT Administration</a></em></li>
  1444.  
  1445.  
  1446.  
  1447. <li><em>Exam MD-102 Preparation</em></li>
  1448.  
  1449.  
  1450.  
  1451. <li><em>Exam MS-102 Preparation</em></li>
  1452.  
  1453.  
  1454.  
  1455. <li><em>Managed Detection and Response (MDR) Fundamentals</em></li>
  1456.  
  1457.  
  1458.  
  1459. <li><em>Managed Detection and Response (MDR) Advanced Strategies</em></li>
  1460. </ul>
  1461. </li>
  1462.  
  1463.  
  1464.  
  1465. <li><strong>Writing a book</strong>
  1466. <ul>
  1467. <li><em>PowerShell in 7 Days</em></li>
  1468. </ul>
  1469. </li>
  1470.  
  1471.  
  1472.  
  1473. <li><strong>Speaking at Conferences</strong>
  1474. <ul>
  1475. <li><em>Hopefully, at 365 EduCon in Chicago</em></li>
  1476.  
  1477.  
  1478.  
  1479. <li><em>Hopefully at Microsoft 365 Community Day Miami</em></li>
  1480. </ul>
  1481. </li>
  1482.  
  1483.  
  1484.  
  1485. <li><strong>Running and Mountain Biking</strong></li>
  1486.  
  1487.  
  1488.  
  1489. <li><strong>Spending time with family</strong></li>
  1490.  
  1491.  
  1492.  
  1493. <li><strong>Working as ALWAYS</strong></li>
  1494. </ol>
  1495.  
  1496.  
  1497.  
  1498. <p>Overall, it has been an amazing experience, and I may get to come back somehow, or I will just be here as always, as always, doing my thing, and all will be well.&nbsp;</p>
  1499.  
  1500.  
  1501.  
  1502. <p>Lastly, I want to congratulate all of the <strong>NEW </strong>and <strong>RENEWED MVPs</strong>. Enjoy it, do the best you can, and as we all know, we will end up in the MVP Alumni program at some point.</p>
  1503. ]]></content:encoded>
  1504. <wfw:commentRss>https://helloitsliam.com/2023/07/06/and-just-like-that/feed/</wfw:commentRss>
  1505. <slash:comments>1</slash:comments>
  1506. <post-id xmlns="com-wordpress:feed-additions:1">41518</post-id> </item>
  1507. <item>
  1508. <title>M365 Conference and Upcoming</title>
  1509. <link>https://helloitsliam.com/2023/05/09/m365-conference-and-upcoming/</link>
  1510. <comments>https://helloitsliam.com/2023/05/09/m365-conference-and-upcoming/#respond</comments>
  1511. <dc:creator><![CDATA[helloitsliam]]></dc:creator>
  1512. <pubDate>Tue, 09 May 2023 15:55:19 +0000</pubDate>
  1513. <category><![CDATA[Conferences]]></category>
  1514. <category><![CDATA[Graph]]></category>
  1515. <category><![CDATA[Speaking]]></category>
  1516. <category><![CDATA[Microsoft]]></category>
  1517. <category><![CDATA[Microsoft 365]]></category>
  1518. <category><![CDATA[PowerShell]]></category>
  1519. <category><![CDATA[Security]]></category>
  1520. <guid isPermaLink="false">https://helloitsliam.com/?p=41363</guid>
  1521.  
  1522. <description><![CDATA[Last week was my first in-person conference presenting two sessions in a few years. I almost did a year ago or so, but I got ill with a gastrointestinal infection so I couldn&#8217;t attend. I have been out and taught certification courses face-to-face, the last of which was in Washington, DC, for a government and [&#8230;]]]></description>
  1523. <content:encoded><![CDATA[
  1524. <p>Last week was my first in-person conference presenting two sessions in a few years. I almost did a year ago or so, but I got ill with a gastrointestinal infection so I couldn&#8217;t attend. I have been out and taught certification courses face-to-face, the last of which was in Washington, DC, for a government and military conference. I don&#8217;t want you to think I have been hiding at my house <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
  1525.  
  1526.  
  1527.  
  1528. <p>My last flight was to help move my daughter from Utah to Mississippi at the height of the pandemic when you were NOT supposed to fly. That experience was completely different from many flights this past week. This trip was different, though; it has been almost three years since I have flown anyway.</p>
  1529.  
  1530.  
  1531.  
  1532. <p>I am glad I got the chance to attend the M365 Conference in Vegas though it was fantastic to see and meet up with friends from the community and Microsoft I have not seen for a few years. I am grateful to the conference organizers, Microsoft, all the vendors, and other speakers for a great event. Thank you for having me again.</p>
  1533.  
  1534.  
  1535.  
  1536. <p><p style="color: rgb(14, 16, 26); background: transparent; margin-top:0pt; margin-bottom:0pt;"><span data-preserver-spaces="true" style="color: rgb(14, 16, 26); background: transparent; margin-top:0pt; margin-bottom:0pt;;">I presented two sessions:</span></p></p>
  1537.  
  1538.  
  1539.  
  1540. <ul>
  1541. <li><strong>Data and Security Breach in Microsoft 365, Now What?</strong></li>
  1542.  
  1543.  
  1544.  
  1545. <li><strong>Managing Microsoft 365 with the Microsoft Graph PowerShell SDK</strong></li>
  1546. </ul>
  1547.  
  1548.  
  1549.  
  1550. <ul></ul>
  1551.  
  1552.  
  1553.  
  1554. <p><p style="color: rgb(14, 16, 26); background: transparent; margin-top:0pt; margin-bottom:0pt;"></p><p style="color: rgb(14, 16, 26); background: transparent; margin-top:0pt; margin-bottom:0pt;"><span data-preserver-spaces="true" style="color: rgb(14, 16, 26); background: transparent; margin-top:0pt; margin-bottom:0pt;;">Both went well with standing room only, with great attendees and questions. I always enjoy sessions where everyone interacts and feels a part of the session. Thank you to all those that attended. The slides in PDF format are available to those that participated in the conference; you will find them within the session details of the Whova app. I already posted the link to the sample PowerShell and KQL queries used within both sessions.</span></p><p style="color: rgb(14, 16, 26); background: transparent; margin-top:0pt; margin-bottom:0pt;"></p><p style="color: rgb(14, 16, 26); background: transparent; margin-top:0pt; margin-bottom:0pt;"><span data-preserver-spaces="true" style="color: rgb(14, 16, 26); background: transparent; margin-top:0pt; margin-bottom:0pt;;">My next conference will be June 12 &#8211; 16 in Washington, DC. I will be presenting on:</span></p></p>
  1555.  
  1556.  
  1557.  
  1558. <ul>
  1559. <li><strong>Data and Security Breach in Microsoft 365, Now What?</strong></li>
  1560.  
  1561.  
  1562.  
  1563. <li><strong>Automated Investigation and Response within Microsoft 365</strong></li>
  1564. </ul>
  1565.  
  1566.  
  1567.  
  1568. <p><p style="color: rgb(14, 16, 26); background: transparent; margin-top:0pt; margin-bottom:0pt;"></p><p style="color: rgb(14, 16, 26); background: transparent; margin-top:0pt; margin-bottom:0pt;"><span data-preserver-spaces="true" style="color: rgb(14, 16, 26); background: transparent; margin-top:0pt; margin-bottom:0pt;;">I am again looking forward to being part of another conference. I am still determining which ones I will do after that, but I am planning a couple more before the end of the year. </span></p></p>
  1569.  
  1570.  
  1571.  
  1572. <p>Outside of conferences, I have a few webinars to do. I am still working through the Microsoft Purview courses for Pluralsight, a few LinkedIn Courses, writing a PowerShell Book, and all my normal consulting, running, and mountain biking.</p>
  1573.  
  1574.  
  1575.  
  1576. <p>I hope to say hi to you at some conference this year.</p>
  1577. ]]></content:encoded>
  1578. <wfw:commentRss>https://helloitsliam.com/2023/05/09/m365-conference-and-upcoming/feed/</wfw:commentRss>
  1579. <slash:comments>0</slash:comments>
  1580. <post-id xmlns="com-wordpress:feed-additions:1">41363</post-id> </item>
  1581. </channel>
  1582. </rss>

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid RSS" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://www.feedvalidator.org/check.cgi?url=http%3A//feeds.feedburner.com/helloitsliam%3Fformat%3Dxml

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda