To be honest, i struggled to understand the usecases behind the Powershell Scripts feature.
Technically, i get it. It gives me the possbility to perform tasks on remote managed workstation using a powershell script.
However, from the Intune portal, i could not find a proper way to leverage the feature with a relevant reporting more than « Succeded » or « Failed ». Especially because there is no way to re-run the script manually, so what’s the point ?
I couldn’t find the usecases more than oneshots actions. That was before i called API.
My simple script
I deploy a PS script on my managed workstations to get the local users :


I’m using a very simple script here, but you’ll get the potential at the end.
Get output with Graph API
Let’s navigate into the PS Scripts API in Microsoft Intune : https://graph.microsoft.com/beta/deviceManagement/deviceManagementScripts
You can grab the PS Script ID either from Graph Explorer or directly in the URL.


Let’s dig a bit further by adding the script id. I also want to know more about the deployment of the script. My query results as :
https://graph.microsoft.com/beta/deviceManagement/deviceManagementScripts/$scriptid/deviceRunStates

Using the Invoke-RestMethod in a powershell script :

Yes indeed, i have my output as : $scriptresults.value.resultmessage !
By leveraging the resultmessage you can get any ouput, your error messages, command results, registry key values, files content and more.
I’m just sad i can’t do it from the Intune portal directly. But it’s still a way to get my output and that’s cool !
Another tip for the Powershell Scripts feature
I wanted to know more about the deployment on each workstation of my PS Script.
I went deeper in the API using this : https://graph.microsoft.com/beta/deviceManagement/deviceManagementScripts/7ccbd36e-2f90-4ea6-b792-3ab8e9ad1518/deviceRunStates?$expand=managedDevice
Using the expand, i can retrieve the workstations details and the PS script deployment state associated :

Used in a powershell script :

You get details about the deployment status and the workstations which are targeted by the script. Nice to have !
In my opinion, this Powershell Script feature reach his full potentiall using Microsoft Graph. Otherwise is a nice way to run one shot actions.
Un avis sur « My thoughts on the Powershell Scripts feature using MS Graph »