Felsökning av PowerShell -skript

<img style="”float:" right;” src="”https://www.recastsoftware.com/wp-content/uploads/2021/10/Recast-Logo-Dark_Horizontal.svg”" alt="&quot;Bild&quot;" height="”43″" width="”150″">

ConfigMgr & Intune PowerShell Script felsökning

Nyligen har jag arbetat med flera projekt som jag har haft för att felsöka PowerShell -skript på platser som jag inte hade tillgång till för att "se" vad som hände. Detta var faktiskt mycket fördelaktigt för att förbättra mina powershell -förmågor, eftersom jag insåg att jag behövde inkludera mycket mer loggning och hitta ytterligare sätt att testa.

På den här sidan är målet att täcka flera metoder för att hjälpa till med felsökningsskript, när det inte är så enkelt som att öppna powershell och köra det som din inloggade användare.

Här är några vanliga platser där du kommer att stöta på skript som du inte har mest synlighet i och som kan göra felsökning svår.

  • Intune Scripts
    • Lägg till skript

      • Körs från 'C: Program Files (x86) Microsoft Intune Management ExtensionPoliciesScripts'
  • ConfigMgr
  • Schemalagda aktiviteter

För det mesta kommer du att använda skripten som SYSTEM genom att använda dessa verktyg. Schemalagda uppgifter som du kan ställa in för att köras som SYSTEM, eller ett servicekonto, som jag rekommenderar att utnyttja grupphanterade servicekonton.

Metoder jag tyckte var till hjälp:

  • PowerShell -transkription
  • Anpassad loggning
  • Utnyttjar Software Center
    • Tillhandahåller en uppgiftssekvensmiljö för att testa skript
    • Starta ISE eller VSCode som SYSTEM för att testa skript

Demos

Aktivera PS -transkription med körskript

Vi ska skapa ett körskript som möjliggör PowerShell -transkription, du kan hitta
Skriptfil på GitHub

Du kan sedan kopiera RAW -koden eller sätta länken till RAW -koden i importen:

Felsökning 01

Felsökning 02

Eftersom vi vet att vi bara vill ha två alternativ för parametern, låter vi förbefolka dem, klicka på redigera, välj datatyp: Lista, lägg sedan till Aktivera och inaktivera:

Felsökning 03

När du är klar kommer det att se ut så här:
Felsökning 04

Nu kan vi välja en testmaskin och köra skriptet med Aktivera värde:
Felsökning 05

Och slutfört med Aktivera:
Felsökning 06

Låt oss titta på klienten, det här är vår anpassade loggning inbyggd i skriptet vi just lagt till:

Felsökning 07

För att sedan generera en PowerShell -transkriptionslogg körde jag körskriptet igen. I den mapp vi specificerade för att vara värd för transkriptionsloggarna hittar vi:
Felsökning 08

Konfigurationsobjekt

Felsökning 09

Uppgiftssekvensskript

Först ska jag visa exempel på några skript och hur de fungerar.

Så även om det inte är tekniskt sett ett manus, körs ett powershell -kommando från ett kommandoradssteg:
Felsökning 10

Där ser du att när du kör ett powershell -kommando via kommandoraden, skapas inget skript tillfälligt för att köra det, till skillnad från ett inbäddat skript:

Felsökning 12

Och här tar ett skript in i ett paket, som förväntat, slut på paketplatsen:

Felsökning 11

Återigen utnyttjade vi PowerShell-transkription för att se var skripten körs ifrån, sammanhanget de körs under och skrivutmatningen som genereras av skriptet.

I samklang

Med InTune har jag skapat två skript, ett för att aktivera PowerShell -transkription och ett för att inaktivera.

En sak jag har lärt mig om att använda PowerShell Script med Intune, du vet aldrig när det ska köras eller hur ofta. Det är därför loggning är så viktigt. Jag använder CMTrace Style -inloggning i alla mina skript baserat på Ryan Ephgraves funktion.

En annan sak jag har lärt mig om att skapa skript för Intune, designa dem som ett konfigurationsobjekt. Vad menar jag med det? Skriptet måste följa en mall.

  • Upptäckt
    • Gäller skriptet för den här maskinen. Medan du är säker kan du bygga grupper i Intune, men att bygga logik i skriptet är alltid en bra idé.
  • Upptäckt
    • Kontrollerar om maskinen redan är kompatibel (om slutmålet för ditt manus redan har uppnåtts)
  • Sanering
    • Kör skriptinnehållet för att uppnå önskat mål

För Intune ska jag distribuera Enable-PSTranscription.ps1 Manus

Felsökning 13

Första gången skriptet körs loggar det med funktionen och konfigurerar PS Transcription, som sedan kommer att göra ytterligare loggning varje gång efter det.

I bilden nedan kan du se loggfilen som skapats av skriptet själv varje gång skriptet körs med loggningen, och i den nedre loggen, transkriptionsloggen för det utförandet av skriptet.

Felsökning 14

Om jag tittar på loggningen som jag har lagt till i skriptet kan du se hur det följer upptäckten och åtgärden. Första gången den körs upptäcker den att den är "Icke-kompatibel" och sedan "Åtgärder" genom att aktivera transkription. Den andra körningen, den upptäcker att den redan är kompatibel och går ut.

Att följa den här metoden hjälper till att minska belastningen på dina Intune -hanterade enheter, särskilt för komplicerade skript som kan binda en slutpunktsenhet ett tag varje gång skriptet körs.

Felsökningstips

  • Anpassad loggning - Utnyttja en funktion som CMTraceLog
    • Massor av felhantering och skrivutmatningar
  • Vet hur du pausar en uppgiftssekvens i WinPE & Full OS
  • Vet hur du testar PowerShell som system
  • Se till att din AV har dessa områden uteslutna

Om Recast Software
1 av 3 organisationer som använder Microsoft Configuration Manager förlitar sig på Right Click Tools för att visa sårbarheter och åtgärda snabbare än någonsin tidigare.
Ladda ner gratis verktyg
Begär pris

Se hur Right Click Tools förändrar hur system hanteras.

Öka produktiviteten direkt med vår begränsade, kostnadsfria Community Edition.

Kom igång med Right Click Tools idag:

Dela detta:

Support

  • Detta fält används för valideringsändamål och ska lämnas oförändrat.

Kontakt

  • Detta fält används för valideringsändamål och ska lämnas oförändrat.
sv_SESwedish