Intune에서 Windows 10/11 디바이스에 PowerShell 스크립트 사용

Intune에서 Microsoft Intune 관리 확장을 사용하여 PowerShell 스크립트를 업로드합니다. 그런 다음, Windows 10 디바이스에서 이러한 스크립트를 실행합니다. 관리 확장은 Windows 디바이스 관리(MDM)를 개선하며 사용자가 최신 관리로 더 손쉽게 이행할 수 있도록 합니다.

중요

확장된 기능 및 버그 수정을 지원하려면 Windows 클라이언트의 Intune 관리 확장에서 .NET Framework 4.7.2 이상을 사용합니다. Windows 클라이언트가 이전 버전의 .NET Framework 계속 사용하는 경우 Intune 관리 확장이 계속 작동합니다. .NET Framework 4.7.2는 Win10 1809(RS5) 이상에 포함된 2018년 7월 10일부터 Windows 업데이트 사용할 수 있습니다. 여러 버전의 .NET Framework 버전은 디바이스에서 공존할 수 있습니다.

이 기능은 다음에 적용됩니다.

  • Windows 10 이상(Windows 10 Home 제외)

참고

Intune 관리 확장 필수 구성 요소가 충족되면 PowerShell 스크립트 또는 Win32 앱, Microsoft Store 앱, 사용자 지정 규정 준수 정책 설정 또는 자동 관리 수정이 사용자 또는 디바이스에 할당될 때 Intune 관리 확장이 자동으로 설치됩니다. 자세한 내용은 Intune 관리 확장 필수 조건을 참조하세요.

WPJ(작업 공간 연결) 디바이스에서 공식적으로 지원되지 않는 PowerShell 스크립트는 WPJ 디바이스에 배포할 수 있습니다. 특히 디바이스 컨텍스트 PowerShell 스크립트는 WPJ 디바이스에서 작동하지만 사용자 컨텍스트 PowerShell 스크립트는 기본적으로 무시됩니다. 사용자 컨텍스트 스크립트는 WPJ 디바이스에서 무시되며 Microsoft Intune 관리 센터에 보고되지 않습니다.

최신 관리 기능으로 전환

사용자 컴퓨팅은 디지털 트랜스포메이션을 거치고 있습니다. 기존의 IT는 단일 디바이스 플랫폼, 회사 소유 디바이스, 사무실에서 일하는 사용자, 여러 가지 사후 수동 IT 프로세스에 집중합니다. 오늘날의 직장에서는 사용자 및 비즈니스 소유의 많은 플랫폼을 사용합니다. 따라서 사용자는 어디서나 근무할 수 있으며 자동화된 사전 대응형 IT 프로세스가 제공됩니다.

Microsoft Intune과 같은 MDM 서비스는 Windows 10을 실행하는 모바일 및 데스크톱 디바이스를 관리할 수 있습니다. 기본 제공 Windows 10 관리 클라이언트는 Intune과 통신하여 엔터프라이즈 관리 작업을 실행합니다. 고급 디바이스 구성, 문제 해결과 같은 일부 작업이 필요할 수도 있습니다. Win32 앱 관리의 경우, Windows 10 디바이스에서 Win32 앱 관리 기능을 사용할 수 있습니다.

Intune 관리 확장은 기본 제공 Windows 10 MDM 기능을 보완합니다. Windows 10 디바이스에서 실행할 PowerShell 스크립트를 만들 수 있습니다. 예를 들어 고급 디바이스 구성을 수행하는 PowerShell 스크립트를 만듭니다. 그런 다음, 스크립트를 Intune에 업로드하고, 스크립트를 Microsoft Entra 그룹에 할당하고, 스크립트를 실행합니다. 그런 다음, 시작부터 완료까지 스크립트의 실행 상태를 모니터링할 수 있습니다.

시작하기 전에

  • 스크립트가 사용자 컨텍스트로 설정되어 있고 최종 사용자에게 관리자 권한이 있으면 기본적으로 PowerShell 스크립트가 관리자 권한으로 실행됩니다.

  • 최종 사용자는 PowerShell 스크립트를 실행하기 위해 디바이스에 로그인할 필요가 없습니다.

  • Intune 관리 확장 에이전트는 다시 부팅할 때마다 새 스크립트 또는 변경 내용을 확인합니다. 정책을 Microsoft Entra 그룹에 할당하면 PowerShell 스크립트가 실행되고 실행 결과가 보고됩니다. 스크립트는 한 번 실행되면 스크립트 또는 정책이 변경되기 전에는 다시 실행되지 않습니다. 스크립트가 실패하는 경우 Intune 관리 확장 에이전트는 다음 3개의 연속 Intune 관리 확장 에이전트 체크 인에 대해 스크립트를 세 번 다시 시도합니다.

  • 공유 디바이스의 경우 로그인하는 모든 새 사용자에 대해 PowerShell 스크립트가 실행됩니다.

  • PowerShell 스크립트는 Win32 앱을 실행하기 전에 실행됩니다. 즉, PowerShell 스크립트가 먼저 실행됩니다. 그런 다음, Win32 앱이 실행됩니다.

  • PowerShell 스크립트는 30분 후에 시간 초과됩니다.

중요

PowerShell 스크립트 및 수정 스크립트를 사용할 때 개인 정보 보호 인식에 대한 모범 사례는 다음과 같습니다.

  • 스크립트에 중요한 정보 유형(예: 암호)을 포함하지 마세요.
  • 스크립트에 PII(개인 식별 정보)를 포함하지 마세요.
  • 디바이스에서 PII를 수집하는 데 스크립트를 사용하지 마세요.
  • 항상 개인 정보 모범 사례를 따르세요.

관련 정보는 수정을 참조하세요.

필수 구성 요소

Intune 관리 확장에는 다음과 같은 필수 구성 요소가 있습니다. 필수 구성 요소가 충족되면, Intune 관리 확장은 PowerShell 스크립트 또는 Win32 앱이 사용자 또는 디바이스에 할당될 때 자동으로 설치됩니다.

  • Windows 10 버전 1607 이상을 실행하는 디바이스. 디바이스가 대량 자동 등록을 통해 등록된 경우 디바이스는 Windows 10 버전 1709 이상을 실행해야 합니다. Intune 관리 확장은 S 모드의 Windows 10에서 지원되지 않습니다. S 모드는 스토어 이외의 앱 실행을 허용하지 않기 때문입니다.

  • 다음을 포함하여 Microsoft Entra ID 조인된 디바이스

  • Microsoft Entra 등록/작업 공간 조인(WPJ): Microsoft Entra ID 등록된 디바이스는 자세한 내용은 원활한 2단계 인증으로 Workplace Join을 참조하세요. 일반적으로 설정>계정 액세스 회사 또는 학교를 통해 회사 또는 학교 계정이 추가된 BYOD(Bring Your Own Device) 디바이스입니다>.

  • Intune에 등록된 디바이스는 다음을 포함합니다.

    • 그룹 정책(GPO)에 등록된 디바이스. 지침은 그룹 정책을 사용하여 Windows 10 디바이스 자동 등록을 참조하세요.

    • Intune에 수동으로 디바이스를 등록하는 경우:

      • intune에 대한 자동 등록은 Microsoft Entra ID 사용하도록 설정됩니다. 사용자는 로컬 사용자 계정을 사용하여 디바이스에 로그인하고 수동으로 디바이스를 조인하여 Microsoft Entra ID. 그런 다음, Microsoft Entra 계정을 사용하여 디바이스에 로그인합니다.

      또는

      • 사용자는 Microsoft Entra 계정을 사용하여 디바이스에 로그인한 다음 Intune에 등록합니다.
    • Configuration Manager 및 Intune을 사용하는 공동 관리 디바이스. Win32 앱을 설치할 때 워크로드가 파일럿 Intune 또는 Intune으로 설정되어 있어야 합니다. PowerShell 스크립트는 워크로드가 Configuration Manager로 설정된 경우에도 실행됩니다. Intune 관리 확장은 디바이스를 PowerShell 스크립트의 대상으로 지정하면 디바이스에 배포됩니다. 디바이스는 Microsoft Entra ID 또는 Microsoft Entra 하이브리드 조인 디바이스여야 합니다. 또한 Windows 10 버전 1607 이상이 실행되어야 합니다. 지침은 다음 문서를 참조하세요.

  • Intune 관리 확장을 실행하는 클라이언트에 배포된 스크립트는 디바이스의 시스템 시계가 몇 달 또는 몇 년 정도로 한참 뒤떨어진 경우 실행되지 않습니다. 시스템 시계를 최신으로 설정하면 스크립트가 예상대로 실행됩니다.

참고

Windows 10 VM을 사용하는 방법에 대한 자세한 내용은 Intune에서 Windows 10 가상 머신 사용을 참조하세요.

스크립트 정책 만들기 및 할당

  1. Microsoft Intune 관리 센터에 로그인합니다.

  2. 디바이스>스크립트>추가>Windows 10 이상을 선택합니다.

    Windows 10 디바이스에 대한 새 스크립트를 만드는 방법을 보여 주는 스크린샷

  3. 기본에서 다음 속성을 입력하고 다음을 선택합니다.

    • 이름: PowerShell 스크립트의 이름을 입력합니다.
    • 설명: PowerShell 스크립트의 설명을 입력합니다. 이 설정은 선택 사항이지만 권장됩니다.
  4. 스크립트 설정에 다음 속성을 입력하고 다음을 선택합니다.

    • 스크립트 위치: PowerShell 스크립트를 찾습니다. 스크립트는 200KB(ASCII) 미만이어야 합니다.

    • 로그온한 자격 증명을 사용하여 이 스크립트를 실행합니다. (기본값)를 선택하여 디바이스에서 사용자의 자격 증명으로 스크립트를 실행합니다. 아니요를 선택하여 시스템 컨텍스트에서 스크립트를 실행합니다. 많은 관리자들이 를 선택합니다. 스크립트를 시스템 컨텍스트에서 실행해야 하는 경우 아니요를 선택합니다.

    • 스크립트 서명 검사 적용: 신뢰할 수 있는 게시자가 스크립트에 서명해야 하는 경우 (기본값)를 선택합니다. 스크립트에 서명할 요구 사항이 없으면 아니요 를 선택합니다.

    • 64비트 PowerShell 호스트에서 스크립트 실행: 64비트 클라이언트 아키텍처의 64비트 PowerShell 호스트에서 스크립트를 실행하려면 를 선택합니다. 32비트 PowerShell 호스트에서 스크립트를 실행하려면 아니요(기본값)를 선택합니다.

      또는 아니요로 설정할 때 신규 및 기존 정책 동작에 대한 다음 표를 사용하세요.

      64비트 호스트에서 스크립트 실행 클라이언트 아키텍처 새 스크립트 기존 정책 스크립트
      아니요 32비트 32비트 PowerShell 호스트 지원됨 32비트 PowerShell 호스트에서만 실행되며, 이 호스트는 32비트 및 64비트 아키텍처에서 작동합니다.
      64비트 64비트 아키텍처용 64비트 PowerShell 호스트에서 스크립트를 실행합니다. 32비트에서 실행하면 스크립트가 32비트 PowerShell 호스트에서 실행됩니다. 32비트 PowerShell 호스트에서 스크립트를 실행합니다. 이 설정을 64비트로 변경하면 스크립트가 64비트 PowerShell 호스트에서 열리고(실행되지 않음) 결과를 보고합니다. 32비트에서 실행하면 스크립트가 32비트 PowerShell 호스트에서 실행됩니다.
  5. 범위 태그를 선택합니다. 범위 태그는 선택 사항입니다. 자세한 내용은 분산형 IT에 RBAC(역할 기반 액세스 제어) 및 범위 태그 사용을 참조하세요.

    범위 태그를 추가하려면:

    1. scope 태그> 선택을 선택하고 선택 목록에서 > 기존 scope 태그를 선택합니다.

    2. 완료되면 다음을 선택합니다.

  6. 할당>포함할 그룹 선택을 선택합니다. Microsoft Entra 그룹의 기존 목록이 표시됩니다.

    1. 디바이스에서 스크립트를 받는 사용자가 포함된 그룹을 하나 이상 선택합니다. 선택을 선택합니다. 선택한 그룹은 목록에 표시되고 정책을 받습니다.

      참고

      Intune의 PowerShell 스크립트는 Microsoft Entra 디바이스 보안 그룹 또는 Microsoft Entra 사용자 보안 그룹을 대상으로 지정할 수 있습니다. 그러나 WPJ(작업 공간 조인) 디바이스를 대상으로 하는 경우 Microsoft Entra 디바이스 보안 그룹만 사용할 수 있습니다(사용자 대상 지정은 무시됨). 자세한 내용은 WPJ(작업 공간 연결) 디바이스에 대한 Win32 앱 지원을 참조하세요.

    2. 다음을 선택합니다.

      Microsoft Intune에서 PowerShell 스크립트를 디바이스 그룹에 할당 또는 배포

  7. 검토 + 추가에 구성한 설정의 요약이 표시됩니다. 추가를 선택하여 스크립트를 저장합니다. 추가를 선택하면 선택한 그룹에 정책이 배포됩니다.

스크립트 실행 실패 예제

오전 8시

  • 체크 인
  • ConfigScript01 스크립트 실행
  • 스크립트 실패

오전 9시

  • 체크 인
  • ConfigScript01 스크립트 실행
  • 스크립트 실패(재시도 횟수 = 1)

오전 10시

  • 체크 인
  • ConfigScript01 스크립트 실행
  • 스크립트 실패(재시도 횟수 = 2)

오전 11시

  • 체크 인
  • ConfigScript01 스크립트 실행
  • 스크립트 실패(재시도 횟수 = 3)

오후 12시

  • 체크 인
  • 더 이상 ConfigScript01 스크립트 실행을 시도하지 않습니다.
  • 스크립트가 변경되지 않으면 스크립트를 실행하기 위한 추가 시도가 수행되지 않습니다.

실행 상태 모니터링

포털에서 사용자 및 디바이스에 대한 PowerShell 스크립트의 실행 상태를 모니터링할 수 있습니다.

PowerShell 스크립트에서 모니터링할 스크립트를 선택하고, 모니터를 선택한 다음, 다음 보고서 중 하나를 선택합니다.

  • 디바이스 상태
  • 사용자 상태

Intune 관리 확장 로그

클라이언트 컴퓨터의 에이전트 로그는 일반적으로 C:\ProgramData\Microsoft\IntuneManagementExtension\Logs에 있습니다. CMTrace.exe를 사용하여 이러한 로그 파일을 볼 수 있습니다.

Microsoft Intune의 스크린샷 또는 샘플 cmtrace 에이전트 로그

스크립트 삭제

PowerShell 스크립트에서 스크립트를 마우스 오른쪽 단추로 클릭하고 삭제를 선택합니다.

일반적인 문제 및 해결 방법

문제: Intune 관리 확장이 다운로드되지 않음

가능한 해결 방법:

  • 디바이스가 Microsoft Entra ID 조인되지 않습니다. 디바이스가 필수 구성 요소(이 문서의)를 충족하는지 확인하세요.
  • 사용자 또는 디바이스가 속한 그룹에 할당된 PowerShell 스크립트나 Win32 앱이 없습니다.
  • 디바이스가 Intune 서비스에 체크 인할 수 없습니다. 예를 들어 인터넷, WNS(Windows 푸시 알림 서비스) 등에 액세스할 수 없습니다.
  • 디바이스가 S 모드에 있습니다. S 모드에서 실행 중인 디바이스에서는 Intune 관리 확장이 지원되지 않습니다.

디바이스가 자동 등록되었는지 확인하려면 다음을 수행합니다.

  1. 설정>계정>회사 또는 학교 액세스로 이동합니다.
  2. 가입된 계정 >정보를 선택합니다.
  3. 고급 진단 보고서 아래에서 보고서 만들기를 선택합니다.
  4. 웹 브라우저에서 MDMDiagReport를 엽니다.
  5. MDMDeviceWithAAD 속성을 검색합니다. 속성이 있으면 디바이스가 자동 등록됩니다. 이 속성이 없으면 디바이스가 자동 등록되지 않습니다.

Windows 10 자동 등록 사용에는 Intune에서 자동 등록을 구성하는 단계가 포함됩니다.

문제: PowerShell 스크립트가 실행되지 않음

가능한 해결 방법:

  • PowerShell 스크립트는 로그인할 때마다 실행되지는 않습니다. 실행:

    • 스크립트가 디바이스에 할당된 경우

    • 스크립트를 변경하는 경우 업로드하고 스크립트를 사용자 또는 디바이스에 할당

      Microsoft Intune 관리 확장은 서비스 앱(services.msc)에 나열된 다른 서비스와 마찬가지로 디바이스에서 실행되는 서비스입니다. 디바이스를 다시 부팅한 후 이 서비스를 다시 시작하고 Intune 서비스를 사용하여 할당된 PowerShell 스크립트를 확인할 수도 있습니다. Microsoft Intune 관리 확장 서비스가 수동으로 설정된 경우 디바이스를 다시 부팅한 후 서비스가 다시 시작되지 않을 수 있습니다.

  • 디바이스가 Microsoft Entra ID 조인되어 있는지 확인합니다. 회사 또는 organization(Microsoft Entra ID 등록됨)에만 가입 디바이스는 스크립트를 받지 않습니다.

  • Intune 관리 확장이 %ProgramFiles(x86)%\Microsoft Intune Management Extension에 다운로드되었는지 확인합니다.

  • 스크립트는 Surface Hubs 또는 S 모드의 Windows 10에서 실행되지 않습니다.

  • 로그에 오류가 있는지 검토합니다. 이 문서 내의 Intune 관리 확장 로그를 참조하세요.

  • 가능한 권한 문제의 경우 PowerShell 스크립트의 속성이 Run this script using the logged on credentials로 설정되었는지 확인합니다. 또한 로그인한 사용자에게 스크립트를 실행할 적절한 권한이 있는지 확인합니다.

  • 스크립팅 문제를 격리하는 방법은 다음과 같습니다.

    • 디바이스에서 PowerShell 실행 구성을 검토합니다. 지침은 PowerShell 실행 정책을 참조하세요.

    • Intune 관리 확장을 사용하여 샘플 스크립트를 실행합니다. 예를 들어 C:\Scripts 디렉터리를 만들고 모든 사용자에게 모든 권한을 제공합니다. 다음 스크립트를 실행합니다.

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

      성공하면 output.txt가 만들어지고 “Script worked” 텍스트가 포함됩니다.

    • Intune 없이 스크립트 실행을 테스트하려면 로컬로 psexec 도구를 사용하여 시스템 계정에서 스크립트를 실행합니다.

      psexec -i -s

    • 스크립트가 성공했다고 보고하지만 실제로는 실패했다면, 바이러스 백신 서비스가 AgentExecutor를 샌드박스 처리하고 있을지도 모릅니다. 다음 스크립트는 Intune에서 항상 실패를 보고합니다. 테스트를 위해 이 스트립트를 사용하세요.

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

      스크립트에서 성공했다고 보고한다면 AgentExecutor.log를 참조해 오류 출력을 확인하세요. 스크립트가 실행되면 길이는 2여야 >합니다.

    • .error.output 파일을 캡처하려면 다음 코드 조각이 AgentExecutor를 통해 PowerShell x86(C:\Windows\SysWOW64\WindowsPowerShell\v1.0)으로 스크립트를 실행해야 합니다. 이렇게 해야 로그가 유지되어 검토할 수 있게 됩니다. Intune 관리 확장은 스크립트가 실행되면 로그를 삭제한다는 점에 유의하세요.

      $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
      

다음 단계

프로필을 모니터링하고 문제를 해결합니다.