<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Azure &#8211; Cyberillo</title>
	<atom:link href="https://cyberillo.com/category/microsoft/azure/feed/" rel="self" type="application/rss+xml" />
	<link>https://cyberillo.com</link>
	<description>Reliable Tech Tips and Services</description>
	<lastBuildDate>Mon, 29 Dec 2025 08:23:35 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://cyberillo.com/wp-content/uploads/cropped-favicon-100x100.png</url>
	<title>Azure &#8211; Cyberillo</title>
	<link>https://cyberillo.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Local Admin Report with Intune and Log Analytics</title>
		<link>https://cyberillo.com/local-admin-report/</link>
					<comments>https://cyberillo.com/local-admin-report/#respond</comments>
		
		<dc:creator><![CDATA[Sylvan Abela]]></dc:creator>
		<pubDate>Mon, 29 Dec 2025 08:16:15 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Intune]]></category>
		<guid isPermaLink="false">https://cyberillo.com/?p=3613</guid>

					<description><![CDATA[<p>Learn how to create a report of local administrator accounts across your domain with Intune and Log Analytics.</p>
<p>The post <a rel="nofollow" href="https://cyberillo.com/local-admin-report/">Local Admin Report with Intune and Log Analytics</a> appeared first on <a rel="nofollow" href="https://cyberillo.com">Cyberillo</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In a busy IT environment, handing out &#8220;temporary&#8221; local admin access is almost second nature. A user needs to install something, you grant the access, fix the problem, move on to the next ticket… and forget all about it.</p>



<p>The problem? Those leftover admin rights don’t go away on their own. Over time, they quietly pile up and turn into a serious security risk, which most monitoring tools never bother to check. If you don’t know who’s in the local Administrators group, you’re basically trusting luck.</p>



<p>In this guide, I&#8217;ll walk you trough how to use Intune and Log Analytics to get a clear, reliable report of who actually has local admin access on every device in your environment.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>





<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Solution Overview</h2>



<p>We use a proactive approach to ensure no local admins stay hidden:</p>



<ol class="wp-block-list">
<li><strong>Detection:</strong>&nbsp;A PowerShell script runs daily on every machine to query the administrators group.</li>



<li><strong>Ingestion:</strong>&nbsp;Data is sent to a custom table in our Log Analytics Workspace.</li>



<li><strong>Analysis:</strong>&nbsp;KQL queries filter out authorized local administrator accounts to highlight outliers.</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">1. The PowerShell Collection Script</h2>



<p>This script gathers members of the local admin group and sends the data to Azure. By running this via Intune, we get a fresh snapshot of the local admins on each PC every  24 hours.</p>



<p><strong>Prerequisite 1</strong>: Get the <code>$CustomerID</code> from the log analytics workspace Overview tab.</p>



<figure class="wp-block-kadence-image kb-image3613_2d7d33-b1 size-large border"><img fetchpriority="high" decoding="async" width="1024" height="264" src="https://cyberillo.com/wp-content/uploads/Get-Workspace-ID-From-Overview-Section-In-Log-Analytics-1024x264.png" alt="Get-Workspace-ID-From-Overview-Section-In-Log-Analytics" class="kb-img wp-image-3628" srcset="https://cyberillo.com/wp-content/uploads/Get-Workspace-ID-From-Overview-Section-In-Log-Analytics-1024x264.png 1024w, https://cyberillo.com/wp-content/uploads/Get-Workspace-ID-From-Overview-Section-In-Log-Analytics-300x77.png 300w, https://cyberillo.com/wp-content/uploads/Get-Workspace-ID-From-Overview-Section-In-Log-Analytics-768x198.png 768w, https://cyberillo.com/wp-content/uploads/Get-Workspace-ID-From-Overview-Section-In-Log-Analytics-1536x397.png 1536w, https://cyberillo.com/wp-content/uploads/Get-Workspace-ID-From-Overview-Section-In-Log-Analytics.png 1681w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>Prerequisite 2:</strong> To get the <code>$SharedKey</code>, use this AZ CLI query.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">az monitor log-analytics workspace get-shared-keys \
   --resource-group xxxxx \
   --workspace-name xxxxxx \
   --query "primarySharedKey"</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># --------------------------------------------------------------------------
# PowerShell Script: Send Local Administrator Group Members to Log Analytics
# --------------------------------------------------------------------------

# ======================
# 1. Configuration
# ======================
$CustomerID = "&lt;your-customer-id>"
$SharedKey  = "&lt;your-shared-key>"
$LogType    = "LocalAdminReport"

# ======================
# 2. Data Collection
# ======================
$DeviceName = $env:COMPUTERNAME

try {
    $AdminMembers = Get-LocalGroupMember -Group "Administrators"
} catch {
    Write-Error "Error retrieving local group members: $($_.Exception.Message)"
    exit 1
}

$DataToSend = @()
foreach ($Member in $AdminMembers) {
    $MemberName = $Member.Name
    $MemberSource = $Member.PrincipalSource
    if (-not [string]::IsNullOrEmpty($MemberName)) {
        $DataToSend += [PSCustomObject]@{
            DeviceName = $DeviceName
            AdminName  = $MemberName
            PrincipalSource = $MemberSource
            TimeGenerated = (Get-Date -Format s)
        }
    }
}

if ($DataToSend.Count -eq 0) {
    Write-Host "No members found in the Administrators group. Skipping log submission."
    exit 0
}

$JsonPayload = $DataToSend | ConvertTo-Json -Depth 5

# ======================
# 3. Build Request and Signature
# ======================
$Bytes         = [System.Text.Encoding]::UTF8.GetBytes($JsonPayload)
$ContentLength = $Bytes.Length
$APIVersion    = "2016-04-01"
$Date          = (Get-Date).ToUniversalTime().ToString("r")
$ResourcePath  = "/api/logs"

# Build the string for signature (see MS Docs)
$SignatureString = "POST`n$ContentLength`napplication/json`nx-ms-date:$Date`n$ResourcePath"

# Decode Shared Key and calculate signature
try {
    $KeyBytes   = [Convert]::FromBase64String($SharedKey)
    $HMACSHA256 = New-Object System.Security.Cryptography.HMACSHA256
    $HMACSHA256.Key = $KeyBytes
    $Hash = $HMACSHA256.ComputeHash([System.Text.Encoding]::UTF8.GetBytes($SignatureString))
    $Signature = [Convert]::ToBase64String($Hash)
} catch {
    Write-Error "Failed to create signature: $($_.Exception.Message)"
    exit 1
}

$Authorization = "SharedKey ${CustomerId}:$Signature"
$URI = "https://$CustomerID.ods.opinsights.azure.com/api/logs?api-version=$APIVersion"

# ======================
# 4. Send Data
# ======================
$Headers = @{
    "Authorization"        = $Authorization
    "x-ms-date"            = $Date
    "Content-Type"         = "application/json"
    "Log-Type"             = $LogType
    "x-ms-log-type"        = $LogType
    "time-generated-field" = "TimeGenerated"
}

try {
    Write-Host "Sending data to Log Analytics ($LogType)..."
    Write-Host "Target URI: $URI"
    $Response = Invoke-RestMethod -Uri $URI -Method Post -Headers $Headers -Body $JsonPayload
    Write-Host "Successfully sent log data."
} catch {
    Write-Error "Failed to send log data. Error: $($_.Exception.Message)"
    if ($_.Exception.Response) {
        try {
            $Reader = New-Object System.IO.StreamReader($_.Exception.Response.GetResponseStream())
            $Details = $Reader.ReadToEnd()
            Write-Error "Azure Response: $Details"
        } catch { }
    }
    exit 1
}

exit 0</pre>



<h2 class="wp-block-heading">2. Running the Script Daily via Intune</h2>



<p>To force the check daily, we deploy an Intune remediation script.</p>



<ol class="wp-block-list">
<li>Go to <a href="https://intune.microsoft.com" target="_blank" rel="noopener">https://intune.microsoft.com</a>.</li>



<li>Navigate to <strong>Devices > Scripts and remediations > Create</strong>.</li>



<li>Enter the above script as the <strong>Detection Script</strong> and leave the <strong>Remediation Script</strong> empty.</li>
</ol>



<figure class="wp-block-kadence-image kb-image3613_3b43a7-12 size-large border"><img decoding="async" width="1024" height="689" src="https://cyberillo.com/wp-content/uploads/Intune-Remediation-Script-Send-Local-Administrator-Group-Members-to-Log-Analytics-1024x689.png" alt="Intune-Remediation-Script-Send-Local-Administrator-Group-Members-to-Log-Analytics" class="kb-img wp-image-3619" srcset="https://cyberillo.com/wp-content/uploads/Intune-Remediation-Script-Send-Local-Administrator-Group-Members-to-Log-Analytics-1024x689.png 1024w, https://cyberillo.com/wp-content/uploads/Intune-Remediation-Script-Send-Local-Administrator-Group-Members-to-Log-Analytics-300x202.png 300w, https://cyberillo.com/wp-content/uploads/Intune-Remediation-Script-Send-Local-Administrator-Group-Members-to-Log-Analytics-768x516.png 768w, https://cyberillo.com/wp-content/uploads/Intune-Remediation-Script-Send-Local-Administrator-Group-Members-to-Log-Analytics.png 1227w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">3. Analyzing the Local Administrator Report</h2>



<p>Once the data is in our log analytics workspace, we use Kusto (KQL) to audit the results. The goal is to separate legitimate domain accounts from unauthorized user accounts that still have the local admin right.</p>



<h3 class="wp-block-heading">Compliance Summary</h3>



<p>This query counts the number of devices where a user is in the administrators group but does not have &#8220;admin&#8221; in their name (filtering out the built-in administrator and domain admins).</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">let allDevices = LocalAdminReport_CL | summarize by DeviceName_s;
let offenderDevices = LocalAdminReport_CL
    | where isnotempty(AdminName_s)
    | where AdminName_s !contains "Admin"
    | summarize by DeviceName_s;
let totalOffenders = offenderDevices 
    | summarize Count = count() 
    | extend Category = "Devices with Local Admin Access";
let compliantDevices = (allDevices
    | join kind=leftanti offenderDevices on DeviceName_s
    | summarize Count = count()
    | extend Category = "Compliant Devices"
);
totalOffenders
| union compliantDevices
| project Category, Count
| order by Category asc
</pre>



<h3 class="wp-block-heading">Detailed Account Audit</h3>



<p>Use this query to select and list every specific account that has been granted local admin permissions in the last 90 days across your computer fleet.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">LocalAdminReport_CL
| where TimeGenerated > ago(90d)
| where isnotempty(AdminName_s)
| where AdminName_s !contains "Admin"
| summarize LatestSeen = max(TimeGenerated) by DeviceName_s, AdminName_s
| order by DeviceName_s asc
</pre>



<h2 class="wp-block-heading">Implementation Tips</h2>



<ul class="wp-block-list">
<li><strong>Intune Deployment:</strong> Set the script to run daily using <strong>Devices &gt; Remediations</strong>. This ensures that if a user is added and then removed, your logs stay accurate.</li>



<li><strong>Filtering:</strong> Adjust the <code>!contains "Admin"</code> logic if your organization uses a different naming standard for authorized admin accounts.</li>



<li><strong>Workbook Visuals:</strong> In Azure Workbooks, use the &#8220;Pie Chart&#8221; renderer for the first query to get an immediate view of your environment&#8217;s health.</li>
</ul>



<h2 class="wp-block-heading">Summary</h2>



<p>Good security isn’t about saying “no” to everything. It’s about knowing what’s actually happening in your environment. With this script and report in place, you get a clear audit trail that shows exactly when someone is added as a local administrator. That way, “temporary” access doesn’t quietly turn into a permanent problem, and you stay in control instead of playing cleanup later.</p>
<p>The post <a rel="nofollow" href="https://cyberillo.com/local-admin-report/">Local Admin Report with Intune and Log Analytics</a> appeared first on <a rel="nofollow" href="https://cyberillo.com">Cyberillo</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cyberillo.com/local-admin-report/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Bulk Add Devices to Azure AD Group Using PowerShell</title>
		<link>https://cyberillo.com/how-to-add-devices-to-azure-ad-group-using-powershell/</link>
					<comments>https://cyberillo.com/how-to-add-devices-to-azure-ad-group-using-powershell/#respond</comments>
		
		<dc:creator><![CDATA[Sylvan Abela]]></dc:creator>
		<pubDate>Thu, 05 Sep 2024 14:22:00 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<guid isPermaLink="false">https://cyberillo.com/?p=3166</guid>

					<description><![CDATA[<p>Learn how to easily add devices to Azure AD security groups in bulk using this step-by-step PowerShell script.</p>
<p>The post <a rel="nofollow" href="https://cyberillo.com/how-to-add-devices-to-azure-ad-group-using-powershell/">How to Bulk Add Devices to Azure AD Group Using PowerShell</a> appeared first on <a rel="nofollow" href="https://cyberillo.com">Cyberillo</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In this post, I&#8217;ll break down a PowerShell script that simplifies adding devices to a specific Azure AD security group by reading from a CSV file. This is particularly useful when onboarding new devices in bulk or organizing devices into groups based on department, location, or security requirements.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>





<h2 class="wp-block-heading">Complete Script</h2>



<pre class="EnlighterJSRAW" data-enlighter-language="powershell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">## How to Bulk Add Devices to Azure AD Group Using PowerShell ##
#░█████╗░██╗░░░██╗██████╗░███████╗██████╗░██╗██╗░░░░░██╗░░░░░░█████╗░
#██╔══██╗╚██╗░██╔╝██╔══██╗██╔════╝██╔══██╗██║██║░░░░░██║░░░░░██╔══██╗
#██║░░╚═╝░╚████╔╝░██████╦╝█████╗░░██████╔╝██║██║░░░░░██║░░░░░██║░░██║
#██║░░██╗░░╚██╔╝░░██╔══██╗██╔══╝░░██╔══██╗██║██║░░░░░██║░░░░░██║░░██║
#╚█████╔╝░░░██║░░░██████╦╝███████╗██║░░██║██║███████╗███████╗╚█████╔╝
#░╚════╝░░░░╚═╝░░░╚═════╝░╚══════╝╚═╝░░╚═╝╚═╝╚══════╝╚══════╝░╚════╝░

# Import the AzureAD module
Import-Module AzureAD

# Login to Azure AD
Connect-AzureAD

# Path to your CSV file
$csvFilePath = "C:\path\to\your\devices.csv"

# Security Group Name
$securityGroupName = "Your-Security-Group-Name"

# Get the Security Group Object ID from the group name
$securityGroup = Get-AzureADGroup -SearchString $securityGroupName
if ($securityGroup -eq $null) {
    Write-Host "Security group not found: $securityGroupName"
    exit
}

$securityGroupId = $securityGroup.ObjectId

# Import the CSV file
$devices = Import-Csv -Path $csvFilePath

# Loop through each device in the CSV
foreach ($device in $devices) {
    $deviceName = $device.DeviceName

    # Get the Device Object ID from the device name
    $deviceObject = Get-AzureADDevice -SearchString $deviceName
    if ($deviceObject -eq $null) {
        Write-Host "Device not found: $deviceName"
        continue
    }

    $deviceId = $deviceObject.ObjectId

    try {
        # Add the device to the security group
        Add-AzureADGroupMember -ObjectId $securityGroupId -RefObjectId $deviceId
        Write-Host "Successfully added Device: $deviceName to the group."
    } catch {
        Write-Host "Failed to add Device: $deviceName. Error: $_"
    }
}

# Disconnect from Azure AD
Disconnect-AzureAD
</pre>



<h2 class="wp-block-heading">Overview of the Script</h2>



<p>So, what does the script do?</p>



<ol class="wp-block-list">
<li>Import devices from a CSV file.</li>



<li>Search for these devices in Azure AD.</li>



<li>Add the devices to a specified security group.</li>



<li>Report success or errors for each device.</li>
</ol>



<h2 class="wp-block-heading">Prerequisites</h2>



<p>Before running the script, ensure the following:</p>



<ul class="wp-block-list">
<li>You have the&nbsp;<strong>AzureAD</strong>&nbsp;PowerShell module installed.</li>



<li>The script is executed by a user with permissions to manage devices and groups in Azure AD.</li>



<li>A CSV file containing device names is available.</li>



<li>The correct security group already exists in Azure AD.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step-by-Step Breakdown</h2>



<h3 class="wp-block-heading">1. Import the Azure AD Module</h3>



<p>The script starts by loading the&nbsp;<strong>AzureAD</strong>&nbsp;module, which contains cmdlets to manage Azure AD resources from PowerShell.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="powershell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Import-Module AzureAD
</pre>



<p>This step is necessary for interacting with Azure AD using PowerShell. If you don’t have the module installed, run:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="powershell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Install-Module AzureAD
</pre>



<h3 class="wp-block-heading">2. Authenticate with Azure AD</h3>



<p>Before performing any Azure AD operations, the script requires the user to authenticate:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="powershell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Connect-AzureAD
</pre>



<p>This prompts the user to enter credentials or use existing session credentials to connect to Azure AD.</p>



<h3 class="wp-block-heading">3. Specify the CSV File Path and Security Group</h3>



<p>You&#8217;ll need a CSV file that lists the devices to be added. The CSV should contain a column titled&nbsp;<strong>DeviceName</strong>, which holds the names of the devices you want to add.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="powershell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$csvFilePath = "C:\path\to\your\devices.csv"
$securityGroupName = "Your-Security-Group-Name"
</pre>



<p>Here,&nbsp;<code>$csvFilePath</code>&nbsp;points to the CSV file and&nbsp;<code>$securityGroupName</code>&nbsp;is the name of the Azure AD security group you want to add the devices to.</p>



<h3 class="wp-block-heading">4. Retrieve the Security Group Object ID</h3>



<p>Azure AD uses unique object IDs for each resource, including security groups. To add devices to a group, the script must first retrieve the Object ID of the target security group:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="powershell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$securityGroup = Get-AzureADGroup -SearchString $securityGroupName
if ($securityGroup -eq $null) {
    Write-Host "Security group not found: $securityGroupName"
    exit
}
</pre>



<p>If the group isn’t found, the script exits with an appropriate message. Otherwise, the script proceeds to store the Object ID of the group in&nbsp;<code>$securityGroupId</code>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="powershell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$securityGroupId = $securityGroup.ObjectId
</pre>



<h3 class="wp-block-heading">5. Import the CSV File</h3>



<p>The devices from the CSV file are imported into a variable&nbsp;<code>$devices</code>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="powershell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$devices = Import-Csv -Path $csvFilePath
</pre>



<p>Each device is stored as a record, and the script processes each device by looping through the records.</p>



<h3 class="wp-block-heading">6. Loop through Devices and Add to Group</h3>



<p>For each device, the script:</p>



<ul class="wp-block-list">
<li>Retrieves the device’s Object ID from Azure AD using the&nbsp;<strong>DeviceName</strong>&nbsp;from the CSV.</li>



<li>Adds the device to the specified security group.</li>



<li>Logs the outcome for each device.</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="powershell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">foreach ($device in $devices) {
    $deviceName = $device.DeviceName
    $deviceObject = Get-AzureADDevice -SearchString $deviceName
    if ($deviceObject -eq $null) {
        Write-Host "Device not found: $deviceName"
        continue
    }

    $deviceId = $deviceObject.ObjectId

    try {
        Add-AzureADGroupMember -ObjectId $securityGroupId -RefObjectId $deviceId
        Write-Host "Successfully added Device: $deviceName to the group."
    } catch {
        Write-Host "Failed to add Device: $deviceName. Error: $_"
    }
}
</pre>



<p>If the device isn’t found in Azure AD, a message is displayed, and the script moves on to the next device. If an error occurs during the addition process, it’s caught and logged.</p>



<h3 class="wp-block-heading">7. Disconnect from Azure AD</h3>



<p>After processing all the devices, the script disconnects from Azure AD:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="powershell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Disconnect-AzureAD
</pre>



<p>This closes the session and ensures no lingering connections remain.</p>
<p>The post <a rel="nofollow" href="https://cyberillo.com/how-to-add-devices-to-azure-ad-group-using-powershell/">How to Bulk Add Devices to Azure AD Group Using PowerShell</a> appeared first on <a rel="nofollow" href="https://cyberillo.com">Cyberillo</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cyberillo.com/how-to-add-devices-to-azure-ad-group-using-powershell/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Expand All Headers in the Azure Portal Service Menu</title>
		<link>https://cyberillo.com/how-to-expand-all-headers-in-the-azure-portal-menu/</link>
					<comments>https://cyberillo.com/how-to-expand-all-headers-in-the-azure-portal-menu/#respond</comments>
		
		<dc:creator><![CDATA[Sylvan Abela]]></dc:creator>
		<pubDate>Thu, 18 Jul 2024 05:46:38 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<guid isPermaLink="false">https://webbytips.com/?p=2709</guid>

					<description><![CDATA[<p>Learn how to quickly expand or collapse all headers in the Azure portal service menu and set the default behaviour for future sessions.</p>
<p>The post <a rel="nofollow" href="https://cyberillo.com/how-to-expand-all-headers-in-the-azure-portal-menu/">How to Expand All Headers in the Azure Portal Service Menu</a> appeared first on <a rel="nofollow" href="https://cyberillo.com">Cyberillo</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>As of recently, the Azure portal service menu on the left-hand side of the screen has been loading with all headers collapsed. While some people might like this because it&#8217;s neater and more concise, I very much prefer having all options visible at all times &#8211; it eliminates the guesswork in trying to determine what option falls under which header.</p>



<h2 class="wp-block-heading">How to expand or collapse all headers directly from the Azure portal service menu</h2>



<p>To expand all headers in the Azure Portal service menu, <strong>click on the up/down double arrow symbol at the top of the menu on the left-hand side of the screen</strong>. This icon allows you to toggle between having the headers expanded or collapsed.</p>



<figure class="wp-block-image size-large is-resized border"><img decoding="async" width="1024" height="467" src="https://cyberillo.com/wp-content/uploads/How-to-expand-all-headers-in-the-Azure-portal-service-menu-1024x467.png" alt="How to expand all headers in the Azure portal service menu" class="wp-image-2710" style="width:840px;height:auto" srcset="https://cyberillo.com/wp-content/uploads/How-to-expand-all-headers-in-the-Azure-portal-service-menu-1024x467.png 1024w, https://cyberillo.com/wp-content/uploads/How-to-expand-all-headers-in-the-Azure-portal-service-menu-600x274.png 600w, https://cyberillo.com/wp-content/uploads/How-to-expand-all-headers-in-the-Azure-portal-service-menu-300x137.png 300w, https://cyberillo.com/wp-content/uploads/How-to-expand-all-headers-in-the-Azure-portal-service-menu-768x350.png 768w, https://cyberillo.com/wp-content/uploads/How-to-expand-all-headers-in-the-Azure-portal-service-menu-1536x700.png 1536w, https://cyberillo.com/wp-content/uploads/How-to-expand-all-headers-in-the-Azure-portal-service-menu.png 1895w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">How to change the default expand/collapse behaviour of the Azure portal service menu</h2>



<p>To change the default expand/collapse behaviour of the Azure portal service menu:</p>



<ol class="wp-block-list">
<li><strong>Navigate to the gear wheel icon</strong> at the top of the screen in the Azure portal to open up the settings.</li>



<li>Go to <strong>Appearance + startup views</strong> from the menu on the left.</li>



<li>Choose between <strong>Collapsed</strong> or <strong>Expanded</strong> in the <strong>Service menu behavior</strong> section.</li>
</ol>



<figure class="wp-block-image size-large border"><img loading="lazy" decoding="async" width="1024" height="464" src="https://cyberillo.com/wp-content/uploads/How-to-change-the-default-behaviour-of-the-Azure-portal-service-menu-1024x464.png" alt="How to change the default behaviour of the Azure portal service menu" class="wp-image-2711" srcset="https://cyberillo.com/wp-content/uploads/How-to-change-the-default-behaviour-of-the-Azure-portal-service-menu-1024x464.png 1024w, https://cyberillo.com/wp-content/uploads/How-to-change-the-default-behaviour-of-the-Azure-portal-service-menu-600x272.png 600w, https://cyberillo.com/wp-content/uploads/How-to-change-the-default-behaviour-of-the-Azure-portal-service-menu-300x136.png 300w, https://cyberillo.com/wp-content/uploads/How-to-change-the-default-behaviour-of-the-Azure-portal-service-menu-768x348.png 768w, https://cyberillo.com/wp-content/uploads/How-to-change-the-default-behaviour-of-the-Azure-portal-service-menu-1536x696.png 1536w, https://cyberillo.com/wp-content/uploads/How-to-change-the-default-behaviour-of-the-Azure-portal-service-menu.png 1906w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>
<p>The post <a rel="nofollow" href="https://cyberillo.com/how-to-expand-all-headers-in-the-azure-portal-menu/">How to Expand All Headers in the Azure Portal Service Menu</a> appeared first on <a rel="nofollow" href="https://cyberillo.com">Cyberillo</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cyberillo.com/how-to-expand-all-headers-in-the-azure-portal-menu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
