Använda PowerShell-skript på Windows-enheter i Intune

Använd Microsoft Intune-hanteringstillägget för att ladda upp PowerShell-skript i Intune. Kör sedan dessa skript på Windows-enheter. Hanteringstillägget förbättrar MDM och gör det enklare att gå över till modern hantering.

Obs!

Information om Intune -hanteringstillägget för Windows finns i Intune -hanteringstillägget för Windows.

Innan du börjar

  • Skript inställda på användarkontext med administratörsbehörighet kör PowerShell som standard under administratörsbehörighet.

  • Slutanvändarna behöver inte logga in på enheten för att köra PowerShell-skript.

  • Intune Management Extension söker efter varje omstart efter eventuella nya skript eller ändringar. När du har tilldelat principen till Microsoft Entra -grupperna körs PowerShell skriptet och körningsresultatet rapporteras. När skriptet körs körs det inte igen om det inte sker en ändring i skriptet eller principen. Om skriptet misslyckas försöker Intune hanteringstillägget skriptet igen tre gånger för de kommande tre på varandra följande incheckningarna av Intune Management Extension.

  • PowerShell-skript som tilldelats enheten körs för varje ny användare som loggar in, förutom på SKU:er med flera sessioner där användarincheckning är inaktiverat.

  • PowerShell-skript körs innan Win32-appar körs. Med andra ord körs PowerShell-skript först. Win32-appar körs sedan.

  • PowerShell-skript når tidsgränsen efter 30 minuter.

Viktigt

Metodtips för sekretessmedvetenhet när du använder PowerShell-skript och reparationsskript är:

  • Ta inte med någon typ av känslig information i skript (till exempel lösenord)
  • Inkludera inte personuppgifter i skript
  • Använd inte skript för att samla in personliga data från enheter
  • Följ alltid metodtipsen för sekretess

Relaterad information finns i Reparationer.

Förhandskrav

Viktigt

Skript som distribueras till klienter som kör Intune Management Extension kan inte köras om enhetens systemklocka är mycket inaktuell med månader eller år. När systemklockan har uppdaterats körs skriptet som förväntat.

Skapa en skriptprincip och tilldela den

  1. Logga in på Microsoft Intune administrationscenter.

  2. Välj Enheter>, skript och åtgärder:>>PlattformsskriptAddWindows>10 och senare.

    Skärmbild som visar hur du skapar ett nytt skript för en Windows-enhet.

  3. I Grundläggande anger du följande egenskaper och väljer Nästa:

    • Namn: Ange ett namn för PowerShell-skriptet.
    • Beskrivning: Ange en beskrivning för PowerShell-skriptet. Denna inställning är valfri, men rekommenderas.
  4. I Skriptinställningar anger du följande egenskaper och väljer Nästa:

    • Skriptplats: Bläddra till PowerShell-skriptet. Skriptet måste vara mindre än 200 kB (ASCII).

    • Kör det här skriptet med de inloggade autentiseringsuppgifterna: Välj Ja (standard) om du vill köra skriptet med användarens autentiseringsuppgifter på enheten. Välj Nej om du vill köra skriptet i systemkontexten. Många administratörer väljer Ja. Om skriptet måste köras i systemkontexten väljer du Nej.

    • Kontroll av skriptsignatur: Välj Ja (standard) om skriptet måste signeras av en betrodd utgivare. Välj Nej om det inte finns något krav på att skriptet ska vara signerat.

    • Kör skript i 64-bitars PowerShell-värd: Välj Ja om du vill köra skriptet i en 64-bitars PowerShell-värd på en 64-bitars klientarkitektur. Välj Nej (standard) kör skriptet på en 32-bitars PowerShell-värd.

      När du anger Ja ellerNej använder du följande tabell för nya och befintliga principbeteenden:

      Köra skript i 64-bitars värd Klientarkitektur Nytt skript Befintligt principskript
      Nej 32-bitars Stöd för 32-bitars PowerShell-värd Kan bara köras i 32-bitars PowerShell-värd, som fungerar på 32- och 64-bitarsarkitekturer.
      Ja 64-bitars Kör skript i 64-bitars PowerShell-värd för 64-bitarsarkitekturer. När skriptet körs på 32-bitars körs det på en 32-bitars PowerShell-värd. Kör skript i 32-bitars PowerShell-värd. Om den här inställningen ändras till 64-bitars öppnas skriptet (det körs inte) på en 64-bitars PowerShell-värd och rapporterar resultatet. När skriptet körs på 32-bitars körs det i 32-bitars PowerShell-värden.
  5. Välj Omfångstaggar. Omfångstaggar är valfria. Använda rollbaserad åtkomstkontroll och omfångstaggar för distribuerad IT har mer information.

    Så här lägger du till en omfångstagg:

    • Välj Välj omfångstaggar> och välj en befintlig omfångstagg i listan >Välj.

    • När du är klar väljer du Nästa.

  6. Välj uppgifter>Välj vilka grupper som ska inkluderas. En befintlig lista över Microsoft Entra -grupper visas.

    • Markera en eller flera grupper som innehåller de användare vars enheter tar emot skriptet. Välj Välj. De grupper du väljer visas i listan och får din princip.

      Obs!

      PowerShell-skript i Intune kan riktas till Microsoft Entra enhetssäkerhetsgrupper eller Microsoft Entra användarsäkerhetsgrupper. Men vid mål för arbetsplatsanslutna (WPJ) enheter kan endast Microsoft Entra enhetssäkerhetsgrupper användas (användarmål ignoreras).

    • Välj Nästa.

      Tilldela eller distribuera PowerShell-skript till enhetsgrupper i Microsoft Intune

  7. I Granska + lägg till visas en sammanfattning av de inställningar som du har konfigurerat. Välj Lägg till för att spara skriptet. När du väljer Lägg till distribueras principen till de grupper som du väljer.

Scenario – Det gick inte att köra skriptet

08:00

  • Incheckning
  • Kör skript ConfigScript01
  • Skriptet misslyckas

09:00

  • Incheckning
  • Kör skript ConfigScript01
  • Skriptet misslyckas (antal återförsök = 1)

KLOCKAN 10

  • Incheckning
  • Kör skript ConfigScript01
  • Skriptet misslyckas (antal återförsök = 2)

Klockan 11

  • Incheckning
  • Kör skript ConfigScript01
  • Skriptet misslyckas (antal återförsök = 3)

12 PM

  • Incheckning
  • Inga andra försök görs att köra ConfigScript01-skriptet.
  • Om inga andra ändringar görs i skriptet görs inga andra försök att köra skriptet.

Övervaka körningsstatus

Du kan övervaka körningsstatusen för PowerShell-skript för användare och enheter i portalen.

I PowerShell-skript väljer du skriptet som ska övervakas, väljer Övervaka och väljer sedan någon av följande rapporter:

  • Enhetsstatus
  • Användarstatus

Obs!

Enhetsstatusexporter från Intune administrationscenter för plattformsskript använder nu Intune Export API och CSV-kolumnnamnen överensstämmer med API-schemat.

Ta bort ett skript

I PowerShell-skript högerklickar du på skriptet och väljer Ta bort.

Vanliga problem och lösningar

Problem: PowerShell-skript körs inte

Möjliga lösningar:

  • PowerShell-skripten körs inte vid varje inloggning. De kör:

    • När skriptet tilldelas till en enhet

    • Om du ändrar skriptet laddar du upp det och tilldelar skriptet till en användare eller enhet

      Tips

      Microsoft Intune Management Extension är en tjänst som körs på enheten, precis som alla andra tjänster som visas i appen Services (services.msc). När en enhet har startats om kan den här tjänsten startas om och söka efter tilldelade PowerShell-skript med Intune-tjänsten. Om tjänsten Microsoft Intune Management Extension är inställd på Manuell kanske inte tjänsten startas om när enheten startats om.

  • Kontrollera att enheterna är anslutna till Microsoft Entra ID. Enheter som endast är registrerade med din arbetsplats eller organisation i Microsoft Entra ID får inte skripten.

  • Bekräfta att Intune-hanteringstillägget har laddats ned till %ProgramFiles(x86)%\Microsoft Intune Management Extension.

  • Skripten kan inte köras på Surface Hub eller Windows i S-läge.

  • Granska loggarna och se om det finns några fel. Se Tilläggsloggar för Intune-hanteringstillägg (i den här artikeln).

  • Vid möjliga behörighetsproblem kontrollerar du att egenskaperna för PowerShell-skriptet är inställda Run this script using the logged on credentialspå . Kontrollera även att den inloggade användaren har rätt behörighet för att köra skriptet.

  • Du kan isolera skriptproblem genom att:

    • Granska PowerShell-körningskonfigurationen på dina enheter. Mer information finns i körningsprincipen för PowerShell .

    • Kör ett exempelskript med hjälp av Intune-hanteringstillägget. Skapa till exempel katalogen C:\Scripts och ge alla full kontroll. Kör följande skript:

      write-output "Script worked" | out-file c:\Scripts\output.txt
      

      Om det lyckas bör output.txt skapas, och bör innehålla texten "Skript fungerade".

    • Om du vill testa skriptkörning utan Intune kör du skripten i systemkontot med hjälp av psexec-verktyget lokalt:

      psexec -i -s

    • Om skriptet rapporterar att det lyckades, men det faktiskt inte lyckades, är det möjligt att antivirustjänsten kan sandbox-ange AgentExecutor. Följande skript rapporterar alltid ett fel i Intune. Som ett test kan du använda det här skriptet:

      Write-Error -Message "Forced Fail" -Category OperationStopped
      mkdir "c:\temp"
      echo "Forced Fail" | out-file c:\temp\Fail.txt
      

      Om skriptet rapporterar ett lyckat försök kontrollerar AgentExecutor.log du felet. Om skriptet körs ska längden vara >2.

    • För att samla in .error och .output kör följande kodfragment skriptet via AgentExecutor till PowerShell x86 (C:\Windows\SysWOW64\WindowsPowerShell\v1.0). Loggarna sparas så att du kan granska dem. Kom ihåg att Intune Management Extension rensar loggarna när skriptet har körts:

      $scriptPath = read-host "Enter the path to the script file to execute"
      $logFolder = read-host "Enter the path to a folder to output the logs to"
      $outputPath = $logFolder+"\output.output"
      $errorPath =  $logFolder+"\error.error"
      $timeoutPath =  $logFolder+"\timeout.timeout"
      $timeoutVal = 60000
      $PSFolder = "C:\Windows\SysWOW64\WindowsPowerShell\v1.0"
      $AgentExec = "C:\Program Files (x86)\Microsoft Intune Management Extension\agentexecutor.exe"
      &$AgentExec -powershell  $scriptPath $outputPath $errorPath $timeoutPath $timeoutVal $PSFolder 0 0
      

Problem: Varför körs skript trots att Windows inte längre hanteras?

När en Windows-enhet med tilldelade skript inte längre hanteras tas IME:n inte bort omedelbart. IME upptäcker att Windows inte hanteras vid nästa IME-incheckning (vanligtvis var 8:e timme) och avbryter skriptkörningar. Under tiden kan alla lokalt sparade skript köras. När IME inte kan checka in försöker det checka in igen i upp till 24 timmar (enhetens aktiveringstid) och tar sedan bort sig själv från Windows-enheten.

Nästa steg

Övervaka och felsök dina profiler.