- PowerShell Šalje anonimnu telemetriju pri pokretanju i tokom sesije, a može se kontrolisati putem varijable okruženja POWERSHELL_TELEMETRY_OPTOUT.
- Varijable okruženja specifične za PowerShell i sistem omogućavaju vam da prilagodite politike privatnosti, putanja modula, keširanja i izvršavanja koje mogu naslijeđivati podređeni procesi.
- Prilagođena telemetrija za Azure Application Insights može se testirati i dijagnosticirati pomoću PowerShell ili Curl skripti, provjeravajući mrežu, TLS i autentifikaciju s Microsoft Entra ID-om.
- Ispravno korištenje ovih mehanizama olakšava dodavanje pouzdane telemetrije PowerShell skriptama, a istovremeno održava kontrolu nad sigurnošću i dijeljenim podacima.

Ako svakodnevno radite sa PowerShell-om i počnete čuti za Telemetrija u skriptama i sesijamaNormalno je imati pitanja: koji se podaci šalju, gdje idu, kako ih onemogućiti ili čak kako sami koristiti tu telemetriju za otklanjanje grešaka ili praćenje vlastitih skripti. Sve ovo postaje još važnije kada imate posla s korporativnim okruženjima ili osjetljivim informacijama.
U sljedećim redovima vidjet ćete, detaljno i najjednostavnijim mogućim jezikom, Kako funkcioniše telemetrija povezana sa PowerShell-om?Koju ulogu igraju varijable okruženja, kako se možete isključiti, kako ručno slati telemetriju (na primjer, Application Insights) pomoću PowerShella ili Curla i koji tipični problemi s mrežom, TLS-om ili autentifikacijom mogu uzrokovati nedostatak podataka na vašim nadzornim pločama.
Koju telemetriju PowerShell šalje izvorno?
PowerShell, u svojim modernim verzijama, uključuje vlastiti mehanizam za slanje osnovnih podataka o korištenju kompaniji Microsoft putem Application Insights. Ne govorimo o kodu koji pišete, već o samom PowerShell mehanizmu kada se binarna datoteka izvršava. pwsh.
Ova telemetrija pomaže Microsoftu da bolje razumijevanje korištenja PowerShella (verzije, platforme, moduli, itd.) i dajte prioritet novim funkcijama ili ispravkama grešaka. Prije slanja, informacije se anonimizira i dodaje tako da korisnik ne bude direktno identifikovan.
Postoje dva ključna trenutka u kojima se prikupljaju podaci: na početku sesije y periodično tokom izvršenjaVažno je razumjeti ovo ponašanje ako želite imati maksimalnu kontrolu nad onim što se dijeli iz vaših okruženja.
Nadalje, motor šalje ovu telemetriju samo kada pokrenete pwsh standardno; ako je PowerShell ugrađen kao mehanizam u drugu host aplikacijuTa početna telemetrija se ne generira.
Podaci poslani prilikom pokretanja pwsh-a
Kada sesija počinje sa pwshMotor prikuplja mali, ali vrlo specifičan skup informacija o okolini koje se šalju samo jednom bootIzmeđu ostalog, zabilježeno je sljedeće: operativni sistem i detalji instalacije iz PowerShell-a.
Ta početna faza uključuje podatke kao što su proizvođač, naziv i verzija operativnog sistema platforme, kao i specifičnu verziju PowerShella koju trenutno koristite, što pomaže u razumijevanju kombinacije sistema na kojima se koristi.
Još jedna ključna informacija koja se šalje je vrijednost entorno varijabla POWERSHELL_DISTRIBUTION_CHANNELOvo označava kanal putem kojeg je PowerShell instaliran (npr. službeni paket, repozitorij itd.). Ovu vrijednost postavljaju instalateri, a korisnicima se savjetuje da je ne mijenjaju kako bi izbjegli iskrivljavanje metrike.
Također je uključeno Verzija Application Insights SDK-a koju koristi sam PowerShell, približno geografsko područje hosta na osnovu IP adrese, parametri proslijeđeni pwsh bez njihovih vrijednosti (tj. nazivi parametara, ali ne i sadržaj) i efektivna politika izvršavanja početne sesije.
Konačno, mehanizam generira dva anonimna identifikatora: jedan Slučajni GUID po korisniku i drugih GUID po sesijiOvo nisu direktni lični podaci, već tehnički identifikatori za grupiranje sesija i ponašanja bez otkrivanja pravog identiteta.
Telemetrija poslana tokom sesije
Nakon što sesija započne, PowerShell periodično šalje agregirane informacije o korištenju kako bi razumio koje se funkcije koriste i kakoOvo se odnosi i na interaktivnu konzolu i na ostale hostove koji pokreću engine.
Ovi podaci uključuju, na primjer, broj poziva API-ja PowerShell.Create(), popis uvezenih Microsoft modula zajedno s njihovim verzijama ili broj modula koji nose oznaku CrescendoBuiltšto pomaže u identifikaciji upotrebe određenih alata.
Također se izvještava o sljedećem: nazivi uključenih i isključenih eksperimentalnih funkcijaOvo je veoma korisno za saznanje koje eksperimente zajednica zapravo ima u produkciji; pored toga, šalje se i vrijednost preferencije. $PSNativeCommandUseErrorActionPreference (tačno, netačno ili nije postavljeno) i broj otvorenih udaljenih sesija.
Još jedan zanimljiv dio je katalog registrovani podsistemiPowerShell označava imena koja se koriste za podsisteme automatskog dovršavanja (Completion) ili općenito (general), ali ako ime nije na toj listi, šalje se kao anonymous radi očuvanja privatnosti.
Konačno, brojači su uključeni na prijedlozi generirani od strane CommandNotFound i statistika korištenja PowerShellUnsafeAssemblyLoad (uključujući i da li je učitavanje uspješno završeno ili ne), ključni aspekti za poboljšanje dijagnostike i sigurnosti.
Kako onemogućiti izvornu PowerShell telemetriju
Ako vaša organizacija ima stroge politike privatnosti, možete navesti da ne želite da se ova telemetrija šalje. PowerShell to radi izlaganjem varijable okruženja. POWERSHELL_TELEMETRY_OPTOUT, koje morate postaviti prije početka bilo koje sesije.
Prepoznata vrijednost za onemogućavanje telemetrije može biti true, yes o 1Bilo koja od ovih varijanti govori mehanizmu da ne šalje podatke o korištenju Microsoftu iz tog procesa ili iz podređenih procesa koji nasljeđuju okruženje.
Važno je shvatiti da je ova konfiguracija zasnovana na Varijable okruženjaStoga, ako želite da bude postojan, morate ga definirati u odgovarajućem opsegu (korisnik, mašina ili skripte za pokretanje) prije pokretanja PowerShella, a ne nakon toga.
Ako imate bilo kakvih pitanja o tome kako upravljati ovim varijablama, pogledajte samu dokumentaciju na o_varijablama_okruženja a vodič za varijable okruženja PowerShella pomaže vam da odaberete pravi pristup ovisno o operativnom sistemu.
Također, imajte na umu da instalacijski paketi koji distribuiraju PowerShell automatski konfigurišu POWERSHELL_DISTRIBUTION_CHANNEL kako bi se razlikovao instalacijski kanal. Ova varijabla je također uključena u telemetriju, tako da je ne treba ručno manipulirati.
Ključne varijable okruženja koje utiču na PowerShell
PowerShell tretira varijable okruženja kao poseban tip podataka, uvijek u obliku nasljeđivi tekstualni nizovi od strane podređenih procesaZbog toga su idealni za kontrolu globalnih opcija kao što su privatnost, ažuriranja ili putanje modula.
Sam motor definira niz specifičnih varijabli, među kojima se ističu sljedeće: POWERSHELL_TELEMETRY_OPTOUT, POWERSHELL_DISTRIBUTION_CHANNEL, POWERSHELL_UPDATECHECK, PSExecutionPolicyPreference, PSModulePath, PSModuleAnalysisCachePath y PSDisableModuleAnalysisCacheCleanup.
En WindowsOve varijable mogu postojati u opseg mašine (sistema), korisnika ili procesaTrenutni proces automatski kombinuje definicije mašine i korisnika, a sve promjene koje napravite u sesiji utiču samo na taj proces, osim ako ih ne učinite trajnim na drugi način.
Da biste izmijenili vrijednosti na nivou mašine ili korisnika iz PowerShella, morat ćete koristiti .NET klasa System.Environment, koji otkriva metode za čitanje i pisanje varijabli u tim opsezima, pod uslovom da imate dovoljne dozvole za to.
Imajte na umu da, budući da su stringovi, varijable okruženja mogu biti spojen, ispražnjen ili uklonjen prilično lako, što je vrlo korisno za složene konfiguracijske skripte ili automatizaciju implementacije.
Načini pristupa i izmjene varijabli okruženja u PowerShellu
PowerShell nudi nekoliko načina za upiti i modifikacija varijabli okruženjaU zavisnosti od toga šta radite (skripta (brz, složen modul, administrativni zadatak) bit ćete zainteresirani za korištenje jednog ili drugog.
Najdirektniji način je sintaksa varijable s prefiksom $Env:što vam omogućava da pročitate vrijednost varijable ili joj dodijelite novu vrijednost kao da je u pitanju bilo koja druga PowerShell varijabla, na primjer $Env:windir o $Env:Foo = "Algo".
Osim toga, možete koristiti pružatelj usluga okruženja (Env:) sa standardnim cmdletsima od elemenata (Get-Item, New-Item, Set-Item, Remove-Itemitd.), što daje vrlo konzistentan pristup tretmanu jedinica datotečnog sistema.
U scenarijima gdje želite raditi na nivou mašine ili korisnika, ili integrirati s .NET kodom, imate metode [Environment]::GetEnvironmentVariable() y [Environment]::SetEnvironmentVariable()Ove metode vam omogućavaju da eksplicitno odaberete opseg (Process, User o Machine) u Windows sistemima.
Od verzije PowerShell 7.5, postoji i specifično ponašanje: možete postaviti varijablu na prazan niz ili na $null da ga ispraznite ili uklonite iz sesije, koristeći sintaksu $Env: kao kroz Set-Item ili metode System.Environment.
PowerShell varijable okruženja povezane s telemetrijom i ponašanjem
Nekoliko internih funkcija PowerShella zavisi od varijabli okruženja koje djeluju kao nasljedne zastavice preferencijaOvo vam omogućava da prilagodite ponašanje ljuske ili telemetrije bez potrebe za promjenom koda u svakoj skripti.
Najočigledniji je POWERSHELL_TELEMETRY_OPTOUTšto, kao što smo već vidjeli, služi za onemogućavanje izvorne telemetrije motora kada je postavljena na true, yes o 1Da bi ovo stupilo na snagu, mora postojati prije pokretanja PowerShell procesa.
Još jedna veoma važna stvar je POWERSHELL_DISTRIBUTION_CHANNELOvo polje, koje instalateri automatski popunjavaju od verzije PowerShell 7.2 kako bi naznačili kako je proizvod instaliran, uključeno je u telemetrijske podatke, tako da se ne preporučuje ručna izmjena.
Promenljiva POWERSHELL_UPDATECHECK Kontrolira kako i kada se prikazuju obavještenja o ažuriranjima. Prihvata vrijednosti kao što su Off Da biste onemogućili funkciju, Default za standardno ponašanje ili LTS da biste primali obavještenja samo za verzije s proširenom podrškom.
Sa druge strane, PSExecutionPolicyPreference odražava aktivnu politiku izvršavanja u trenutnoj sesiji kada je konfigurirana pomoću parametra -ExecutionPolicy, cmdlet Set-ExecutionPolicy s opsegom Processili direktnim uređivanjem varijable. Ova postavka posebno utiče na preuzete ili nepotpisane skripte na Windowsu.
I, naravno, putanja pretrage modula je kontrolisana sa PSModulePath, koji pohranjuje listu odvojenu tačkom-zarezom u Windowsu ili listu odvojenu dvotačkom na *nix platformama, sa sistemskim i korisničkim lokacijama, pa čak i putanjama koje dodaju eksterni instaleri.
Analiza keša i modula: fino podešavanje
PowerShell održava keš za analizu modula ubrzati pretrage naredbe i izbjeći stalnu provjeru svih dostupnih modula pri svakom pokretanju ili pretraživanju.
Varijabla okruženja PSModuleAnalysisCachePath Definirajte gdje se ta keš datoteka pohranjuje. Podrazumevano, ona pokazuje na putanje ispod $Env:LOCALAPPDATA na Windows ili ~/.cache/powershell Na sistemima koji nisu Windows, sa različitim nazivom datoteke za svaku instalaciju.
Ako želite promijeniti tu lokaciju, morate postaviti ovu varijablu prije pokretanja PowerShellapokazujući na punu putanju (uključujući naziv datoteke) gdje proces ima dozvole za pisanje. Promjene stupaju na snagu samo za procese koji se pokrenu nakon promjene.
Ako vam je cilj potpuno onemogućiti keširanje modula, možete usmjeriti putanju do odredišta na koje se ne može pisati, kao što je NUL na Windows ili /dev/null en LinuxPowerShell će pokušati tamo zapisati keš memoriju, neće uspjeti, ali također neće generirati nikakve vidljive greške u sesiji.
Ovo dopunjuje varijabla PSDisableModuleAnalysisCacheCleanupAko ga postavite na 1Onemogućava automatsko čišćenje koje uklanja unose modula koji više ne postoje, što je korisno u određenim scenarijima gdje ne želite dirati taj keš.
Druge varijable okruženja korisne za skripte i telemetriju
Pored onih specifičnih za PowerShell, postoji skup varijabli sistemskog okruženja koje direktno utiču na kako se skripte izvršavaju i kako se sistem ponaša terminalposebno u multiplatformskim okruženjima.
Promenljiva PATH Ovo određuje u kojim direktorijima treba tražiti izvršne datoteke, što je ključno ako ćete pokretati vanjske binarne datoteke iz PowerShell skripti. U Windowsu su direktoriji odvojeni sa... ;dok se u Linuxu ili macOS-u koristi :.
Windows takođe postoji PATHEXTOvo navodi ekstenzije koje se smatraju direktno izvršnim. Ako želite da se skriptni jezik izvršava u istoj konzoli (na primjer, skriptne datoteke), možete koristiti odgovarajuću naredbu. .py), morat ćete ovdje uključiti ekstenziju i registrirati je u sistemu pomoću alata kao što su assoc y ftype od CMD.
Na platformama koje nisu Windows, PowerShell se prilagođava XDG konvenciji koristeći varijable. XDG_CONFIG_HOME, XDG_DATA_HOME y XDG_CACHE_HOME za konfiguracijske putanje, podatke i keš memoriju, što olakšava integraciju s ostatkom sistema.
Za funkcije izlaza boja i kontrolu terminala, poštuju se PowerShell 7.2 i novije verzije. TERM y NO_COLORPrema vrijednosti TERM ANSI sekvence su onemogućene ili prilagođene, a ako postoji NO_COLORStil izlaza je prisilno postavljen na običan tekst bez boje.
Trupci i izlaz vaših skripti Oni utiču na izgled zapisnika i izlaza vaših skripti, što utiče i na iskustvo konzole i na čitljivost snimljene telemetrije kada preusmjeravate izlaz u datoteke.
Praktičan primjer: Sophia Script i postavke privatnosti i telemetrije
Jedan od najpoznatijih primjera u zajednici za podešavanje Windowsa 10 pomoću PowerShella je Skripta Sophia za Windows 10, skup funkcija usmjerenih na automatizaciju konfiguracije, privatnosti i deinstalacije nepotrebnih komponenti.
Među svojim opcijama, Sophia Script uključuje mogućnost da prilagodite privatnost sistema i telemetriju, onemogućite zakazane dijagnostičke zadatke, deinstalirajte OneDrive, promijenite putanju %TEMP% ili premjestiti korisničke mape kao što su Radna površina, Dokumenti, preuzimanjaMuzika, slike ili video zapisi putem interaktivnih menija.
Također nudi funkcije za deinstalirajte UWP aplikacije za sve račune koji poštuju listu izuzeća koja se mogu konfigurisati putem WPF obrazaca, kao i onemogućavanje Windows funkcija ili uklanjanje sistemskih mogućnosti pomoću vizuelnih čarobnjaka.
Još jedan zanimljiv dio je da može kreiranje zadataka u Planeru zadataka za periodično čišćenje, podešavanje menija Start (kačenje ili otkačivanje stavki), manipulisanje sigurnosnim opcijama programa Microsoft Defender kao što su kontrolirani pristup mapama ili izuzeća, te osvježavanje ikona, varijabli okruženja i trake zadataka bez ponovnog pokretanja Explorera.
Ukratko, ova vrsta skripte demonstrira kako se, kombinovanjem PowerShella sa konfiguracijama telemetrije, varijablama okruženja i automatizacijom, može da u potpunosti modelira ponašanje Windows sistema prilagoditi ga politikama organizacije ili ličnim preferencijama.
Slanje telemetrije iz PowerShella u Application Insights
Pored izvorne telemetrije PowerShella, mnoge aplikacije šalju vlastite podatke praćenja Uvidi u aplikacije Azure MonitorMeđutim, ponekad kada otvorite Azure Portal, grafikoni izgledaju prazni ili im nedostaju ključni zapisi.
Tipični uzroci su obično greške u konfiguraciji SDK-a ili Application Insights agenta, mrežne blokade tačka gutanja, ograničenje ili isključenje telemetrije u cjevovodu, specifični incidenti Log Analyticsa ili problemi s upitima API-ju api.applicationinsights.io.
Vrlo praktičan pristup izoliranju izvora problema sastoji se od ručno slanje jednog testnog telemetrijskog zapisnika iz PowerShella ili curla. Ako taj zapis uspješno stigne do tabele dnevnika resursa Application Insights, znate da veliki dio cjevovoda radi.
Kada testirate s iste mašine ili okruženja u kojem se vaša aplikacija izvršava (na primjer, virtuelna mašina ili usluga aplikacija), također provjeravate da DNS, zaštitni zid, TLS i dozvole ne blokiraju put do gutanja.
U scenarijima gdje je tačka unosa zaštićena Microsoft Entra ID-om (ranije Azure AD), morate osigurati da se aplikacija ili skripta ispravno autentificira s Entra ID-om; u suprotnom, telemetrija će biti odbijena čak i ako ostatak instrumentacije izgleda ispravno.
PowerShell skripta za testiranje telemetrije dostupnosti
Da biste provjerili da li cijeli krug od vašeg računara do Application Insights radi, možete koristiti PowerShell skripta koja šalje rezultat testa dostupnostiOva vrsta telemetrije je idealna jer nije podložna mehanizmima uzorkovanja pri unosu.
Ideja je jednostavna: vi pružate lanac za povezivanje ili ključ za instrumentacijuSkripta ga raščlanjuje kako bi izdvojila tačku unosa i InstrumentationKey, generira JSON sa AvailabilityData kao primjer i šalje ga sa Invoke-WebRequest do odgovarajuće REST krajnje tačke.
Ako proslijedite samo ključ instrumentacije, skripta će izgraditi niz za povezivanje sa globalna krajnja tačka https://dc.services.visualstudio.com/Ako proslijedite cijeli niz za povezivanje, koristit će se regionalna tačka unosa definirana u njemu, a ako proslijedite obje, prevladat će ona definirana u nizu za povezivanje.
Tokom izvršenja, a Vremenska oznaka u UTC ISO 8601 formatuJSON tijelo se popunjava podacima o testiranju (trajanje, lokacija, poruka, dodatna svojstva) i šalje se POST zahtjev. HTTP 200 odgovor sa itemsReceived jednak itemsAccepted označava da je mjesto prijema primilo i prihvatilo zapis.
Zatim jednostavno idite na karticu Dnevnici resursa Application Insights na Azure portalu, pokrenite upit za odgovarajući tip i provjerite da li se pojavljuje uzorak dnevnika. Ako se pojavi, znate da je problem najvjerovatnije u SDK ili agent koji vaša stvarna aplikacija koristi.
Testiranje telemetrije pomoću Curl-a na Linuxu ili Windowsu
Ako je okruženje iz kojeg želite testirati Linux ili macOS, ili ako radije koristite standardne alate umjesto PowerShella, isti test možete izvršiti pomoću curl šalje POST zahtjev sa JSON sadržajem do krajnje tačke Application Insights.
U ovim slučajevima kreirate slično JSON tijelo, sa baseType jednak AvailabilityDataIdentifikator izvršenja, naziv testa, trajanje, indikator uspjeha, lokacija, poruka i opcionalna svojstva. Ne zaboravite uvijek prilagoditi campo time za nedavni brendjer Application Insights unosi podatke starije od 48 sati.
Za Linux ili macOS, naredba obično uključuje zaglavlje Content-Type: application/json, POST metoda, ugrađeni JSON i URL tačke unosa (na primjer https://dc.applicationinsights.azure.com/v2.1/track). U Windowsu se sintaksa neznatno mijenja jer morate izbjeći navodnike u JSON-u kada ga prosljeđujete kao argument.
Nakon što se to uradi, ponovo provjeravate HTTP odgovor i, ako je tačan, idete u zapisnike Application Insights kako biste potvrdili da je vaša testna telemetrija sada pohranjena i da se može upitati, baš kao što je to bilo sa PowerShell skriptom.
Ovaj pristup vam omogućava da na prvi pogled isključite probleme s konfiguracijom SDK-a, fokusirajući se na mreže, DNS-a, TLS-a, autentifikacije krajnjih tačaka ili pravila uzorkovanja na osnovu simptoma koje vidite u odgovoru.
PowerShell skripta za testiranje telemetrije zahtjeva
Pored testova dostupnosti, često vas zanima i provjera Telemetrija HTTP zahtjevaposebno kada su vaše kontrolne ploče zasnovane na metrikama dolaznih zahtjeva iz API-ja ili web aplikacije.
Da biste to uradili, možete koristiti drugu PowerShell skriptu veoma sličnu onoj za dostupnost, ali ovaj put generišući JSON sa baseType jednak RequestDataPolja kao što su identifikator zahtjeva i naziv operacije (na primjer) obično su uključena. GET /ruta/prueba/), vrijeme početka, trajanje, URL, kod odgovora i HTTP metodu.
Skripta prati istu mehaniku: rastavlja niz za povezivanje ili ključ instrumentacije, konstruira URL za unos (v2/track), izračunava trenutno vrijeme u UTC-u, sastavlja JSON i izvršava Invoke-WebRequest korištenjem POST metodeAko dobijete kod 200 i očekivani sadržaj u odgovoru, dio za unos podataka radi.
Evo jedne važne tačke: aplikacije zaista mogu biti pogođene mehanizmi uzorkovanja Na strani servera. Ako ste konfigurirali uzorkovanje da biste smanjili količinu podataka, možda nećete vidjeti sve zahtjeve za testiranje osim ako ga privremeno ne onemogućite ili ne prilagodite postotke.
Nakon što se vaš testni zapisnik pojavi u Application Insights, sljedeći korak je fokusiranje na to kako je vaš kod instrumentaliziran (SDK, filteri, uzorkovanje, izuzeća itd.) kako biste shvatili zašto se stvarni zahtjevi ne zapisuju tako lako kao ručni testovi.
Uobičajeni SSL/TLS problemi prilikom slanja telemetrije
Nije neuobičajeno naići na greške povezane s pokretanjem ovih testnih skripti. SSL ili TLS tokom rukovanjaposebno u ograničenim okruženjima ili kada korporativni proxy serveri pregledavaju promet.
Mnoge Azure usluge, uključujući Application Insights, zahtijevaju barem TLS 1.2 i specifične pakete šifri za prihvatanje veza. Ako sistem ili aplikacija nastavi koristiti TLS 1.0 ili 1.1 prema zadanim postavkama, veza može propasti čak i prije nego što server obradi JSON.
PowerShell vam omogućava da forsirate podržane protokole podešavanjem [System.Net.ServicePointManager]::SecurityProtocol prije izvršenja Invoke-WebRequestMožete isprobati SSL3, TLS, TLS 1.1, TLS 1.2 ili TLS 1.3 da vidite šta funkcioniše u vašem okruženju, iako se u produkciji preporučuje pridržavanje onoga što navode sigurnosne smjernice.
Ako imate i proxyje ili zaštitne zidove koji vrše SSL inspekciju, validacija certifikata može propasti. Postoji opcija za onemogući provjeru certifikata kreiranje prilagođene politike koja uvijek vraća vrijednost "true", ali ovo je nešto što biste trebali koristiti samo u dijagnostičke svrhe, a nikada kao trajno rješenje.
Kada trebate promijeniti zadane TLS verzije koje koriste .NET aplikacije na Windowsu, ispravan postupak je slijediti ove korake: Zvanične preporuke za konfiguraciju TLS-a u Registru i u samom okviru, umjesto uvođenja raštrkanih hakova u skripte.
Greške pri autentifikaciji kod Microsofta. Unesite ID u Application Insights.
Ako je vaš resurs Application Insights konfiguriran da prihvata samo Autentifikacija pomoću Microsoft Enter ID-a (ranije Azure AD), telemetrija poslana s ključem instrumentacije bez važećih vjerodajnica bit će odbijena s jasnim HTTP greškama.
Šifra HTTP 400 s porukom koja ukazuje da klasična autentifikacija nije podržana Ovo obično znači da je resurs označen samo kao Entra ID, ali SDK ili skript poziva stari API. U tom slučaju, potrebno je provjeriti konfiguraciju SDK-a i korišteni niz za povezivanje.
Greška HTTP 401 "Potrebna autorizacija" Ovo ukazuje na to da SDK pokušava koristiti Entra ID, ali ne može dobiti važeći token; to bi moglo biti zato što upravljani identitet nije omogućen, zato što nedostaju akreditivi ili zbog problema s Azure Identity na klijentu.
Kod HTTP 403 "Neovlašteno" Ovo ukazuje na to da je token dobijen, ali korišteni identitet nema dovoljne dozvole za resurs Application Insights ili pretplatu. U ovom slučaju, trebali biste pregledati kontrolu pristupa i osigurati da identitet ima barem ulogu Izdavač metrika praćenja.
U zavisnosti od jezika (Node.js, pitonitd.), preporučljivo je aktivirati interni SDK zapisnici ili zapisnike Azure Identityja da biste tačno vidjeli koja faza autentifikacije ne uspijeva i s kojom porukom.
Telemetrija, skripte i najbolje prakse u stvarnim okruženjima
Sve navedeno znači da, kada želite Dodavanje telemetrije skriptama u PowerShelluImate dva nivoa za upravljanje: s jedne strane, automatsku telemetriju samog mehanizma, a s druge strane, eksplicitnu telemetriju koju šaljete sistemima kao što su Application Insights ili druga odredišta.
Na izvornom nivou, ključno je znati kako funkcioniše POWERSHELL_TELEMETRY_OPTOUT, koji se podaci prikupljaju na početku i tokom sesije, te kako se varijable poput POWERSHELL_DISTRIBUTION_CHANNEL o POWERSHELL_UPDATECHECK da kontroliše globalno ponašanje.
Što se tiče vaših skripti, možete iskoristiti prednosti varijabli okruženja, provajdera Env:, metode System.Environment i alate poput Sophia Script za Prilagodite politike privatnosti, ruta, keša i izvršavanja, dok implementirate svoje procese za slanje metrika i logova vanjskim servisima.
Kombinacijom ručnog telemetrijskog testiranja s PowerShellom i Curlom, praćenjem TLS protokola i pravilnom konfiguracijom autentifikacije s Microsoft Entra ID-om, moguće je imati robustan i pouzdan telemetrijski cjevovod čak i u visoko kontrolisanim korporativnim okruženjima.
Kada shvatite kako je cijeli ovaj telemetrijski sloj orkestriran, od varijabli okruženja do unosa u oblak, postaje mnogo lakše donijeti odluku. koje poluge pritisnuti Ako jednog dana vaši Azure grafikoni ili zapisnici misteriozno prestanu ažurirati.
Strastveni pisac o svijetu bajtova i tehnologije općenito. Volim dijeliti svoje znanje kroz pisanje, a to je ono što ću raditi na ovom blogu, pokazivati vam sve najzanimljivije stvari o gadžetima, softveru, hardveru, tehnološkim trendovima i još mnogo toga. Moj cilj je pomoći vam da se krećete u digitalnom svijetu na jednostavan i zabavan način.