Telemetrie in PowerShell: variabelen, privacy en gegevensoverdracht

Laatste update: 17/12/2025
Auteur: Isaac
  • PowerShell Het verzendt anonieme telemetrie bij het opstarten en tijdens de sessie, wat kan worden beheerd via de omgevingsvariabele POWERSHELL_TELEMETRY_OPTOUT.
  • Met PowerShell-specifieke en systeemspecifieke omgevingsvariabelen kunt u privacy-, modulepad-, caching- en uitvoeringsbeleid aanpassen dat door onderliggende processen kan worden overgenomen.
  • Aangepaste telemetriegegevens voor Azure Application Insights kunnen worden getest en geanalyseerd met behulp van PowerShell- of curl-scripts, waarbij netwerk-, TLS- en authenticatiegegevens met Microsoft Entra ID worden geverifieerd.
  • Door deze mechanismen correct te gebruiken, wordt het eenvoudiger om betrouwbare telemetrie toe te voegen aan PowerShell-scripts, terwijl de controle over de beveiliging en gedeelde gegevens behouden blijft.

Telemetrie in PowerShell-scripts

Als je dagelijks met PowerShell werkt en je hoort steeds vaker over... Telemetrie in scripts en sessiesHet is normaal om vragen te hebben: welke gegevens worden er verzonden, waar gaan ze naartoe, hoe schakel je het uit, of zelfs hoe kun je die telemetrie zelf gebruiken om je eigen scripts te debuggen of te monitoren. Dit alles wordt nog belangrijker wanneer je te maken hebt met bedrijfsomgevingen of gevoelige informatie.

In de volgende regels ziet u in detail en in de eenvoudigst mogelijke taal het volgende: Hoe werkt telemetrie in combinatie met PowerShell?Welke rol spelen omgevingsvariabelen, hoe kunt u zich hiervoor afmelden, hoe kunt u handmatig telemetriegegevens verzenden (bijvoorbeeld naar Application Insights) met behulp van PowerShell of curl, en welke typische netwerk-, TLS- of authenticatieproblemen kunnen ervoor zorgen dat er gegevens ontbreken in uw dashboards?

Welke telemetriegegevens verzendt PowerShell standaard?

PowerShell bevat in zijn moderne versies een eigen mechanisme voor basisgebruiksgegevens naar Microsoft verzenden via Application Insights. We hebben het hier niet over de code die je schrijft, maar over de PowerShell-engine zelf wanneer het binaire bestand wordt uitgevoerd. pwsh.

Deze telemetrie helpt Microsoft om beter begrijpen hoe je PowerShell moet gebruiken (versies, platforms, modules, enz.) en geef prioriteit aan nieuwe functies of bugfixes. Voordat de informatie wordt verzonden, wordt deze gecontroleerd. anonimiseert en voegt toe zodat de gebruiker niet direct wordt geïdentificeerd.

Er zijn twee belangrijke momenten waarop gegevens worden verzameld: aan het begin van de sessie y periodiek tijdens de uitvoeringHet is belangrijk om dit gedrag te begrijpen als u maximale controle wilt hebben over wat er vanuit uw omgevingen wordt gedeeld.

Bovendien verzendt de motor deze telemetrie alleen wanneer u de motor inschakelt. pwsh standaard; als PowerShell is ingebed als een engine in een andere hostapplicatieDie initiële telemetrie wordt niet gegenereerd.

Gegevens verzonden bij het starten van pwsh

Wanneer een sessie begint met pwshDe motor verzamelt een kleine maar zeer specifieke set omgevingsgegevens die slechts eenmaal per BootOnder andere de volgende zaken zijn vastgelegd: besturingssysteem en installatiegegevens van PowerShell.

Die eerste fase omvat gegevens zoals: Fabrikant, naam en versie van het besturingssysteem van het platform, evenals de specifieke versie van PowerShell die u momenteel gebruikt, wat helpt om te begrijpen op welke verschillende systemen het wordt gebruikt.

Een ander belangrijk stukje informatie dat wordt verzonden, is de waarde van de omgevingsvariabele POWERSHELL_DISTRIBUTION_CHANNELDit geeft aan via welk kanaal PowerShell is geïnstalleerd (bijv. officieel pakket, repository, enz.). Deze waarde wordt ingesteld door de installatieprogramma's en gebruikers wordt aangeraden deze niet te wijzigen om vertekening van de meetgegevens te voorkomen.

Ook inbegrepen is Application Insights SDK-versie De door PowerShell zelf gebruikte methode bepaalt de geschatte geografische locatie van de host op basis van het IP-adres. parameters doorgegeven aan pwsh zonder hun waarden (d.w.z. parameternamen, maar niet de inhoud) en het effectieve uitvoeringsbeleid van de startende sessie.

Tot slot genereert de engine twee anonieme identificatoren: één Willekeurige GUID per gebruiker en nog een GUID per sessieDit zijn geen directe persoonsgegevens, maar technische identificatoren om sessies en gedragingen te groeperen zonder de werkelijke identiteit prijs te geven.

Telemetriegegevens verzonden tijdens de sessie

Zodra de sessie is gestart, stuurt PowerShell periodiek geaggregeerde gebruiksgegevens om inzicht te krijgen in het gebruik. welke functies worden gebruikt en hoeDit geldt zowel voor de interactieve console als voor andere hosts waarop de engine draait.

Deze gegevens omvatten bijvoorbeeld de het aantal keren dat de API wordt aangeroepen PowerShell.Create(), de lijst met geïmporteerde Microsoft-modules inclusief hun versies of het aantal modules dat het label draagt CrescendoBuiltwat helpt bij het identificeren van het gebruik van bepaalde instrumenten.

Het volgende wordt ook gemeld: namen van de experimentele functies die zijn in- en uitgeschakeldDit is erg handig om te weten welke experimenten de community daadwerkelijk in productie heeft; bovendien wordt de voorkeurswaarde meegestuurd. $PSNativeCommandUseErrorActionPreference (waar, onwaar of niet ingesteld) en het aantal open externe sessies.

Een ander interessant onderdeel is de catalogus van geregistreerde subsystemenPowerShell geeft de namen aan die worden gebruikt voor subsystemen voor automatisch aanvullen (Completion) of algemeen (general), maar als de naam niet op die lijst staat, wordt deze verzonden als anonymous om de privacy te behouden.

Tot slot zijn er tellers opgenomen op suggesties gegenereerd door CommandNotFound en gebruiksstatistieken PowerShellUnsafeAssemblyLoad (inclusief de vraag of het laden succesvol is afgerond of niet), belangrijke aspecten voor het verbeteren van de diagnostiek en de veiligheid.

Hoe schakel ik native PowerShell-telemetrie uit?

Als uw organisatie strikte privacyregels hanteert, kunt u aangeven dat u deze telemetrie niet wilt ontvangen. PowerShell doet dit door de omgevingsvariabele beschikbaar te stellen. POWERSHELL_TELEMETRY_OPTOUT, die u moet instellen voordat u een sessie start.

De erkende waarde voor het uitschakelen van telemetrie kan zijn true, yes o 1Elk van deze varianten geeft de engine de opdracht om geen gebruiksgegevens naar Microsoft te verzenden vanuit dat proces of vanuit onderliggende processen die de omgeving overerven.

Het is belangrijk te begrijpen dat deze configuratie gebaseerd is op entorno-variabelenAls je wilt dat het permanent is, moet je het daarom in het juiste bereik (gebruiker, machine of opstartscripts) definiëren vóórdat je PowerShell start, en niet erna.

Als u vragen hebt over het beheren van deze variabelen, raadpleeg dan de documentatie hierover. over_Omgevingsvariabelen De handleiding voor PowerShell-omgevingsvariabelen helpt je bij het kiezen van de juiste aanpak, afhankelijk van het besturingssysteem.

Houd er ook rekening mee dat de installatiepakketten die PowerShell distribueren, dit automatisch configureren. POWERSHELL_DISTRIBUTION_CHANNEL om het installatiekanaal te onderscheiden. Deze variabele is ook opgenomen in de telemetrie, dus deze mag niet handmatig worden gewijzigd.

  Windows 10-updatefout 0x80244022

Belangrijke omgevingsvariabelen die van invloed zijn op PowerShell

PowerShell behandelt omgevingsvariabelen als een speciaal gegevenstype, altijd in de vorm van overerfbare tekstreeksen door onderliggende processenDit maakt ze ideaal voor het beheren van algemene opties zoals privacy, updates of modulepaden.

De engine zelf definieert een reeks specifieke variabelen, waarvan de volgende eruit springen: POWERSHELL_TELEMETRY_OPTOUT, POWERSHELL_DISTRIBUTION_CHANNEL, POWERSHELL_UPDATECHECK, PSExecutionPolicyPreference, PSModulePath, PSModuleAnalysisCachePath y PSDisableModuleAnalysisCacheCleanup.

En WindowsDeze variabelen kunnen zich bevinden in de machine (systeem), gebruiker of procesbereikHet huidige proces combineert automatisch machine- en gebruikersdefinities, en alle wijzigingen die u in een sessie aanbrengt, zijn alleen van invloed op dat proces, tenzij u ze op een andere manier permanent maakt.

Om machine- of gebruikerswaarden vanuit PowerShell te wijzigen, moet u de volgende methode gebruiken: .NET-klasse System.Environment, wat methoden beschikbaar stelt voor het lezen en schrijven van variabelen binnen die scopes, mits je daarvoor voldoende rechten hebt.

Houd er rekening mee dat omgevingsvariabelen, omdat het tekenreeksen zijn, samengevoegd, leeggemaakt of verwijderd worden Heel eenvoudig, wat erg handig is voor complexe configuratiescripts of automatisering van implementaties.

Manieren om omgevingsvariabelen te openen en te wijzigen in PowerShell

PowerShell biedt verschillende manieren om Omgevingsvariabelen opvragen en wijzigenAfhankelijk van wat je aan het doen bent (script (snelle, complexe module, administratieve taak) u zult geïnteresseerd zijn in het gebruik van een van beide.

De meest directe manier is variabele syntaxis met het voorvoegsel $Env:waarmee je de waarde van een variabele kunt uitlezen of er een nieuwe waarde aan kunt toewijzen, alsof het een gewone PowerShell-variabele is. $Env:windir o $Env:Foo = "Algo".

Daarnaast kunt u gebruikmaken van de omgevingsaanbieder (Env:) met de standaard cmdlets van elementen (Get-Item, New-Item, Set-Item, Remove-Itemenz.), wat zorgt voor een zeer consistente aanpak bij de behandeling van bestandssysteemeenheden.

In scenario's waarin u op machine- of gebruikersniveau wilt werken, of wilt integreren met .NET-code, kunt u gebruikmaken van de volgende methoden. [Environment]::GetEnvironmentVariable() y [Environment]::SetEnvironmentVariable()Met deze methoden kunt u expliciet het bereik kiezen (Process, User o Machine) in Windows-systemen.

Sinds PowerShell 7.5 is er ook een specifiek gedrag: je kunt een variabele instellen op een lege tekenreeks of op $null om het uit de sessie te verwijderen of leeg te maken, met behulp van de volgende syntax: $Env: erdoorheen Set-Item of de methoden van System.Environment.

PowerShell-omgevingsvariabelen met betrekking tot telemetrie en gedrag

Verschillende interne functies van PowerShell zijn afhankelijk van omgevingsvariabelen die fungeren als overerfbare voorkeursvlaggenHiermee kunt u het gedrag van de shell of telemetrie aanpassen zonder dat u de code in elk script hoeft te wijzigen.

De meest voor de hand liggende is POWERSHELL_TELEMETRY_OPTOUTwat, zoals we al hebben gezien, ervoor zorgt dat de native telemetrie van de engine wordt uitgeschakeld wanneer deze is ingesteld op true, yes o 1Om dit effect te laten sorteren, moet het bestaan ​​voordat het PowerShell-proces wordt gestart.

Een andere zeer belangrijke is POWERSHELL_DISTRIBUTION_CHANNELDit veld, dat sinds PowerShell 7.2 automatisch door installatieprogramma's wordt ingevuld om aan te geven hoe het product is geïnstalleerd, is opgenomen in de telemetriegegevens. Handmatige wijziging wordt daarom afgeraden.

veranderlijk POWERSHELL_UPDATECHECK Hiermee wordt bepaald hoe en wanneer update-meldingen worden weergegeven. Accepteert waarden zoals Off Om de functie uit te schakelen, Default voor standaardgedrag of LTS Om alleen meldingen te ontvangen voor versies met uitgebreide ondersteuning.

Bovendien PSExecutionPolicyPreference weerspiegelt het actieve uitvoeringsbeleid in de huidige sessie wanneer geconfigureerd met behulp van de parameter. -ExecutionPolicy, de cmdlet Set-ExecutionPolicy met bereik Processof door de variabele rechtstreeks te bewerken. Deze instelling is met name van invloed op gedownloade of niet-ondertekende scripts op Windows.

En uiteraard wordt het zoekpad voor modules beheerd met PSModulePath, die een door puntkomma's gescheiden lijst opslaat in Windows of een door dubbele punten gescheiden lijst op *nix-platforms, met zowel systeem- als gebruikerslocaties en zelfs paden die door externe installatieprogramma's zijn toegevoegd.

Cache- en moduleanalyse: fijnafstelling

PowerShell onderhoudt een module-analyse cache om zoekopdrachten te versnellen commando's en voorkomt dat je bij elke opstart of zoekopdracht constant alle beschikbare modules moet controleren.

De omgevingsvariabele PSModuleAnalysisCachePath Definieer waar dat cachebestand wordt opgeslagen. Standaard verwijst het naar paden onder $Env:LOCALAPPDATA op Windows of ~/.cache/powershell Op niet-Windows-systemen, met een andere bestandsnaam voor elke installatie.

Als u die locatie wilt wijzigen, moet u deze variabele instellen. voordat je PowerShell startDit verwijst naar een volledig pad (inclusief de bestandsnaam) waar het proces schrijfrechten heeft. De wijzigingen zijn alleen van kracht voor processen die na de wijziging starten.

Als het uw doel is om modulecaching volledig uit te schakelen, kunt u het pad omleiden naar een niet-schrijfbare bestemming, zoals NUL op Windows of /dev/null en LinuxPowerShell zal proberen de cache daarheen te schrijven, wat niet zal lukken, maar er zullen ook geen zichtbare fouten in de sessie verschijnen.

Als aanvulling hierop is er de variabele PSDisableModuleAnalysisCacheCleanupAls je het instelt op 1Het schakelt automatische opschoonprocessen uit die module-items verwijderen die niet meer bestaan, wat handig is in specifieke situaties waarin je die cache niet wilt aanraken.

Andere omgevingsvariabelen die nuttig zijn voor scripts en telemetrie.

Naast de variabelen die specifiek zijn voor PowerShell, is er een reeks systeemomgevingsvariabelen die rechtstreeks van invloed zijn. hoe de scripts worden uitgevoerd en hoe het systeem zich gedraagt terminalvooral in omgevingen met meerdere platformen.

veranderlijk PATH Dit bepaalt in welke mappen naar uitvoerbare bestanden gezocht moet worden, wat essentieel is als je externe binaire bestanden vanuit je PowerShell-scripts wilt starten. In Windows worden mappen gescheiden door... ;terwijl het in Linux of macOS wordt gebruikt :.

Windows bestaat ook. PATHEXTHier worden de extensies weergegeven die direct uitvoerbaar zijn. Als u een scripttaal in dezelfde console wilt uitvoeren (bijvoorbeeld scriptbestanden), kunt u de bijbehorende opdracht gebruiken. .py), moet u de extensie hier toevoegen en deze in het systeem registreren met behulp van tools zoals assoc y ftype van CMD.

Op niet-Windows-platformen past PowerShell zich aan de XDG-conventie aan door gebruik te maken van variabelen. XDG_CONFIG_HOME, XDG_DATA_HOME y XDG_CACHE_HOME voor configuratiepaden, data en cache, wat de integratie met de rest van het systeem vergemakkelijkt.

Voor functies voor kleurenuitvoer en terminalbesturing houdt PowerShell 7.2 en latere versies rekening met de volgende mogelijkheden: TERM y NO_COLORVolgens de waarde van TERM ANSI-sequenties zijn uitgeschakeld of aangepast, en als er sprake is van NO_COLORDe uitvoerstijl wordt geforceerd naar platte tekst zonder kleur.

  Hoe McAfee te verwijderen. Bijgewerkte gids

Logs en de uitvoer van uw scripts Ze beïnvloeden hoe je scriptlogboeken en -uitvoer eruitzien, wat zowel de console-ervaring als de leesbaarheid van vastgelegde telemetrie beïnvloedt wanneer je de uitvoer naar bestanden omleidt.

Praktisch voorbeeld: Sophia-script en privacy- en telemetrie-instellingen

Een van de bekendste voorbeelden in de community van het aanpassen van Windows 10 met PowerShell is Windows 10 Sophia-scriptEen reeks functies gericht op het automatiseren van de configuratie, privacy en verwijdering van overbodige componenten.

Sophia Script biedt onder andere de mogelijkheid om Systeemprivacy en telemetrie aanpassen, schakel geplande diagnostische taken uit, verwijder OneDrive, wijzig het pad van %TEMP% of verplaats gebruikersmappen zoals Desktop, Documenten, DownloadsMuziek, afbeeldingen of video's via interactieve menu's.

Het biedt ook functies voor UWP-apps verwijderen Dit geldt voor alle accounts die een lijst met uitsluitingen respecteren die via WPF-formulieren kan worden geconfigureerd, evenals het uitschakelen van Windows-functies of het verwijderen van systeemmogelijkheden met behulp van visuele wizards.

Een ander interessant aspect is dat het kan Maak taken aan in de Taakplanner. Voor periodieke opschoning, het aanpassen van het Startmenu (items vastmaken of losmaken), het wijzigen van Microsoft Defender-beveiligingsopties zoals gecontroleerde maptoegang of uitsluitingen, en het vernieuwen van pictogrammen, omgevingsvariabelen en de taakbalk zonder Verkenner opnieuw te starten.

Kortom, dit type script laat zien hoe het mogelijk is om, door PowerShell te combineren met telemetrieconfiguraties, omgevingsvariabelen en automatisering, het volgende te bereiken: om het gedrag van een Windows-systeem volledig te modelleren om het aan te passen aan het beleid van een organisatie of aan persoonlijke voorkeuren.

Telemetriegegevens vanuit PowerShell naar Application Insights verzenden

Naast de ingebouwde telemetrie van PowerShell sturen veel applicaties hun eigen monitoringgegevens naar Azure Monitor ToepassingsinzichtenSoms opent u echter de Azure-portal en lijken de grafieken leeg of ontbreken er belangrijke records.

Typische oorzaken zijn meestal configuratiefouten in de SDK of Application Insights-agent, of blokkeringen in het netwerk. punt van inname, beperking of uitsluiting van telemetrie in de pipeline, specifieke Log Analytics-incidenten of problemen bij het opvragen van de API api.applicationinsights.io.

Een zeer praktische aanpak om de bron van het probleem te achterhalen bestaat uit: handmatig een enkel testtelemetrielogboek verzenden vanuit PowerShell of curl. Als die record succesvol in de logtabel van de Application Insights-resource terechtkomt, weet je dat een groot deel van de pipeline werkt.

Wanneer u test vanaf dezelfde machine of omgeving waar uw applicatie draait (bijvoorbeeld de VM of de App Service), controleert u ook of DNS, firewall, TLS en machtigingen blokkeren de weg naar opname niet.

In scenario's waarbij het ingestiepunt is beveiligd met een Microsoft Entra ID (voorheen Azure AD), moet u ervoor zorgen dat de applicatie of het script correct authenticeert met de Entra ID; anders worden telemetriegegevens geweigerd, zelfs als de rest van de instrumentatie correct lijkt.

PowerShell-script om de beschikbaarheidstelemetrie te testen

Om te controleren of het volledige circuit van uw computer naar Application Insights werkt, kunt u een PowerShell-script dat een beschikbaarheidstestresultaat verzendtDit type telemetrie is ideaal omdat het niet onderhevig is aan de bemonsteringsmechanismen bij de inlaat.

Het idee is simpel: je levert een verbindingsketen of een instrumentatiesleutelHet script splitst het op om het innamepunt en de InstrumentationKeygenereert een JSON met een AvailabilityData als voorbeeld en stuurt het mee Invoke-WebRequest naar het corresponderende REST-eindpunt.

Als je alleen de instrumentatiesleutel doorgeeft, bouwt het script een verbindingsreeks met de wereldwijd eindpunt https://dc.services.visualstudio.com/Als u de volledige verbindingsreeks doorgeeft, wordt het daarin gedefinieerde regionale ingestiepunt gebruikt. Als u beide doorgeeft, heeft het punt dat in de verbindingsreeks is gedefinieerd voorrang.

Tijdens de uitvoering, een Tijdstempel in UTC ISO 8601-formaatDe JSON-body wordt gevuld met de testgegevens (duur, locatie, bericht, aanvullende eigenschappen) en het POST-verzoek wordt verzonden. De HTTP 200-respons met itemsReceived gelijk aan itemsAccepted Geeft aan dat het ontvangstpunt het dossier heeft ontvangen en geaccepteerd.

Ga vervolgens naar het tabblad Logboeken van de Application Insights-resource in de Azure-portal, voer een query uit voor het betreffende type en controleer of het voorbeeldlogboek wordt weergegeven. Als dat het geval is, weet u dat het probleem zich hoogstwaarschijnlijk in het logboek bevindt. SDK of agent die uw applicatie gebruikt.

Test telemetrie met curl op Linux of Windows.

Als je wilt testen vanuit een Linux- of macOS-omgeving, of als je liever standaardtools gebruikt in plaats van PowerShell, kun je dezelfde test uitvoeren met curl verstuurt een POST-verzoek met JSON-inhoud naar het Application Insights-eindpunt.

In deze gevallen maak je een vergelijkbare JSON-body aan, met baseType gelijk aan AvailabilityDataUitvoerings-ID, testnaam, duur, succesindicator, locatie, bericht en optionele eigenschappen. Vergeet niet om de instellingen altijd aan te passen. campo time naar een recent merkomdat Application Insights gegevens verwerkt die ouder zijn dan 48 uur.

Voor Linux of macOS bevat het commando doorgaans het volgende: hoofd Content-Type: application/json, de POST-methode, de inline JSON en de URL van het invoerpunt (bijvoorbeeld https://dc.applicationinsights.azure.com/v2.1/trackIn Windows verandert de syntax iets, omdat je aanhalingstekens in de JSON moet escapen wanneer je deze als argument doorgeeft.

Zodra dit is gedaan, controleert u het HTTP-antwoord opnieuw en, als het correct is, gaat u naar de Application Insights-logboeken om te controleren of uw testtelemetrie nu is opgeslagen en kan worden opgevraagd, net zoals bij het PowerShell-script.

Met deze aanpak kunt u in één oogopslag problemen met de SDK-configuratie uitsluiten en u concentreren op... netwerk-, DNS-, TLS-, eindpuntauthenticatie- of steekproefbeleid op basis van de symptomen die u in het antwoord ziet.

  Sysinternals Suite op Windows: wat het is en waar het echt voor dient

PowerShell-script om de telemetrie van verzoeken te testen

Naast beschikbaarheidstests bent u vaak ook geïnteresseerd in het controleren van de HTTP-verzoek telemetrievooral wanneer uw dashboards gebaseerd zijn op inkomende aanvraagstatistieken van een API of webapplicatie.

Hiervoor kunt u een ander PowerShell-script gebruiken dat sterk lijkt op het beschikbaarheidsscript, maar dit keer genereert het een JSON-bestand met baseType gelijk aan RequestDataVelden zoals de aanvraag-ID en de bewerkingsnaam (bijvoorbeeld) worden doorgaans opgenomen. GET /ruta/prueba/), de starttijd, duur, URL, responsstatuscode en HTTP-methode.

Het script volgt dezelfde mechanismen: het ontleedt de verbindingsreeks of instrumentatiesleutel en construeert de ingestie-URL (v2/track), berekent de huidige tijd in UTC, stelt de JSON samen en voert deze uit. Invoke-WebRequest met behulp van de POST-methodeAls je code 200 krijgt en de verwachte inhoud in het antwoord, werkt het ingestieproces.

Een belangrijk punt is dat applicaties wel degelijk beïnvloed kunnen worden door innamebemonsteringsmechanismen Aan de serverzijde. Als u sampling hebt geconfigureerd om de hoeveelheid data te verminderen, ziet u mogelijk niet alle testverzoeken, tenzij u dit tijdelijk uitschakelt of de percentages aanpast.

Zodra uw testlogboek in Application Insights verschijnt, is de volgende stap om te kijken hoe uw code is geinstrumenteerd (SDK, filters, sampling, uitsluitingen, enz.) om te achterhalen waarom echte verzoeken niet zo gemakkelijk worden gelogd als handmatige tests.

Veelvoorkomende SSL/TLS-problemen bij het verzenden van telemetrie

Het is niet ongebruikelijk om fouten tegen te komen bij het uitvoeren van deze testscripts. SSL of TLS tijdens de handshakevooral in beperkte omgevingen of wanneer bedrijfsproxy's het verkeer inspecteren.

Veel Azure-services, waaronder Application Insights, vereisen minimaal TLS 1.2 en specifieke cipher suites om verbindingen te accepteren. Als het systeem of de applicatie standaard TLS 1.0 of 1.1 blijft gebruiken, kan de verbinding mislukken nog voordat de server de JSON verwerkt.

Met PowerShell kunt u ondersteunde protocollen afdwingen door instellingen te configureren. [System.Net.ServicePointManager]::SecurityProtocol vóór de uitvoering Invoke-WebRequestJe kunt SSL3, TLS, TLS 1.1, TLS 1.2 of TLS 1.3 uitproberen om te zien wat in jouw omgeving werkt, hoewel het in een productieomgeving aanbevolen is om de beveiligingsrichtlijnen te volgen.

Als u ook proxy's of firewalls gebruikt die SSL-inspectie uitvoeren, kan de certificaatvalidatie mislukken. Er is een optie om Certificaatverificatie uitschakelen Het creëren van een aangepast beleid dat altijd 'true' retourneert, is iets wat je alleen diagnostisch moet gebruiken en nooit als permanente oplossing.

Wanneer u de standaard TLS-versies wilt wijzigen die door .NET-toepassingen op Windows worden gebruikt, volgt u deze stappen: Officiële TLS-configuratieaanbevelingen in het register. en in het framework zelf, in plaats van verspreide trucjes in de scripts te introduceren.

Authenticatieproblemen bij Microsoft. Voer de ID in bij Application Insights.

Als uw Application Insights-resource is geconfigureerd om alleen te accepteren Authenticatie met Microsoft Enter ID (voorheen Azure AD) telemetrie die wordt verzonden met een instrumentatiesleutel zonder geldige referenties, wordt geweigerd met duidelijke HTTP-fouten.

Een code HTTP 400 met een bericht dat klassieke authenticatie niet wordt ondersteund. Dit betekent meestal dat de resource alleen is gemarkeerd met een Entra ID, maar dat de SDK of het script de oude API aanroept. In dat geval moet u de SDK-configuratie en de gebruikte verbindingsreeks controleren.

Een fout HTTP 401 "Autorisatie vereist" Dit suggereert dat de SDK probeert Entra ID te gebruiken, maar geen geldig token kan verkrijgen; dit kan komen doordat beheerde identiteit niet is ingeschakeld, doordat er referenties ontbreken of door problemen met Azure Identity aan de clientzijde.

De code HTTP 403 "Niet geautoriseerd" Dit geeft aan dat er een token is verkregen, maar dat de gebruikte identiteit onvoldoende machtigingen heeft voor de Application Insights-resource of het abonnement. In dit geval dient u de toegangsrechten te controleren en ervoor te zorgen dat de identiteit minimaal de rol 'Monitoring Metrics Publisher' heeft.

Afhankelijk van de taal (Node.js, Pythonenz.), is het raadzaam om de te activeren interne SDK-logboeken Of raadpleeg de Azure Identity-logboeken om precies te zien in welke fase van de authenticatie de fout optreedt en met welk bericht.

Telemetrie, scripts en best practices in praktijksituaties

Dit alles betekent dat, wanneer je wilt Voeg telemetrie toe aan scripts in PowerShellJe hebt twee niveaus om te beheren: enerzijds de automatische telemetrie van de engine zelf, en anderzijds de expliciete telemetrie die je naar systemen zoals Application Insights of andere bestemmingen stuurt.

Op native niveau is het essentieel om te weten hoe het werkt. POWERSHELL_TELEMETRY_OPTOUTwelke gegevens aan het begin en tijdens de sessie worden verzameld, en hoe variabelen zoals POWERSHELL_DISTRIBUTION_CHANNEL o POWERSHELL_UPDATECHECK om wereldwijd gedrag te beheersen.

Wat betreft je scripts, kun je gebruikmaken van omgevingsvariabelen en de provider. Env:de methoden van System.Environment en tools zoals Sophia Script voor Pas privacy-, route-, cache- en uitvoeringsbeleid aan.terwijl u uw processen implementeert om meetgegevens en logboeken naar externe services te verzenden.

Door handmatige telemetrietests te combineren met PowerShell en curl, TLS-protocollen te monitoren en authenticatie correct te configureren met Microsoft Entra ID, is het mogelijk om het volgende te bereiken: een robuuste en betrouwbare telemetrie-pipeline zelfs in sterk gecontroleerde bedrijfsomgevingen.

Als je begrijpt hoe deze hele telemetrielaag is georganiseerd, van omgevingsvariabelen tot cloudgegevensverwerking, wordt het veel gemakkelijker om een ​​beslissing te nemen. welke hendels indrukken Als uw Azure-grafieken of -logboeken op een dag om onverklaarbare redenen niet meer worden bijgewerkt.