- PowerShell을 이 프로그램은 시작 시와 세션 중에 익명 원격 측정 데이터를 전송하며, 이는 POWERSHELL_TELEMETRY_OPTOUT 환경 변수를 통해 제어할 수 있습니다.
- PowerShell 관련 환경 변수와 시스템 관련 환경 변수를 사용하면 자식 프로세스가 상속받을 수 있는 개인 정보 보호, 모듈 경로, 캐싱 및 실행 정책을 조정할 수 있습니다.
- Azure Application Insights에 대한 사용자 지정 원격 분석은 PowerShell 또는 curl 스크립트를 사용하여 테스트 및 진단할 수 있으며, Microsoft Entra ID를 사용하여 네트워크, TLS 및 인증을 확인할 수 있습니다.
- 이러한 메커니즘을 올바르게 사용하면 보안 및 공유 데이터에 대한 제어를 유지하면서 PowerShell 스크립트에 안정적인 원격 측정 기능을 더 쉽게 추가할 수 있습니다.

PowerShell을 매일 사용하다 보면 스크립트나 세션에서 원격 분석(telemetry) 에 대한 이야기를 듣게 될 때, 어떤 데이터가 전송되는지, 어디로 가는지, 어떻게 비활성화하는지, 심지어 원격 분석을 활용하여 스크립트를 디버깅하거나 모니터링하는 방법까지 궁금해지는 것은 당연합니다. 특히 기업 환경이나 민감한 정보를 다룰 때는 이러한 궁금증이 더욱 커집니다.
다음 내용에서는 PowerShell과 연동된 원격 분석의 작동 방식 , 환경 변수의 역할, 원격 분석 참여를 거부하는 방법, PowerShell 또는 curl을 사용하여 원격 분석 데이터를 수동으로 전송하는 방법(예: Application Insights로 전송), 그리고 대시보드에서 데이터가 누락되는 원인이 될 수 있는 일반적인 네트워크, TLS 또는 인증 문제에 대해 상당히 자세하고 최대한 간단한 언어로 설명합니다.
PowerShell은 기본적으로 어떤 원격 측정 데이터를 전송합니까?
최신 버전의 PowerShell에는 자체 메커니즘이 포함되어 있습니다. 기본 사용량 데이터를 Microsoft에 전송합니다. Application Insights를 통해 확인할 수 있습니다. 여기서 말하는 것은 사용자가 작성하는 코드가 아니라 바이너리가 실행될 때의 PowerShell 엔진 자체입니다. pwsh.
이 원격 측정 데이터는 Microsoft가 PowerShell 사용 방식 (버전, 플랫폼, 모듈 등)을 더 잘 이해하고 새로운 기능 개발이나 버그 수정의 우선순위를 정하는 데 도움이 됩니다. 전송되기 전에 정보는 익명화 및 집계 되므로 사용자를 직접 식별할 수 없습니다.
데이터가 수집되는 주요 시점은 세션 시작 시점 과 실행 중 주기적으로 발생하는 두 가지입니다 . 환경 간에 공유되는 데이터를 최대한 제어하려면 이러한 동작 방식을 이해하는 것이 매우 중요합니다.
또한, 모터는 작동 중일 때만 이러한 원격 측정 데이터를 전송합니다. pwsh 표준입니다. PowerShell이 표준인 경우 다른 호스트 애플리케이션에 엔진으로 내장되어 있습니다.초기 원격 측정 데이터는 생성되지 않습니다.
pwsh 시작 시 전송되는 데이터
세션이 시작될 때 pwsh엔진은 소량이지만 매우 특정한 환경 정보를 수집하여 하루에 한 번만 전송합니다. 부팅그 외에도 다음과 같은 내용이 기록되어 있습니다. 운영 체제 및 설치 세부 정보 PowerShell에서.
이 시작 프로그램에는 운영 체제 제조업체, 플랫폼 이름 및 버전, 현재 실행 중인 PowerShell의 특정 버전과 같은 데이터가 포함되어 있어 PowerShell이 사용되는 시스템 구성을 파악하는 데 도움이 됩니다.
함께 전송되는 또 다른 중요한 정보는 값입니다. 환경 변수 POWERSHELL_DISTRIBUTION_CHANNEL이 값은 PowerShell이 설치된 경로(예: 공식 패키지, 저장소 등)를 나타냅니다. 이 값은 설치 프로그램에서 설정하며, 메트릭 왜곡을 방지하기 위해 사용자는 이 값을 변경하지 않는 것이 좋습니다.
또한 다음이 포함됩니다. Application Insights SDK 버전 PowerShell 자체에서 사용되는 IP 주소를 기반으로 호스트의 대략적인 지리적 영역을 나타냅니다. 전달된 매개변수 pwsh 그들의 가치 없이 (즉, 매개변수 이름은 포함되지만 내용은 포함되지 않음) 및 시작 세션의 실제 실행 정책.
마지막으로, 엔진은 두 개의 익명 식별자를 생성합니다. 하나는 사용자별로 무작위로 생성된 GUID 이고, 다른 하나는 세션별로 생성된 GUID입니다 . 이러한 식별자는 직접적인 개인 정보가 아니라, 실제 신원을 노출하지 않고 세션과 활동을 그룹화하는 데 사용되는 기술적 식별자입니다.
세션 중에 전송된 원격 측정 데이터
세션이 시작되면 PowerShell은 어떤 기능이 어떻게 사용되고 있는지 파악하기 위해 주기적으로 집계된 사용량 정보를 전송합니다 . 이는 대화형 콘솔과 엔진이 실행되는 다른 호스트 모두에 적용됩니다.
이러한 데이터에는 예를 들어 다음과 같은 것들이 포함됩니다. API 호출 횟수 PowerShell.Create()가져온 Microsoft 모듈 목록과 해당 버전 또는 레이블이 있는 모듈의 개수 CrescendoBuilt이는 특정 도구의 사용을 파악하는 데 도움이 됩니다.
다음과 같은 내용도 보고되었습니다. 활성화 및 비활성화된 실험 기능의 이름이는 커뮤니티에서 실제로 어떤 실험을 진행하고 있는지 파악하는 데 매우 유용하며, 추가적으로 선호도 값도 전송됩니다. $PSNativeCommandUseErrorActionPreference (참, 거짓 또는 설정 안 함) 및 열려 있는 원격 세션 수.
또 다른 흥미로운 부분은 카탈로그입니다. 등록된 하위 시스템PowerShell은 자동 완성 하위 시스템에 사용되는 이름을 나타냅니다(Completion) 또는 일반적인 (general하지만 이름이 목록에 없으면 다음과 같이 전송됩니다. anonymous 개인정보를 보호하기 위해.
마지막으로 카운터가 포함됩니다. 제안은 다음과 같이 생성되었습니다. CommandNotFound 및 사용 통계 PowerShellUnsafeAssemblyLoad (적재가 성공적으로 완료되었는지 여부를 포함하여) 진단 및 안전성 향상을 위한 핵심 요소입니다.
PowerShell 기본 원격 측정 기능을 비활성화하는 방법
조직에 엄격한 개인정보 보호 정책이 있는 경우, 이러한 원격 측정 데이터 전송을 원하지 않는다고 지정할 수 있습니다. PowerShell은 환경 변수를 제공하여 이를 지원합니다. POWERSHELL_TELEMETRY_OPTOUT이는 모든 세션을 시작하기 전에 설정해야 합니다.
원격 측정 기능을 비활성화하는 데 인정되는 값은 다음과 같습니다. true, yes o 1이러한 변형 중 하나를 사용하면 엔진은 해당 프로세스 또는 환경 변수를 상속받는 하위 프로세스에서 Microsoft로 사용량 데이터를 보내지 않도록 지시받습니다.
이 구성은 환경 변수를 기반으로 하므로 , 설정을 영구적으로 유지하려면 PowerShell을 실행하기 전, 즉 실행 후에 정의하면 안 된다는 점을 이해하는 것이 중요합니다 .
이러한 변수를 관리하는 방법에 대해 궁금한 점이 있으면 about_Environment_Variables 문서 와 PowerShell 환경 변수 가이드를 참조하여 운영 체제에 맞는 적절한 접근 방식을 선택하십시오.
또한 PowerShell을 배포하는 설치 패키지는 자동으로 구성을 변경한다는 점을 기억하십시오. POWERSHELL_DISTRIBUTION_CHANNEL 설치 채널을 구분하기 위한 것입니다. 이 변수는 원격 측정 데이터에도 포함되므로 수동으로 조작해서는 안 됩니다.
PowerShell에 영향을 미치는 주요 환경 변수
PowerShell은 환경 변수를 특수한 데이터 형식으로 취급하며, 항상 자식 프로세스가 상속할 수 있는 텍스트 문자열 형태로 저장합니다 . 따라서 환경 변수는 개인 정보 보호, 업데이트 또는 모듈 경로와 같은 전역 옵션을 제어하는 데 이상적입니다.
엔진 자체는 일련의 특정 변수를 정의하는데, 그중에서도 다음 변수들이 특히 중요합니다. POWERSHELL_TELEMETRY_OPTOUT, POWERSHELL_DISTRIBUTION_CHANNEL, POWERSHELL_UPDATECHECK, PSExecutionPolicyPreference, PSModulePath, PSModuleAnalysisCachePath y PSDisableModuleAnalysisCacheCleanup.
Windows 에서 이러한 변수는 시스템, 사용자 또는 프로세스 범위 에 있을 수 있습니다 . 현재 프로세스는 시스템 및 사용자 정의를 자동으로 결합하며, 세션에서 변경한 내용은 다른 방법으로 영구 저장하지 않는 한 해당 프로세스에만 영향을 미칩니다.
PowerShell에서 컴퓨터 또는 사용자 수준 값을 수정하려면 다음을 사용해야 합니다. .NET 클래스 System.Environment이는 해당 범위의 변수를 읽고 쓰는 메서드를 제공하며, 이를 위해서는 필요한 권한이 있어야 합니다.
환경 변수는 문자열이기 때문에 쉽게 연결하거나, 값을 비우거나, 삭제할 수 있다는 점을 명심하십시오 . 이는 복잡한 구성 스크립트나 배포 자동화에 매우 유용합니다.
PowerShell에서 환경 변수에 접근하고 수정하는 방법
PowerShell은 환경 변수를 조회하고 수정하는 여러 가지 방법을 제공합니다 . 간단한 스크립트 , 복잡한 모듈, 관리 작업 등 수행하려는 작업에 따라 적절한 방법을 선택해야 합니다.
가장 직접적인 방법은 접두사를 사용한 변수 구문 $Env:이를 통해 다른 PowerShell 변수처럼 변수의 값을 읽거나 새 값을 할당할 수 있습니다. 예를 들어, $Env:windir o $Env:Foo = "Algo".
또한, 다음을 사용할 수 있습니다. 환경 제공자(Env:) 표준 cmdlet을 사용하여 요소 (Get-Item, New-Item, Set-Item, Remove-Item(등) 파일 시스템 단위를 처리하는 데 매우 일관된 접근 방식을 제공합니다.
머신 또는 사용자 수준에서 작업을 수행하거나 .NET 코드와 통합하려는 시나리오에서는 다음과 같은 메서드를 사용할 수 있습니다. [Environment]::GetEnvironmentVariable() y [Environment]::SetEnvironmentVariable()이러한 방법을 사용하면 범위를 명시적으로 선택할 수 있습니다.Process, User o Machine) 윈도우 시스템에서.
PowerShell 7.5부터는 다음과 같은 특정 동작이 있습니다. 변수를 빈 문자열 또는 다른 값으로 설정합니다. $null 세션에서 해당 항목을 비우거나 제거하려면 다음 구문 중 하나를 사용하십시오. $Env: 통해 Set-Item 또는 방법 System.Environment.
원격 측정 및 동작과 관련된 PowerShell 환경 변수
PowerShell의 여러 내부 기능은 상속 가능한 기본 설정 플래그 역할을 하는 환경 변수에 의존합니다 . 이를 통해 모든 스크립트의 코드를 변경하지 않고도 셸 또는 원격 분석 동작을 세밀하게 조정할 수 있습니다.
가장 명백한 것은 다음과 같습니다. POWERSHELL_TELEMETRY_OPTOUT앞서 살펴본 바와 같이, 이는 설정이 변경되면 엔진의 기본 원격 측정 기능을 비활성화하는 역할을 합니다. true, yes o 1이 설정이 적용되려면 PowerShell 프로세스를 시작하기 전에 해당 파일이 존재해야 합니다.
또 하나 매우 중요한 것은... POWERSHELL_DISTRIBUTION_CHANNELPowerShell 7.2 이후 설치 프로그램이 제품 설치 방법을 나타내기 위해 자동으로 채워 넣는 이 필드는 원격 측정 데이터에 포함되므로 수동으로 수정하는 것은 권장되지 않습니다.
변수 POWERSHELL_UPDATECHECK 업데이트 알림이 표시되는 방식과 시기를 제어합니다. 다음과 같은 값을 허용합니다. Off 해당 기능을 비활성화하려면, Default 표준 동작의 경우 또는 LTS 확장 지원 버전에 대한 알림만 받도록 설정했습니다.
또한, PSExecutionPolicyPreference 매개변수를 사용하여 구성했을 때 현재 세션에서 활성화된 실행 정책을 반영합니다. -ExecutionPolicy, cmdlet Set-ExecutionPolicy 범위 내에서 Process또는 변수를 직접 편집하여 변경할 수 있습니다. 이 설정은 특히 Windows에서 다운로드했거나 서명되지 않은 스크립트에 영향을 미칩니다.
그리고 물론 모듈 검색 경로는 다음으로 제어됩니다. PSModulePathWindows에서는 세미콜론으로 구분된 목록, *nix 플랫폼에서는 콜론으로 구분된 목록을 저장하며, 시스템 및 사용자 위치는 물론 외부 설치 프로그램에서 추가한 경로까지 포함합니다.
캐시 및 모듈 분석: 미세 조정
PowerShell은 명령 검색 속도를 높이고 매 시작 또는 검색 시마다 사용 가능한 모든 모듈을 지속적으로 검사할 필요가 없도록 모듈 분석 캐시를 유지합니다.
환경 변수 PSModuleAnalysisCachePath 캐시 파일이 저장될 위치를 정의하십시오. 기본적으로 해당 파일은 아래 경로를 가리킵니다. $Env:LOCALAPPDATA Windows 또는 ~/.cache/powershell Windows 이외의 시스템에서는 설치할 때마다 다른 파일 이름을 사용합니다.
해당 위치를 변경하려면 PowerShell을 시작하기 전에 이 변수를 설정해야 하며 , 프로세스에 쓰기 권한이 있는 전체 경로(파일 이름 포함)를 지정해야 합니다. 변경 사항은 변경 후에 시작되는 프로세스에만 적용됩니다.
모듈 캐싱을 완전히 비활성화하려면 경로를 쓰기 권한이 없는 대상으로 지정할 수 있습니다. 예를 들어 다음과 같습니다. NUL Windows 또는 /dev/null en LinuxPowerShell은 해당 위치에 캐시를 쓰려고 시도하지만 성공하지 못하며, 세션에 표시되는 오류도 생성하지 않습니다.
이를 보완하는 변수는 다음과 같습니다. PSDisableModuleAnalysisCacheCleanup만약 당신이 그것을 다음과 같이 설정한다면 1이 기능은 더 이상 존재하지 않는 모듈 항목을 제거하는 자동 정리 작업을 비활성화합니다. 이는 캐시를 건드리고 싶지 않은 특정 상황에서 유용합니다.
스크립트 및 원격 측정에 유용한 기타 환경 변수
PowerShell에 특정한 변수 외에도, 스크립트 실행 방식과 터미널 동작 방식 에 직접적인 영향을 미치는 시스템 환경 변수들이 있으며 , 특히 여러 플랫폼 환경에서 이러한 영향이 두드러집니다.
변수 PATH 이는 실행 파일을 검색할 디렉터리를 결정하는 설정으로, PowerShell 스크립트에서 외부 바이너리를 실행하려는 경우 매우 중요합니다. Windows에서는 디렉터리가 ...로 구분됩니다. ;리눅스나 macOS에서는 사용됩니다. :.
윈도우도 존재합니다 PATHEXT이 목록에는 직접 실행 가능한 확장자가 나열되어 있습니다. 동일한 콘솔에서 스크립트 언어(예: 스크립트 파일)를 실행하려면 해당 명령어를 사용하면 됩니다. .py), 여기에 확장 프로그램을 포함시키고 다음과 같은 도구를 사용하여 시스템에 등록해야 합니다. assoc y ftype 부터 CMD.
Windows 이외의 플랫폼에서 PowerShell은 변수를 사용하여 XDG 규칙을 따릅니다. XDG_CONFIG_HOME, XDG_DATA_HOME y XDG_CACHE_HOME 구성 경로, 데이터 및 캐시를 위한 것으로, 시스템의 나머지 부분과의 통합을 용이하게 합니다.
색상 출력 기능 및 터미널 제어와 관련하여 PowerShell 7.2 이상 버전은 해당 기능을 지원합니다. TERM y NO_COLOR값에 따르면 TERM ANSI 시퀀스가 비활성화되거나 조정되었으며, 만약 그렇다면 NO_COLOR출력 스타일은 색상이 없는 일반 텍스트로 강제 설정됩니다.
로그 및 스크립트 출력은 스크립트 로그 및 출력의 모양에 영향을 미치며, 이는 콘솔 환경과 출력을 파일로 리디렉션할 때 캡처된 원격 측정 데이터의 가독성 모두에 영향을 줍니다.
실제 사례: 소피아 스크립트와 개인정보 보호 및 원격 측정 설정
PowerShell을 사용하여 Windows 10을 최적화하는 가장 잘 알려진 사례 중 하나는 Windows 10 Sophia Script 입니다 . 이는 구성, 개인 정보 보호 및 불필요한 구성 요소 제거를 자동화하는 데 목적을 둔 함수 모음입니다.
Sophia Script는 다양한 옵션 중에서 다음과 같은 기능을 제공합니다. 시스템 개인 정보 보호 및 원격 측정 설정을 조정합니다.예약된 진단 작업을 비활성화하고, OneDrive를 제거하고, 경로를 변경하십시오. %TEMP% 또는 바탕화면, 문서 등의 사용자 폴더를 다른 위치로 옮길 수도 있습니다. 다운로드음악, 이미지 또는 비디오를 인터랙티브 메뉴를 통해 감상할 수 있습니다.
또한 WPF 폼을 통해 구성 가능한 제외 목록을 준수하면서 모든 계정에서 UWP 애플리케이션을 제거하는 기능 과 시각적 마법사를 사용하여 Windows 기능을 비활성화하거나 시스템 기능을 제거하는 기능도 제공합니다 .
또 다른 흥미로운 기능은 작업 스케줄러에서 주기적인 정리 작업을 생성하고, 시작 메뉴를 조정(항목 고정 또는 고정 해제)하고, 제어된 폴더 액세스 또는 제외와 같은 Microsoft Defender 보안 옵션을 조작하고, 탐색기를 다시 시작하지 않고도 아이콘, 환경 변수 및 작업 표시줄을 새로 고칠 수 있다는 것입니다.
요약하자면, 이러한 유형의 스크립트는 PowerShell과 원격 측정 구성, 환경 변수 및 자동화를 결합하여 Windows 시스템의 동작을 조직의 정책이나 개인 선호도에 맞게 완벽하게 모델링할 수 있는 방법을 보여줍니다.
PowerShell에서 Application Insights로 원격 측정 데이터를 전송합니다.
PowerShell의 기본 원격 분석 기능 외에도 많은 애플리케이션이 자체 모니터링 데이터를 Azure Monitor Application Insights 로 전송합니다 . 하지만 때때로 Azure 포털을 열었을 때 차트가 비어 있거나 주요 레코드가 누락되는 경우가 있습니다.
일반적인 원인은 SDK 또는 Application Insights 에이전트 구성 오류, 네트워크 차단 등입니다. 섭취 지점파이프라인 내 원격 측정 데이터의 제한 또는 제외, 특정 로그 분석 문제 또는 API 쿼리 문제 api.applicationinsights.io.
문제의 원인을 파악하는 매우 실용적인 방법은 PowerShell이나 curl을 사용하여 테스트 원격 측정 로그 하나를 수동으로 전송하는 것입니다 . 해당 로그가 Application Insights 리소스 로그 테이블에 성공적으로 도달하면 파이프라인의 상당 부분이 정상적으로 작동하고 있음을 알 수 있습니다.
애플리케이션이 실행되는 동일한 머신이나 환경(예: VM 또는 앱 서비스)에서 테스트하면 DNS, 방화벽, TLS 및 권한이 데이터 수집 경로를 차단하지 않는지 확인할 수 있습니다.
데이터 수집 지점이 Microsoft Entra ID(이전 Azure AD)로 보호되는 시나리오에서는 애플리케이션 또는 스크립트가 Entra ID로 올바르게 인증되었는지 확인해야 합니다. 그렇지 않으면 나머지 계측이 올바르게 보이더라도 원격 분석 데이터가 거부됩니다.
가용성 원격 측정 테스트를 위한 PowerShell 스크립트
컴퓨터에서 Application Insights까지의 전체 회로가 제대로 작동하는지 확인하려면 가용성 테스트 결과를 전송하는 PowerShell 스크립트를 사용할 수 있습니다 . 이러한 유형의 원격 측정 데이터는 수집 샘플링 메커니즘의 영향을 받지 않으므로 이상적입니다.
아이디어는 간단합니다. 당신은 다음을 제공합니다. 연결 체인 또는 계측 키스크립트는 이를 분해하여 수집 지점과 그 이후 부분을 추출합니다. InstrumentationKeyJSON을 생성합니다. AvailabilityData 예를 들어, 그것을 함께 보냅니다. Invoke-WebRequest 해당 REST 엔드포인트로 이동합니다.
계측 키만 전달하면 스크립트는 해당 키를 사용하여 연결 문자열을 생성합니다. 글로벌 엔드포인트 https://dc.services.visualstudio.com/연결 문자열 전체를 전달하면 문자열에 정의된 지역 수집 지점이 사용되고, 두 가지 모두 전달하면 연결 문자열에 정의된 지점이 우선 적용됩니다.
실행 중에 UTC ISO 8601 형식의 타임스탬프JSON 본문에는 테스트 데이터(지속 시간, 위치, 메시지, 추가 속성)가 채워지고 POST 요청이 전송됩니다. HTTP 200 응답에는 다음이 포함됩니다. itemsReceived 같음 itemsAccepted 접수처에서 기록을 접수하고 승인했음을 나타냅니다.
그런 다음 Azure 포털의 Application Insights 리소스에 있는 로그 탭으로 이동하여 관련 유형에 대한 쿼리를 실행하고 샘플 로그가 나타나는지 확인합니다. 샘플 로그가 나타나면 문제는 실제 애플리케이션에서 사용하는 SDK 또는 에이전트 에 있을 가능성이 높습니다.
Linux 또는 Windows에서 curl을 사용하여 원격 측정 테스트를 수행하세요.
테스트 환경이 Linux 또는 macOS이거나 PowerShell 대신 표준 도구를 사용하려는 경우, JSON 콘텐츠가 포함된 POST 요청을 Application Insights 엔드포인트로 전송하여 curl을 사용해 동일한 테스트를 수행할 수 있습니다.
이 경우 다음과 같은 유사한 JSON 본문을 생성합니다. baseType 같음 AvailabilityData실행 식별자, 테스트 이름, 실행 시간, 성공 표시기, 위치, 메시지 및 선택적 속성입니다. 항상 조정해야 한다는 점을 기억하세요. 캄포 time 최근 브랜드에Application Insights는 48시간보다 오래된 데이터를 수집하기 때문입니다.
Linux 또는 macOS의 경우, 해당 명령어에는 일반적으로 다음이 포함됩니다. 헤더 Content-Type: application/jsonPOST 메서드, 인라인 JSON 및 수집 지점 URL(예: https://dc.applicationinsights.azure.com/v2.1/trackWindows에서는 JSON을 인수로 전달할 때 따옴표를 이스케이프해야 하므로 구문이 약간 변경됩니다.
이 작업이 완료되면 HTTP 응답을 다시 확인하고, 응답이 올바르면 Application Insights 로그로 이동하여 PowerShell 스크립트를 사용했을 때와 마찬가지로 테스트 원격 분석 데이터가 저장되고 쿼리 가능한지 확인합니다.
이 접근 방식을 사용하면 응답에서 나타나는 증상을 기반으로 네트워크, DNS, TLS, 엔드포인트 인증 또는 샘플링 정책 에 초점을 맞춰 SDK 구성 문제를 신속하게 배제할 수 있습니다 .
요청 원격 측정 테스트를 위한 PowerShell 스크립트
가용성 테스트 외에도, 특히 대시보드가 API 또는 웹 애플리케이션에서 들어오는 요청 메트릭을 기반으로 하는 경우 HTTP 요청 원격 측정 데이터를 확인하는 데 관심이 있을 수 있습니다.
이를 위해 가용성 스크립트와 매우 유사한 또 다른 PowerShell 스크립트를 사용할 수 있지만, 이번에는 JSON을 생성합니다. baseType 같음 RequestData요청 식별자 및 작업 이름(예시)과 같은 필드가 일반적으로 포함됩니다. GET /ruta/prueba/시작 시간, 지속 시간, URL, 응답 코드 및 HTTP 메서드입니다.
스크립트는 동일한 메커니즘을 따릅니다. 연결 문자열 또는 계측 키를 분해하고 수집 URL을 구성합니다.v2/track), 현재 시간을 UTC로 계산하고, JSON을 구성한 후 실행합니다. Invoke-WebRequest POST 메서드를 사용하여응답에서 코드 200과 예상되는 내용을 받았다면 데이터 수집 부분이 정상적으로 작동하는 것입니다.
여기서 중요한 점은 요청이 서버 측 데이터 수집 샘플링 메커니즘 의 영향을 받을 수 있다는 것입니다 . 데이터 양을 줄이기 위해 샘플링을 구성한 경우, 샘플링을 일시적으로 비활성화하거나 비율을 조정하지 않으면 모든 테스트 요청이 표시되지 않을 수 있습니다.
테스트 로그가 Application Insights에 나타나면 다음 단계는 코드 계측 방식(SDK, 필터, 샘플링, 제외 등)에 집중하여 실제 요청이 수동 테스트처럼 쉽게 로그에 기록되지 않는 이유를 파악하는 것입니다.
원격 측정 데이터 전송 시 흔히 발생하는 SSL/TLS 문제
이러한 테스트 스크립트를 실행할 때 , 특히 제한된 환경이나 회사 프록시가 트래픽을 검사하는 경우 핸드셰이크 과정에서 SSL 또는 TLS 관련 오류가 발생하는 것은 드문 일이 아닙니다 .
Application Insights를 포함한 많은 Azure 서비스는 연결을 수락하기 위해 최소 TLS 1.2 및 특정 암호화 제품군을 필요로 합니다. 시스템이나 애플리케이션이 기본적으로 TLS 1.0 또는 1.1을 계속 사용하는 경우, 서버가 JSON을 처리하기 전에 연결이 실패할 수 있습니다.
PowerShell을 사용하면 설정을 통해 지원되는 프로토콜을 강제로 지정할 수 있습니다. [System.Net.ServicePointManager]::SecurityProtocol 실행하기 전에 Invoke-WebRequestSSL3, TLS, TLS 1.1, TLS 1.2 또는 TLS 1.3을 시도해 보고 환경에 맞는 버전을 찾을 수 있지만, 실제 운영 환경에서는 보안 지침을 준수하는 것이 좋습니다.
프록시 또는 방화벽에서 SSL 검사를 수행하는 경우 인증서 유효성 검사가 실패할 수 있습니다. 항상 참을 반환하는 사용자 지정 정책을 생성하여 인증서 검증을 비활성화 할 수 있지만 , 이는 진단 목적으로만 사용해야 하며 영구적인 해결책으로 사용해서는 안 됩니다.
Windows에서 .NET 애플리케이션이 사용하는 기본 TLS 버전을 변경해야 하는 경우 스크립트에 임시방편적인 설정을 추가하는 것보다 레지스트리와 프레임워크 자체에서 제공하는 공식 TLS 구성 권장 사항을 따르는 것이 가장 좋습니다.
Microsoft 인증 오류가 발생했습니다. Application Insights에서 ID를 입력하십시오.
Application Insights 리소스가 Microsoft Entra ID(이전 Azure AD)를 통한 인증 만 허용하도록 구성된 경우 유효한 자격 증명 없이 계측 키와 함께 전송된 원격 분석 데이터는 명확한 HTTP 오류와 함께 거부됩니다.
HTTP 400 오류와 함께 "클래식 인증이 지원되지 않습니다"라는 메시지가 표시되는 경우, 일반적으로 해당 리소스가 Entra ID 전용으로 표시되어 있지만 SDK 또는 스크립트가 레거시 API를 호출하고 있음을 의미합니다. 이 경우 SDK 구성과 사용 중인 연결 문자열을 확인해야 합니다.
HTTP 401 "권한 필요" 오류는 SDK가 Entra ID를 사용하려고 시도했지만 유효한 토큰을 얻을 수 없음을 나타냅니다. 이는 관리 ID가 활성화되지 않았거나, 자격 증명이 누락되었거나, 클라이언트의 Azure ID에 문제가 있기 때문일 수 있습니다.
HTTP 403 "권한 없음" 오류 코드는 토큰은 획득했지만 사용된 ID에 Application Insights 리소스 또는 구독에 대한 충분한 권한이 없음을 나타냅니다. 이 경우 액세스 제어를 검토하고 해당 ID에 최소한 모니터링 메트릭 게시자 역할이 있는지 확인해야 합니다.
사용하는 언어(Node.js, Python 등)에 따라 인증 실패 단계와 오류 메시지를 정확히 확인하려면 내부 SDK 로깅 또는 Azure Identity 로그를 활성화하는 것이 좋습니다 .
실제 환경에서의 원격 측정, 스크립트 및 모범 사례
위에서 설명한 모든 내용을 종합해 보면, PowerShell 스크립트에 원격 분석 데이터를 추가하려면 두 가지 수준의 원격 분석 데이터를 관리해야 합니다. 하나는 엔진 자체의 자동 원격 분석 데이터이고, 다른 하나는 Application Insights 또는 기타 대상으로 전송하는 명시적인 원격 분석 데이터입니다.
네이티브 수준에서는 작동 방식을 아는 것이 핵심입니다. POWERSHELL_TELEMETRY_OPTOUT세션 시작 시와 세션 진행 중에 어떤 데이터가 수집되는지, 그리고 다음과 같은 변수들이 어떻게 활용되는지에 대한 내용입니다. POWERSHELL_DISTRIBUTION_CHANNEL o POWERSHELL_UPDATECHECK 전 세계적인 행동을 통제하기 위해.
스크립트 측면에서 환경 변수와 공급자를 활용할 수 있습니다. Env:,의 방법 System.Environment 그리고 Sophia Script와 같은 도구는 개인정보 보호, 경로, 캐시 및 실행 정책을 조정하세요.외부 서비스로 메트릭과 로그를 전송하는 프로세스를 구현하는 동안에도 마찬가지입니다.
PowerShell과 curl을 사용한 수동 원격 측정 테스트, TLS 프로토콜 모니터링, Microsoft Entra ID를 사용한 인증 세밀 조정 등을 결합하면 엄격하게 통제되는 기업 환경에서도 강력하고 안정적인 원격 측정 파이프라인을 구축할 수 있습니다.
환경 변수부터 클라우드 데이터 수집에 이르기까지 전체 원격 측정 계층이 어떻게 구성되는지 이해하면, 어느 날 갑자기 Azure 차트나 로그 업데이트가 알 수 없는 이유로 중단될 경우 어떤 조치를 취해야 할지 훨씬 쉽게 결정할 수 있습니다.
바이트와 기술 전반에 관한 세계에 대한 열정적인 작가입니다. 나는 글쓰기를 통해 내 지식을 공유하는 것을 좋아하며 이것이 바로 이 블로그에서 할 일이며 가젯, 소프트웨어, 하드웨어, 기술 동향 등에 관한 가장 흥미로운 모든 것을 보여 드리겠습니다. 제 목표는 여러분이 간단하고 재미있는 방식으로 디지털 세계를 탐색할 수 있도록 돕는 것입니다.
색인
- 1 PowerShell은 기본적으로 어떤 원격 측정 데이터를 전송합니까?
- 2 pwsh 시작 시 전송되는 데이터
- 3 세션 중에 전송된 원격 측정 데이터
- 4 PowerShell 기본 원격 측정 기능을 비활성화하는 방법
- 5 PowerShell에 영향을 미치는 주요 환경 변수
- 6 PowerShell에서 환경 변수에 접근하고 수정하는 방법
- 7 원격 측정 및 동작과 관련된 PowerShell 환경 변수
- 8 캐시 및 모듈 분석: 미세 조정
- 9 스크립트 및 원격 측정에 유용한 기타 환경 변수
- 10 실제 사례: 소피아 스크립트와 개인정보 보호 및 원격 측정 설정
- 11 PowerShell에서 Application Insights로 원격 측정 데이터를 전송합니다.
- 12 가용성 원격 측정 테스트를 위한 PowerShell 스크립트
- 13 Linux 또는 Windows에서 curl을 사용하여 원격 측정 테스트를 수행하세요.
- 14 요청 원격 측정 테스트를 위한 PowerShell 스크립트
- 15 원격 측정 데이터 전송 시 흔히 발생하는 SSL/TLS 문제
- 16 Microsoft 인증 오류가 발생했습니다. Application Insights에서 ID를 입력하십시오.
- 17 실제 환경에서의 원격 측정, 스크립트 및 모범 사례