Month: October 2024
how can i split or divide a dataset into its different parts (an electroencephalogram [EEG] of 7680 samples into 16 pieces or channels)
i already got an answer for how to plot the eeg sample i got from
http://brain.bio.msu.ru/eeg_schizophrenia.htm which is basically 7680 samples on 16 channels etc etc etc
https://www.mathworks.com/matlabcentral/answers/2125536-i-need-to-know-if-its-possible-to-plot-a-certain-number-of-datas-and-then-plot-the-next-in-another-p?s_tid=prof_contriblnk
but now i need to do a fourier transform and due to the fact that 7680 is not a power of base ^2 it means that doing a fourier transform would lead to the transform of the entire row of 7680 data samples turned into 8192 to be transformed, thus leading to me not being able to use the plotting the 16 channels code properly [i don’t have access to the computer where i have the matlab code but instead of looking like the 16 channels one above the other, it looks like a snake line that goes up right up right up right etc etc etc]
sooooooo what i mean to ask is if there is a way to divide or split the data in 16 parts and do the fourier transform in those 16 parts and then plot those parts (in any way like via division or separation after a limit etc), i mainly need the divide and transforming, the plotting i will be able to manage if that isn’t answered
thank you all in advance for reading my questioni already got an answer for how to plot the eeg sample i got from
http://brain.bio.msu.ru/eeg_schizophrenia.htm which is basically 7680 samples on 16 channels etc etc etc
https://www.mathworks.com/matlabcentral/answers/2125536-i-need-to-know-if-its-possible-to-plot-a-certain-number-of-datas-and-then-plot-the-next-in-another-p?s_tid=prof_contriblnk
but now i need to do a fourier transform and due to the fact that 7680 is not a power of base ^2 it means that doing a fourier transform would lead to the transform of the entire row of 7680 data samples turned into 8192 to be transformed, thus leading to me not being able to use the plotting the 16 channels code properly [i don’t have access to the computer where i have the matlab code but instead of looking like the 16 channels one above the other, it looks like a snake line that goes up right up right up right etc etc etc]
sooooooo what i mean to ask is if there is a way to divide or split the data in 16 parts and do the fourier transform in those 16 parts and then plot those parts (in any way like via division or separation after a limit etc), i mainly need the divide and transforming, the plotting i will be able to manage if that isn’t answered
thank you all in advance for reading my question i already got an answer for how to plot the eeg sample i got from
http://brain.bio.msu.ru/eeg_schizophrenia.htm which is basically 7680 samples on 16 channels etc etc etc
https://www.mathworks.com/matlabcentral/answers/2125536-i-need-to-know-if-its-possible-to-plot-a-certain-number-of-datas-and-then-plot-the-next-in-another-p?s_tid=prof_contriblnk
but now i need to do a fourier transform and due to the fact that 7680 is not a power of base ^2 it means that doing a fourier transform would lead to the transform of the entire row of 7680 data samples turned into 8192 to be transformed, thus leading to me not being able to use the plotting the 16 channels code properly [i don’t have access to the computer where i have the matlab code but instead of looking like the 16 channels one above the other, it looks like a snake line that goes up right up right up right etc etc etc]
sooooooo what i mean to ask is if there is a way to divide or split the data in 16 parts and do the fourier transform in those 16 parts and then plot those parts (in any way like via division or separation after a limit etc), i mainly need the divide and transforming, the plotting i will be able to manage if that isn’t answered
thank you all in advance for reading my question fft, sfft, fourier transform, eeg, electroencephalogram, plotting, plot, channel, fast fourier transform MATLAB Answers — New Questions
My compatibility tab is not showing
I was trying to export large video files that could not be emailed to myself (which is what i was previously doing.) from an iPad to an Android phone that has no access to the internet, but when i try to copy paste the file, the laptop refuses to move any file to the phone. This has nothing to do with the fact that i am trying to move files from an Apple device to an Android one, as i am not trying to transfer the files wirelessly and it accesses the files on both devices perfectly fine (with the exception of the video files from the iPad taking ages to/not playing on the media player). And it’s not a storage problem either, as i cleared some files off of the phone to make room for the videos. I did some digging and found some advice on this hub saying to allow the file to run as administrator through the properties tab when you right click on your file and it will allow the file to copy-paste to your selected device. But my compatibility tab is nowhere to be found after i click the properties tab (as seen in the screenshot.). Everything that i find that tells me how to fix this issue says i need to go to the compatibility tab in properties and run compatibility troubleshooting, which, as you can see, i cannot do. I am getting really confused and would love some friendly advice.
file windowI was trying to export large video files that could not be emailed to myself (which is what i was previously doing.) from an iPad to an Android phone that has no access to the internet, but when i try to copy paste the file, the laptop refuses to move any file to the phone. This has nothing to do with the fact that i am trying to move files from an Apple device to an Android one, as i am not trying to transfer the files wirelessly and it accesses the files on both devices perfectly fine (with the exception of the video files from the iPad taking ages to/not playing on the media player). And it’s not a storage problem either, as i cleared some files off of the phone to make room for the videos. I did some digging and found some advice on this hub saying to allow the file to run as administrator through the properties tab when you right click on your file and it will allow the file to copy-paste to your selected device. But my compatibility tab is nowhere to be found after i click the properties tab (as seen in the screenshot.). Everything that i find that tells me how to fix this issue says i need to go to the compatibility tab in properties and run compatibility troubleshooting, which, as you can see, i cannot do. I am getting really confused and would love some friendly advice. Read More
Adding a Custom Test to the Maester Tenant Analysis Tool
The Maester tool is a great way to generate a security assessment for a Microsoft 365 tenant. Being able to create custom Maester tests makes it even better. In this article, we explain how to create a custom Maester test that reads the Entra ID Groups policy to report if users are allowed to create new Microsoft 365 groups (and teams).
https://office365itpros.com/2024/10/07/custom-maester-test/
The Maester tool is a great way to generate a security assessment for a Microsoft 365 tenant. Being able to create custom Maester tests makes it even better. In this article, we explain how to create a custom Maester test that reads the Entra ID Groups policy to report if users are allowed to create new Microsoft 365 groups (and teams).
https://office365itpros.com/2024/10/07/custom-maester-test/ Read More
Azure scheduled task powershell script not running on remote app but runs on full desktop
Hello,
Just wondering if anyone has any thoughts or can help. I am running a powershell script to map a drive on an azure virtual desktop. The script will map the drive if I log in to a full desktop. If I login to a remote app the script does not map the drive. I can see the script window pop-up, but the drive does not get mapped. I’ve tried both Azure authentication and storage account keys.
It is an old app and trying to use the locally mapped drives (provided by the RDP App) will cause the session to hang for around 15 minutes as I believe it’s trying to use local storage to create the report. Local storage takes seconds.
Thanks
Hello,Just wondering if anyone has any thoughts or can help. I am running a powershell script to map a drive on an azure virtual desktop. The script will map the drive if I log in to a full desktop. If I login to a remote app the script does not map the drive. I can see the script window pop-up, but the drive does not get mapped. I’ve tried both Azure authentication and storage account keys.It is an old app and trying to use the locally mapped drives (provided by the RDP App) will cause the session to hang for around 15 minutes as I believe it’s trying to use local storage to create the report. Local storage takes seconds.Thanks Read More
Web content filtering for specific devices
Hello,
Kindly i need to know why device groups is not appeared in defender –> settings –> endpoints?
because we want to configure web content filtering for some devices
we have business premimium license
asset rule management is visible in place instead of device groups
Regards,
Hello, Kindly i need to know why device groups is not appeared in defender –> settings –> endpoints?because we want to configure web content filtering for some deviceswe have business premimium licenseasset rule management is visible in place instead of device groups Regards, Read More
R2024b cannot reproduce documented example result
When I am ready to use imufilter, "Tune imufilter to Optimize Orientation Estimate",the current latest version R2024b cannot reproduce the documented example results? Please fix it in time!
TEST in MATLAB online and desktop MATLAB
ld = load(‘imufilterTuneData.mat’);
qTrue = ld.groundTruth.Orientation; % true orientation
fuse = imufilter;
qEstUntuned = fuse(ld.sensorData.Accelerometer, …
ld.sensorData.Gyroscope);
% reset(fuse);
cfg = tunerconfig(‘imufilter’);
tune(fuse, ld.sensorData, ld.groundTruth, cfg)
qEstTuned = fuse(ld.sensorData.Accelerometer, …
ld.sensorData.Gyroscope);
dUntuned = rad2deg(dist(qEstUntuned, qTrue));
dTuned = rad2deg(dist(qEstTuned, qTrue));
rmsUntuned = sqrt(mean(dUntuned.^2))
rmsTuned = sqrt(mean(dTuned.^2))
N = numel(dUntuned);
t = (0:N-1)./ fuse.SampleRate;
plot(t, dUntuned, ‘r’, t, dTuned, ‘b’);
legend(‘Untuned’, ‘Tuned’);
title(‘imufilter – Tuned vs Untuned Error’)
xlabel(‘Time (s)’);
ylabel(‘Orientation Error (degrees)’);When I am ready to use imufilter, "Tune imufilter to Optimize Orientation Estimate",the current latest version R2024b cannot reproduce the documented example results? Please fix it in time!
TEST in MATLAB online and desktop MATLAB
ld = load(‘imufilterTuneData.mat’);
qTrue = ld.groundTruth.Orientation; % true orientation
fuse = imufilter;
qEstUntuned = fuse(ld.sensorData.Accelerometer, …
ld.sensorData.Gyroscope);
% reset(fuse);
cfg = tunerconfig(‘imufilter’);
tune(fuse, ld.sensorData, ld.groundTruth, cfg)
qEstTuned = fuse(ld.sensorData.Accelerometer, …
ld.sensorData.Gyroscope);
dUntuned = rad2deg(dist(qEstUntuned, qTrue));
dTuned = rad2deg(dist(qEstTuned, qTrue));
rmsUntuned = sqrt(mean(dUntuned.^2))
rmsTuned = sqrt(mean(dTuned.^2))
N = numel(dUntuned);
t = (0:N-1)./ fuse.SampleRate;
plot(t, dUntuned, ‘r’, t, dTuned, ‘b’);
legend(‘Untuned’, ‘Tuned’);
title(‘imufilter – Tuned vs Untuned Error’)
xlabel(‘Time (s)’);
ylabel(‘Orientation Error (degrees)’); When I am ready to use imufilter, "Tune imufilter to Optimize Orientation Estimate",the current latest version R2024b cannot reproduce the documented example results? Please fix it in time!
TEST in MATLAB online and desktop MATLAB
ld = load(‘imufilterTuneData.mat’);
qTrue = ld.groundTruth.Orientation; % true orientation
fuse = imufilter;
qEstUntuned = fuse(ld.sensorData.Accelerometer, …
ld.sensorData.Gyroscope);
% reset(fuse);
cfg = tunerconfig(‘imufilter’);
tune(fuse, ld.sensorData, ld.groundTruth, cfg)
qEstTuned = fuse(ld.sensorData.Accelerometer, …
ld.sensorData.Gyroscope);
dUntuned = rad2deg(dist(qEstUntuned, qTrue));
dTuned = rad2deg(dist(qEstTuned, qTrue));
rmsUntuned = sqrt(mean(dUntuned.^2))
rmsTuned = sqrt(mean(dTuned.^2))
N = numel(dUntuned);
t = (0:N-1)./ fuse.SampleRate;
plot(t, dUntuned, ‘r’, t, dTuned, ‘b’);
legend(‘Untuned’, ‘Tuned’);
title(‘imufilter – Tuned vs Untuned Error’)
xlabel(‘Time (s)’);
ylabel(‘Orientation Error (degrees)’); sensorfusion, imu MATLAB Answers — New Questions
converting and shifting photo from osciloscope
Hello, I have an osciloscope photo attached.As you can see I have two signals going from -1ms to 1ms.
Is there a way In Matlab I can extract the data from these plots into CSV format so the X axes will be will be 0 to 2ms?
Thanks.Hello, I have an osciloscope photo attached.As you can see I have two signals going from -1ms to 1ms.
Is there a way In Matlab I can extract the data from these plots into CSV format so the X axes will be will be 0 to 2ms?
Thanks. Hello, I have an osciloscope photo attached.As you can see I have two signals going from -1ms to 1ms.
Is there a way In Matlab I can extract the data from these plots into CSV format so the X axes will be will be 0 to 2ms?
Thanks. osciloscope, plot, csv MATLAB Answers — New Questions
Update Mysql table using mym
I am connected to a database using mym. I want to update row based on conditions the sql for that would be
update dbname.dbtable
set Name = ‘A’
where Age = 20
What is the easiest most elegant way to do that on MATLAB? I want to update table in a MATLAB script where some calculations are being done.I am connected to a database using mym. I want to update row based on conditions the sql for that would be
update dbname.dbtable
set Name = ‘A’
where Age = 20
What is the easiest most elegant way to do that on MATLAB? I want to update table in a MATLAB script where some calculations are being done. I am connected to a database using mym. I want to update row based on conditions the sql for that would be
update dbname.dbtable
set Name = ‘A’
where Age = 20
What is the easiest most elegant way to do that on MATLAB? I want to update table in a MATLAB script where some calculations are being done. mysql MATLAB Answers — New Questions
Configuring CycloneDDS for communication with ROS 2 in Docker Container
Hello,
I’m using the Matlab ROS Toolbox in combination with ROS 2 running inside of WSL2+Docker. For different reasons I’m using CycloneDDS as the middleware.
The issue is, that I can neither discover Matlab topics from Docker nor Docker topics from Matlab.
I’ve tried to configure CycloneDDS similar to how FastDDS is configured here. However, I can’t figure out how to tell Matlab which config file to use for CycloneDDS.
The issues pesists with the docker containers running both on net=host as well as net=bridge. Also the discovery seems to work with Maltab using FastDDS (which is not a feasible solution for me).
I appreciate any help on this topic!
ROS Distro: IronHello,
I’m using the Matlab ROS Toolbox in combination with ROS 2 running inside of WSL2+Docker. For different reasons I’m using CycloneDDS as the middleware.
The issue is, that I can neither discover Matlab topics from Docker nor Docker topics from Matlab.
I’ve tried to configure CycloneDDS similar to how FastDDS is configured here. However, I can’t figure out how to tell Matlab which config file to use for CycloneDDS.
The issues pesists with the docker containers running both on net=host as well as net=bridge. Also the discovery seems to work with Maltab using FastDDS (which is not a feasible solution for me).
I appreciate any help on this topic!
ROS Distro: Iron Hello,
I’m using the Matlab ROS Toolbox in combination with ROS 2 running inside of WSL2+Docker. For different reasons I’m using CycloneDDS as the middleware.
The issue is, that I can neither discover Matlab topics from Docker nor Docker topics from Matlab.
I’ve tried to configure CycloneDDS similar to how FastDDS is configured here. However, I can’t figure out how to tell Matlab which config file to use for CycloneDDS.
The issues pesists with the docker containers running both on net=host as well as net=bridge. Also the discovery seems to work with Maltab using FastDDS (which is not a feasible solution for me).
I appreciate any help on this topic!
ROS Distro: Iron ros2, cyclonedds MATLAB Answers — New Questions
Failed to download the third-party software: AEK Rev2 Project Files
Post Content Post Content aek rev2 project files MATLAB Answers — New Questions
Office365 imap issue
While configuring IMAP, we are getting below errors attached in the screenshots.
The PHP INI file has “IMAP” enabled.
Our passwords are correct.
We have also checked –
Server SettingsSSL/TLS SettingsFirewall/AntivirusPHP Extensions (php-imap)
While configuring IMAP, we are getting below errors attached in the screenshots. The PHP INI file has “IMAP” enabled. Our passwords are correct. We have also checked – Server SettingsSSL/TLS SettingsFirewall/AntivirusPHP Extensions (php-imap) Read More
Default values non apparent when we add a document in the library
We added default value for some column in the library settings. But when we add a new document or when we create a new document, these values don’t appear at all. What is the point of default value if they don’t appear automatically? Can you help with this matter ? Thanks!
We added default value for some column in the library settings. But when we add a new document or when we create a new document, these values don’t appear at all. What is the point of default value if they don’t appear automatically? Can you help with this matter ? Thanks! Read More
Cross Forest Contact and distribution group migration
Being in the process of Cross-forest migrating users and mailboxes we’re looking for a way to migrate the following objects between the forests.
_ Contacts
_ Dynamic distribution Groups
_ Distribution groups
We’re using ADMT for the migration
thanks
Being in the process of Cross-forest migrating users and mailboxes we’re looking for a way to migrate the following objects between the forests._ Contacts_ Dynamic distribution Groups_ Distribution groups We’re using ADMT for the migrationthanks Read More
android rd client can’t input chinese on the sony TV.
android rd client can’t input chinese on the sony TV.
it can input english.
it only input ‘a’ that can show chinese.
android rd client can’t input chinese on the sony TV.it can input english.it only input ‘a’ that can show chinese. Read More
How to use the Copilot Wave 2 in PowerPoint
The release of the second wave of Copilot also enriches Microsoft PowerPoint, bringing the so-called Narrative Builder.
The user starting from a description and existing files can easily create a presentation.
In addition, Copilot is able to apply the same template used to be aligned with the corporate brand.
#MicrosoftCopilot #Copilot #AI #Microsoft365 #MPVbuzz #PowerPoint
The release of the second wave of Copilot also enriches Microsoft PowerPoint, bringing the so-called Narrative Builder.
The user starting from a description and existing files can easily create a presentation.
In addition, Copilot is able to apply the same template used to be aligned with the corporate brand.
#MicrosoftCopilot #Copilot #AI #Microsoft365 #MPVbuzz #PowerPoint Read More
Announcing the winners of RAGHack 2024!
Best Overall: DocAssistant.Charty
Best in PostgreSQL: Football-Analysis-Copilot
Best in Azure SQL: UniChatbot
Best in Cosmos DB: Discord Community Agent
Best in Azure AI Search: Manufacturing Support Bot
See: Video | Code | Submission
Best in Python: StoryWeave
Best in .NET: ContosoTravelAgency
Best in Java: Paper Mentor AI
Best in Javascript: Learning Path Certifications Builder
Best in Azure AI Studio: MyFitnessBuddy – AI powered Fitness Assistant
Microsoft Tech Community – Latest Blogs –Read More
Create an Azure Cosmos DB for MongoDB vCore cluster by using the Azure portal – Free Tier
I’m Suniti, a Microsoft Learn Student Ambassador, and in this blog, we’ll explore how to create and know to run workloads using Azure Cosmos DB by setting up a MongoDB vCore cluster with the free tier.
In this QuickStart, you create a new Azure Cosmos DB for MongoDB vCore cluster. This cluster contains all your MongoDB resources: databases, collections, and documents. The cluster provides a unique endpoint for various tools and SDKs to connect to Azure Cosmos DB and perform everyday operations.
Prerequisites :
An Azure Account with Active Subscription. Create an Account here.
Understanding basic terminologies:
Azure Subscription – An active Azure subscription is a logical container that allows users to provision resources in Azure, such as databases, virtual machines, and more.
Resource Groups – In Azure, a resource group is a logical container that holds related resources for an Azure solution. Resource groups are used to manage resources as a single entity based on lifecycle and security.
Resource – A manageable item that is available through Azure. Virtual machines, storage accounts, web apps, databases, and virtual networks are examples of resources.
Cluster – A cluster in Azure refers to a group of interconnected virtual machines (VMs) or physical servers that work together to perform a specific task or workload
Create a vCore Cluster
Create a MongoDB cluster by using Azure Cosmos DB for MongoDB vCore.
Sign in to Azure Portal
Create a Resource Group
Select Resource groups
Select Create
Enter the following values:
Subscription: Select your Azure subscription
Resource group: Enter a new resource group name
Region Select an Azure location
Select Review + Create
Select Create
Create Azure Cosmos DB Resource
Search and Select Azure Cosmos DB resource. > Choose “Create” from Menu panel.
Select “Azure Cosmos DB for MongoDB“.
Select the Architecture – vCore cluster (Recommended) for this blog
Enter the following values :
Subscription : Pick your existing Azure subscription.
Resource Group : Select the resource group that you create above.
Cluster name : Enter a name for your Azure Cosmos DB for MongoDB cluster.
Select “Free Tier”.
Location : Select the location closest to you.
MongoDB version : Go for the latest version of MongoDB.
Setup Administrator account : Create an admin user account and password. Which you will use in your API to access the database.
Select Next: Global distribution (preview).
Click Next: Networking. Under the Firewall rules section on the Networking tab, select Allow public access from Azure services and resources within Azure to this cluster. Additionally, add a firewall rule to grant access to your client device or applications for connecting to the cluster.
Hit “Review + Create” > “Create”.
Review the settings you provide, and then select Create. It takes a few minutes to create the cluster. Wait for the portal page to display Your deployment is complete before moving on.
Select Go to resource to go to the Azure Cosmos DB for MongoDB cluster page.
Congratulations, you’ve successfully created your first vCore Cluster with Cosmos DB for MongoDB!
Key Benefits of Azure Cosmos DB for MongoDB Free Tier
Zero Upfront Costs: With the free tier, you can get started with Azure Cosmos DB for MongoDB without any initial financial commitment, allowing you to explore and experiment for as long as you need without worrying about costs.
Effortless Onboarding: Setting up is simple—just choose the “Free Tier” option from the dropdown menu during cluster provisioning. This streamlined process ensures that you can get started quickly and easily.
Generous Storage (32GB): The free tier offers a substantial 32GB of storage, providing ample space to handle evaluations or small-scale production workloads without the risk of running out of disk space.
Seamless Upgrade Path: As your needs grow, upgrading to a paid tier is hassle-free. You can transition smoothly while keeping your data, connection strings, and firewall settings intact, ensuring that scaling your application is a smooth and uninterrupted process.
What are the options to migrate data from MongoDB to vCore-based Azure Cosmos DB for MongoDB?
1. Azure Data Studio ( Online )
The Azure Cosmos DB for MongoDB migration extension assists in migrating your MongoDB workloads to Azure Cosmos DB. With this extension, you can:
Conduct a comprehensive assessment of your workload to identify the steps needed for migrating to vCore-based Azure Cosmos DB for MongoDB.
Execute the migration by selecting specific databases and collections, smoothly transitioning them to vCore-based Azure Cosmos DB for MongoDB.
You can use the native MongoDB tools such as mongodump/mongorestore, mongoexport/mongoimport to migrate datasets offline (without replicating live changes) to vCore-based Azure Cosmos DB for MongoDB offering.
Conclusion
In this blog, we’ve explored how to create an Azure Cosmos DB for MongoDB vCore cluster using the free tier, highlighting its key benefits like zero upfront costs, effortless onboarding, and seamless scalability. Azure Cosmos DB offers a powerful, fully managed solution to help you scale your MongoDB workloads with ease. Whether you’re just starting out or looking to migrate existing workloads, Cosmos DB provides the flexibility and performance needed for modern application development.
Thank you for following along, and feel free to explore the resources section for more information on migrating your data and making the most of Azure Cosmos DB
Resources
Quickstart: Create a new cluster – Azure Cosmos DB for MongoDB vCore | Microsoft Learn
Azure Cosmos DB for MongoDB migration extension (preview) – Azure Data Studio | Microsoft Learn
Azure Cosmos DB for MongoDB migration extension (preview) – Azure Data Studio | Microsoft Learn
Migrate MongoDB using MongoDB native tools – Azure Cosmos DB for MongoDB vCore | Microsoft Learn
Azure Cosmos DB for MongoDB migration extension (preview) – Azure Data Studio | Microsoft Learn
Azure Cosmos DB for MongoDB migration extension FAQ (preview) – Azure Data Studio | Microsoft Learn
Create Your Azure Free Account Or Pay As You Go | Microsoft Azure
Use Azure Cosmos DB for Free
Azure Cosmos DB for MongoDB – YouTube
GitHub – Azure-Samples/azure-cosmosdb-mongodb-api-nodejs-bookstore: CosmosDB Bookstore is a sample books catalog application that demonstrates the capabilities of Azure Cosmos DB API for MongoDB.
Microsoft Tech Community – Latest Blogs –Read More
Adding a Custom Test to the Maester Tool
Create a Custom Maester Test with PowerShell and the Graph
I last wrote about the Maester tool in April 2024. At that time, Maester had just been released as a community-based framework for automated testing of a Microsoft 365 tenant against well-established frameworks like MITRE. Maester has come a long way since, and it was great to catch up with Merill Fernando and Thomas Naunheim at the TEC 2024 conference in Dallas to assess its current state.
Merill has great information-packed demos, even if they are delivered at dazzling speed. The ability to create custom Maester tests grabbed my attention this time around. Out-of-the-box, Maester comes with a set of tests based on Microsoft recommendations for Entra ID and another based on the Entra ID Security Config Advisor (EIDSCA), another community-driven project.
Regular Maester Tests
Great value can be derived from the results generated by a Maester using its default tests. You might not agree with some of the measured conditions. Last time round, my tenant failed 42 tests. The latest run failed 97. For example, my tenant failed test MS.AAD.3.7 because I don’t have a conditional access policy in place to require managed devices for authentication (Figure 1).
Insisting on managed devices is important in some contexts and less important in others. This underlines the need for Maester reports to be treated as a guideline rather than creating the absolute necessity to pass all tests. No one gets extra brownie points for achieving a perfect Maester score, and it might be the case that achieving such a state might be more painful than useful, which can sometimes be the case when seeking better tenant security. As I have noted in the past, cranking up the signin frequency interval enforced by a conditional access policy might seem like a good idea, but it’s not if forcing users to constantly reauthenticate gets in the way of real work.
In any case, the results of a Maester run creates a nice benchmark to measure a tenant against. How the tenant administrators decide to use that benchmark is entirely up to them.
Creating a Custom Maester Test
Coming back to the topic of this article, tenants can add custom tests for Maester to assess. Essentially, if you can grab some data like tenant settings or another type of value by running a Graph API request in PowerShell, a test can assess the data returned by the Graph and either pass or fail.
As an example, I wrote a test to check that the ability for end users to create new Microsoft 365 groups (and teams) is disabled. Allowing people to create new groups is a one-way ticket to team sprawl and excessive digital rot, so it seems like a good thing to test. The setting is in the Entra ID Groups policy and can be fetched and assessed as shown in the code below.
Describe “RAEntraConfig” -Tag “Privilege”, “Office 365 for IT Pros” {
It “OFFICE365.Test01: Check ‘Group creation should be blocked for non-authorized users” {
$Uri = “https://graph.microsoft.com/beta/settings”
$Result = Invoke-MgGraphRequest -Method Get -Uri $Uri
$GroupSettings = $Result.Value | Where-Object { $_.displayName -eq ‘Group.Unified’ }
$GroupCreationControl = $GroupSettings.values | Where-Object {$_.Name -eq ‘EnableGroupCreation’} | Select-Object -ExpandProperty Value
If ($GroupCreationControl -eq $false) {
$TestResult = $true
} else {
$TestResult = $false
}
If ($null -ne $TestResult) {
$TestResult | Should -Be $true -Because “User ability to create Microsoft 365 Groups is disabled.”
}
}
}
Only one test is present, but you can add multiple tests to the same file. Maester can process custom tests separately or include them in a full run. Figure 2 shows the output from the custom test. It’s functional and not as pretty or informative as Figure 1, but any administrator will know what the test measures.
If you develop a test that you think would be of interest to other organizations, you can create an issue in the Maester GitHub repository to explain the test and share the code.
Stretching and Expanding Maester
Best practice is a nebulous concept at best. In the cloud, things often change faster than the proponents of best practice can cope. Having a community-driven project like Maester available to assess your tenant is a good way to get a snapshot of how the tenant measures up against security frameworks. Being able to add your own custom Maester tests makes the tool so much better.
Learn how to exploit the data available to Microsoft 365 tenant administrators through the Office 365 for IT Pros eBook. We love figuring out how things work.
Gerber File export function on the PCB Antenna Application made all my previously saved work go missing.
I was using the Gerber File export function on the PCB Antenna Application and all my previously saved work is no longer in the MATLAB folder and I do not know where it is or what happened to it. I checked the deleted files on MATLAB drive and it is empty. I was using Gerber Export and tried to export as a PCB writer and selected the file name to where my MATLAB documents were saved.I was using the Gerber File export function on the PCB Antenna Application and all my previously saved work is no longer in the MATLAB folder and I do not know where it is or what happened to it. I checked the deleted files on MATLAB drive and it is empty. I was using Gerber Export and tried to export as a PCB writer and selected the file name to where my MATLAB documents were saved. I was using the Gerber File export function on the PCB Antenna Application and all my previously saved work is no longer in the MATLAB folder and I do not know where it is or what happened to it. I checked the deleted files on MATLAB drive and it is empty. I was using Gerber Export and tried to export as a PCB writer and selected the file name to where my MATLAB documents were saved. gerber, antenna, files MATLAB Answers — New Questions