Configuration Manager에서 작업 순서 변수를 사용하는 방법
적용 대상: Configuration Manager(현재 분기)
Configuration Manager의 OS 배포 기능에서 작업 순서 엔진은 많은 변수를 사용하여 동작을 제어합니다. 다음 변수를 사용하여 다음을 수행합니다.
- 단계에 대한 조건 설정
- 특정 단계에 대한 동작 변경
- 더 복잡한 작업을 위해 스크립트에서 사용
사용 가능한 모든 작업 순서 변수에 대한 참조는 작업 순서 변수를 참조하세요.
변수 형식
다음과 같은 여러 유형의 변수가 있습니다.
기본 제공 변수
기본 제공 변수는 작업 순서가 실행되는 환경에 대한 정보를 제공합니다. 해당 값은 전체 작업 순서에서 사용할 수 있습니다. 일반적으로 작업 순서 엔진은 모든 단계를 실행하기 전에 기본 제공 변수를 초기화합니다.
예를 들어 는 _SMSTSLogPath
Configuration Manager 구성 요소가 로그 파일을 작성하는 경로를 지정하는 환경 변수입니다. 모든 작업 순서 단계에서 이 환경 변수에 액세스할 수 있습니다.
작업 순서는 각 단계 전에 일부 변수를 평가합니다. 예를 들어 는 _SMSTSCurrentActionName
현재 단계의 이름을 나열합니다.
작업 변수
작업 순서 작업 변수는 단일 작업 순서 단계에서 사용하는 구성 설정을 지정합니다. 기본적으로 이 단계는 실행되기 전에 설정을 초기화합니다. 이러한 설정은 연결된 작업 순서 단계가 실행되는 동안에만 사용할 수 있습니다. 작업 순서는 단계를 실행하기 전에 환경에 작업 변수 값을 추가합니다. 그런 다음, 단계가 실행된 후 환경에서 값을 제거합니다.
예를 들어 명령줄 실행 단계를 작업 순서에 추가합니다. 이 단계에는 시작 속성이 포함됩니다. 작업 순서는 이 속성의 기본값을 변수로 WorkingDirectory
저장합니다. 작업 순서는 명령줄 실행 단계를 실행하기 전에 이 값을 초기화합니다. 이 단계가 실행되는 동안 값에서 시작 속성 값에 액세스합니다 WorkingDirectory
. 단계가 완료되면 작업 순서는 환경에서 변수 값을 WorkingDirectory
제거합니다. 작업 순서에 다른 명령줄 실행 단계가 포함된 경우 새 WorkingDirectory
변수를 초기화합니다. 이때 작업 순서는 변수를 현재 단계의 시작 값으로 설정합니다. 자세한 내용은 WorkingDirectory를 참조하세요.
단계가 실행되면 작업 변수의 기본값 이 표시됩니다.
새 값을 설정하면 작업 순서의 여러 단계에서 사용할 수 있습니다. 기본값을 재정의하면 새 값이 환경에 유지됩니다. 이 새 값은 작업 순서의 다른 단계에 대한 기본값을 재정의합니다. 예를 들어 작업 순서 변수 설정 단계를 작업 순서 의 첫 번째 단계로 추가합니다. 이 단계에서는 변수를 로 WorkingDirectory
C:\
설정합니다. 작업 순서의 명령줄 실행 단계에서는 새 시작 디렉터리 값을 사용합니다.
일부 작업 순서 단계에서는 특정 작업 변수를 출력으로 표시합니다. 작업 순서의 뒷부분에서 이러한 출력 변수를 읽습니다.
참고
모든 작업 순서 단계에 작업 변수가 있는 것은 아닙니다. 예를 들어 BitLocker 사용 작업과 연결된 변수가 있지만 BitLocker 사용 안 함 작업과 연결된 변수는 없습니다.
사용자 지정 변수
이러한 변수는 Configuration Manager에서 만들지 않는 변수입니다. 조건, 명령줄 또는 스크립트에서 사용할 고유한 변수를 초기화합니다.
새 작업 순서 변수의 이름을 지정하는 경우 다음 지침을 따릅니다.
작업 순서 변수 이름에는 문자, 숫자, 밑줄 문자(
_
) 및 하이픈(-
)이 포함될 수 있습니다.작업 순서 변수 이름의 최소 길이는 1자이고 최대 길이는 256자입니다.
사용자 정의 변수는 문자(
A-Z
또는a-z
)로 시작해야 합니다.사용자 정의 변수 이름은 밑줄 문자로 시작할 수 없습니다. 읽기 전용 작업 순서 변수 앞에는 밑줄 문자만 있습니다.
작업 순서 변수 이름은 대/소문자를 구분하지 않습니다. 예를 들어 및
OSDVAR
osdvar
는 동일한 작업 순서 변수입니다.작업 순서 변수 이름은 공백으로 시작하거나 끝낼 수 없습니다. 또한 포함된 공백을 가질 수 없습니다. 작업 순서는 변수 이름의 시작 또는 끝에 있는 공백을 무시합니다.
만들 수 있는 작업 순서 변수 수에 대한 제한은 설정되지 않습니다. 그러나 변수 수는 작업 순서 환경의 크기에 따라 제한됩니다. 작업 순서 환경의 총 크기 제한은 8KB입니다. 자세한 내용은 작업 순서 정책의 크기 줄이기를 참조하세요.
읽기 전용 변수
읽기 전용인 일부 변수의 값은 변경할 수 없습니다. 일반적으로 이름은 밑줄 문자(_
)로 시작합니다. 작업 순서는 작업에 사용합니다. 읽기 전용 변수는 작업 순서 환경에 표시됩니다.
이러한 변수는 스크립트 또는 명령줄에서 유용합니다. 예를 들어 명령줄을 실행하고 출력을 다른 로그 파일로 로그 파일에 _SMSTSLogPath
파이핑합니다.
참고
읽기 전용 작업 순서 변수는 작업 순서의 단계로 읽을 수 있지만 설정할 수는 없습니다. 예를 들어 명령줄 실행 단계에 대한 명령줄의 일부로 읽기 전용 변수를 사용합니다. 작업 순서 변수 설정 단계를 사용하여 읽기 전용 변수를 설정할 수 없습니다.
배열 변수
작업 순서는 일부 변수를 배열로 저장합니다. 배열의 각 요소는 단일 개체에 대한 설정을 나타냅니다. 디바이스에 구성할 개체가 둘 이상 있는 경우 이러한 변수를 사용합니다. 다음 작업 순서 단계에서는 배열 변수를 사용합니다.
변수를 설정하는 방법
읽기 전용이 아닌 사용자 지정 변수 또는 변수의 경우 변수 값을 초기화하고 설정하는 몇 가지 메서드가 있습니다.
- 작업 순서 변수 단계 설정
- 동적 변수 설정 단계
- PowerShell 스크립트 실행 단계
- 컬렉션 및 디바이스 변수
- TSEnvironment COM 개체
- 시작 전 명령
- 작업 순서 마법사
- 작업 순서 미디어 마법사
변수를 만드는 것과 동일한 메서드를 사용하여 환경에서 변수를 삭제합니다. 변수를 삭제하려면 변수 값을 빈 문자열로 설정합니다.
메서드를 결합하여 동일한 시퀀스에 대해 작업 순서 변수를 다른 값으로 설정할 수 있습니다. 예를 들어 작업 순서 편집기를 사용하여 기본값을 설정한 다음 스크립트를 사용하여 사용자 지정 값을 설정합니다.
다른 방법으로 동일한 변수를 설정하는 경우 작업 순서 엔진은 다음 순서를 사용합니다.
먼저 컬렉션 변수를 평가합니다.
디바이스별 변수는 컬렉션에 설정된 동일한 변수를 재정의합니다.
작업 순서 중에 메서드에서 설정한 변수가 컬렉션 또는 디바이스 변수보다 우선합니다.
작업 순서 변수 값에 대한 일반적인 제한 사항
작업 순서 변수 값은 4,000자를 초과할 수 없습니다.
읽기 전용 작업 순서 변수는 변경할 수 없습니다. 읽기 전용 변수에는 밑줄 문자(
_
)로 시작하는 이름이 있습니다.작업 순서 변수 값은 값의 사용량에 따라 대/소문자를 구분할 수 있습니다. 대부분의 경우 작업 순서 변수 값은 대/소문자를 구분하지 않습니다. 암호를 포함하는 변수는 대/소문자를 구분합니다.
작업 순서 변수 설정
작업 순서에서 이 단계를 사용하여 단일 변수를 단일 값으로 설정합니다.
자세한 내용은 작업 순서 변수 설정을 참조하세요.
동적 변수 설정
작업 순서에서 이 단계를 사용하여 하나 이상의 작업 순서 변수를 설정합니다. 이 단계에서 규칙을 정의하여 사용할 변수와 값을 결정합니다.
자세한 내용은 동적 변수 설정을 참조하세요.
PowerShell 스크립트 실행
작업 순서에서 이 단계를 사용하여 PowerShell 스크립트를 사용하여 작업 순서 변수를 설정합니다.
패키지에서 스크립트 이름을 지정하거나 단계에서 PowerShell 스크립트를 직접 입력할 수 있습니다. 그런 다음 , 작업 순서 변수에 출력 에 대한 단계 속성을 사용하여 스크립트 출력을 사용자 지정 작업 순서 변수에 저장합니다.
이 단계에 대한 자세한 내용은 PowerShell 스크립트 실행을 참조하세요.
참고
PowerShell 스크립트를 사용하여 TSEnvironment 개체를 사용하여 하나 이상의 변수를 설정할 수도 있습니다. 자세한 내용은 Configuration Manager SDK 에서 실행 중인 작업 순서에서 변수를 사용하는 방법을 참조하세요.
PowerShell 스크립트 실행 단계의 예제 시나리오
환경에 여러 국가/지역에 사용자가 있으므로 OS 언어를 쿼리하여 여러 언어별 OS 적용 단계에 대한 조건으로 설정하려고 합니다.
OS 적용 단계 전에 작업 순서에 PowerShell 스크립트 실행 인스턴스를 추가합니다.
PowerShell 스크립트 입력 옵션을 사용하여 다음 명령을 지정합니다.
(Get-Culture).TwoLetterISOLanguageName
cmdlet에 대한 자세한 내용은 Get-Culture를 참조하세요. 두 글자 ISO 언어 이름에 대한 자세한 내용은 ISO 639-1 코드 목록을 참조하세요.
작업 순서 변수에 출력 옵션의 경우 를 지정합니다
CurrentOSLanguage
.영어 이미지에 OS 적용 단계에서 다음 조건을 만듭니다.
Task Sequence Variable CurrentOSLanguage equals "en"
팁
단계에서 조건을 만드는 방법에 대한 자세한 내용은 변수에 액세스하는 방법 - 단계 조건을 참조하세요.
작업 순서를 저장하고 배포합니다.
PowerShell 스크립트 실행 단계가 영어 버전의 Windows를 사용하는 디바이스에서 실행되면 명령은 값을 en
반환합니다. 그런 다음 해당 값을 사용자 지정 변수에 저장합니다. 영어 이미지에 OS 적용 단계가 동일한 디바이스에서 실행되면 조건은 true로 평가됩니다. 여러 언어에 대해 OS 적용 단계의 여러 인스턴스가 있는 경우 작업 순서는 OS 언어와 일치하는 단계를 동적으로 실행합니다.
컬렉션 및 디바이스 변수
디바이스 및 컬렉션에 대한 사용자 지정 작업 순서 변수를 정의할 수 있습니다. 디바이스에 대해 정의하는 변수를 디바이스별 작업 순서 변수라고 합니다. 컬렉션에 대해 정의된 변수를 컬렉션별 작업 순서 변수라고 합니다. 충돌이 있는 경우 디바이스별 변수가 컬렉션별 변수보다 우선합니다. 이 동작은 특정 디바이스에 할당된 작업 순서 변수가 자동으로 디바이스를 포함하는 컬렉션에 할당된 변수보다 우선 순위가 높다는 것을 의미합니다.
예를 들어 디바이스 XYZ는 컬렉션 ABC의 멤버입니다. 값이 1인 컬렉션 ABC에 MyVariable을 할당합니다. 또한 값이 2인 디바이스 XYZ에 MyVariable을 할당합니다. XYZ에 할당된 변수는 컬렉션 ABC에 할당된 변수보다 우선 순위가 높습니다. 이 변수가 있는 작업 순서가 XYZ에서 실행되면 MyVariable의 값은 2입니다.
Configuration Manager 콘솔에 표시되지 않도록 디바이스별 및 컬렉션별 변수를 숨길 수 있습니다. Configuration Manager 콘솔에 이 값을 표시하지 않음 옵션을 사용하면 변수 값이 콘솔에 표시되지 않습니다. 작업 순서 로그 파일(smsts.log) 또는 작업 순서 디버거에는 변수 값도 표시되지 않습니다. 변수는 실행될 때 작업 순서에서 계속 사용할 수 있습니다. 이러한 변수를 더 이상 숨기지 않으려면 먼저 삭제합니다. 그런 다음, 변수를 숨기는 옵션을 선택하지 않고 변수를 다시 정의합니다.
경고
명령줄 실행 단계의 명령줄에 변수를 포함하면 작업 순서 로그 파일에 변수 값을 포함한 전체 명령줄이 표시됩니다. 잠재적으로 중요한 데이터가 로그 파일에 나타나지 않도록 하려면 작업 순서 변수 OSDDoNotLogCommand 를 로 TRUE
설정합니다.
기본 사이트 또는 중앙 관리 사이트에서 디바이스별 변수를 관리할 수 있습니다. Configuration Manager는 디바이스에 대해 1,000개 이상의 할당된 변수를 지원하지 않습니다.
중요
작업 순서에 컬렉션별 변수를 사용하는 경우 다음 동작을 고려합니다.
컬렉션에 대한 변경 내용은 항상 계층 전체에서 복제됩니다. 컬렉션 변수에 대한 변경 내용은 현재 사이트의 멤버뿐만 아니라 계층 구조 전체의 컬렉션의 모든 멤버에 적용됩니다.
컬렉션을 삭제하면 이 작업은 컬렉션에 대해 구성한 작업 순서 변수도 삭제합니다.
디바이스에 대한 작업 순서 변수 만들기
Configuration Manager 콘솔에서 자산 및 규정 준수 작업 영역으로 이동하여 디바이스 노드를 선택합니다.
대상 디바이스를 선택하고 속성을 선택합니다.
속성 대화 상자에서 변수 탭으로 전환합니다.
만들려는 각 변수에 대해 새로 만들기 아이콘을 선택합니다. 작업 순서 변수의 이름 및 값을 지정합니다. Configuration Manager 콘솔에 표시되지 않도록 변수를 숨기려면 Configuration Manager 콘솔에 이 값을 표시하지 않음 옵션을 선택합니다.
디바이스 속성에 모든 변수를 추가한 후 확인을 선택합니다.
컬렉션에 대한 작업 순서 변수 만들기
Configuration Manager 콘솔에서 자산 및 규정 준수 작업 영역으로 이동하여 디바이스 컬렉션 노드를 선택합니다. 대상 컬렉션을 선택하고 속성을 선택합니다.
속성 대화 상자에서 컬렉션 변수 탭으로 전환합니다.
만들려는 각 변수에 대해 새로 만들기 아이콘을 선택합니다. 작업 순서 변수의 이름 및 값을 지정합니다. Configuration Manager 콘솔에 표시되지 않도록 변수를 숨기려면 Configuration Manager 콘솔에 이 값을 표시하지 않음 옵션을 선택합니다.
필요에 따라 작업 순서 변수를 평가할 때 사용할 Configuration Manager의 우선 순위를 지정합니다.
컬렉션 속성에 모든 변수를 추가한 후 확인을 선택합니다.
TSEnvironment COM 개체
스크립트의 변수를 사용하려면 TSEnvironment 개체를 사용합니다.
자세한 내용은 Configuration Manager SDK 에서 실행 중인 작업 순서에서 변수를 사용하는 방법을 참조하세요.
시작 전 명령
시작 전 명령은 사용자가 작업 순서를 선택하기 전에 Windows PE에서 실행되는 스크립트 또는 실행 파일입니다. 시작 전 명령은 변수를 쿼리하거나 사용자에게 정보를 묻는 메시지를 표시한 다음 환경에 저장할 수 있습니다. TSEnvironment COM 개체를 사용하여 시작 전 명령에서 변수를 읽고 씁니다.
자세한 내용은 작업 순서 미디어에 대한 사전 시작 명령을 참조하세요.
작업 순서 마법사
작업 순서 마법사 창에서 작업 순서를 선택하면 작업 순서 변수를 편집할 페이지에 편집 단추가 포함됩니다. 액세스 가능한 바로 가기 키를 사용하여 변수를 편집할 수 있습니다. 이 변경은 마우스를 사용할 수 없는 경우에 도움이 됩니다.
작업 순서 미디어 마법사
미디어에서 실행되는 작업 순서에 대한 변수를 지정합니다. 미디어를 사용하여 OS를 배포할 때 작업 순서 변수를 추가하고 미디어를 만들 때 해당 값을 지정합니다. 변수와 해당 값은 미디어에 저장됩니다.
참고
작업 순서는 독립 실행형 미디어에 저장됩니다. 그러나 사전 준비된 미디어와 같은 다른 모든 유형의 미디어는 관리 지점에서 작업 순서를 검색합니다.
미디어에서 작업 순서를 실행하는 경우 마법사의 사용자 지정 페이지에 변수를 추가할 수 있습니다.
컬렉션별 또는 컴퓨터별 변수 대신 미디어 변수를 사용합니다. 작업 순서가 미디어에서 실행되는 경우 컴퓨터별 및 컬렉션별 변수는 적용되지 않으며 사용되지 않습니다.
팁
작업 순서는 Configuration Manager 콘솔을 실행하는 컴퓨터의 CreateTSMedia.log 파일에 패키지 ID 및 시작 전 명령줄을 씁니다. 이 로그 파일에는 모든 작업 순서 변수에 대한 값이 포함됩니다. 이 로그 파일을 검토하여 작업 순서 변수의 값을 확인합니다.
자세한 내용은 작업 순서 미디어 만들기를 참조하세요.
변수에 액세스하는 방법
이전 섹션의 메서드 중 하나를 사용하여 변수와 해당 값을 지정한 후 작업 순서에서 사용합니다. 예를 들어 기본 제공 작업 순서 변수의 기본값에 액세스하거나 변수 값에 대한 단계를 조건부로 만듭니다.
다음 메서드를 사용하여 작업 순서 환경에서 변수 값에 액세스합니다.
단계에서 사용
작업 순서 단계에서 설정에 대한 변수 값을 지정합니다. 작업 순서 편집기에서 단계를 편집하고 변수 이름을 필드 값으로 지정합니다. 변수 이름을 백분율 기호(%
)로 묶습니다.
예를 들어 명령줄 실행 단계의 명령줄 필드의 일부로 변수 이름을 사용합니다. 다음 명령줄은 컴퓨터 이름을 텍스트 파일에 씁니다.
cmd.exe /c echo %_SMSTSMachineName% > C:\File.txt
단계 조건
단계 또는 그룹의 조건의 일부로 기본 제공 또는 사용자 지정 작업 순서 변수를 사용합니다. 작업 순서는 단계 또는 그룹을 실행하기 전에 변수 값을 평가합니다.
변수 값을 평가하는 조건을 추가하려면 다음 단계를 수행합니다.
작업 순서 편집기에서 조건을 추가할 단계 또는 그룹을 선택합니다.
단계 또는 그룹의 옵션 탭으로 전환합니다. 조건 추가를 클릭하고 작업 순서 변수를 선택합니다.
작업 순서 변수 대화 상자에서 다음 설정을 지정합니다.
변수: 변수의 이름입니다. 예를 들면
_SMSTSInWinPE
와 같습니다.조건: 변수 값을 평가할 조건입니다. 사용할 수 있는 조건은 다음과 같습니다.
- 존재
- 존재하지 않음
- 같음
- 같지 않음
- 보다 큼
- 보다 크거나 같음
- 보다 작음
- 작거나 같음
- Like(및
?
의*
와일드카드 지원) - 마음에 들지 않음(버전 2103 이상)
값: 확인할 변수의 값입니다. 예를 들면
false
와 같습니다.
위의 세 가지 예제는 Windows PE의 부팅 이미지에서 작업 순서가 실행 중인지 여부를 테스트하는 일반적인 조건을 형성합니다.
작업 순서 변수
_SMSTSInWinPE equals "false"
기존 OS 이미지를 설치하려면 기본 작업 순서 템플릿의 파일 및 설정 캡처 그룹에서 이 조건을 참조하세요.
조건에 대한 자세한 내용은 작업 순서 편집기 - 조건을 참조하세요.
사용자 지정 스크립트
작업 순서가 실행되는 동안 Microsoft.SMS.TSEnvironment COM 개체를 사용하여 변수를 읽고 씁니다.
다음 Windows PowerShell 예제에서는 _SMSTSLogPath 변수를 쿼리하여 현재 로그 위치를 가져옵니다. 또한 스크립트는 사용자 지정 변수를 설정합니다.
# Create an object to access the task sequence environment
$tsenv = New-Object -ComObject Microsoft.SMS.TSEnvironment
# Query the environment to get an existing variable
# Set a variable for the task sequence log path
$LogPath = $tsenv.Value("_SMSTSLogPath")
# Or, convert all of the variables currently in the environment to PowerShell variables
$tsenv.GetVariables() | % { Set-Variable -Name "$_" -Value "$($tsenv.Value($_))" }
# Write a message to a log file
Write-Output "Hello world!" | Out-File -FilePath "$LogPath\mylog.log" -Encoding "Default" -Append
# Set a custom variable "startTime" to the current time
$tsenv.Value("startTime") = (Get-Date -Format HH:mm:ss) + ".000+000"
Windows 설치 응답 파일
제공하는 Windows 설치 응답 파일에는 포함된 작업 순서 변수가 있을 수 있습니다. 형식 %varname%
을 사용합니다. 여기서 varname 은 변수의 이름입니다.
Windows 및 ConfigMgr 설정 단계에서는 실제 변수 값의 변수 이름 문자열을 대체합니다. 이러한 포함된 작업 순서 변수는 unattend.xml 응답 파일의 숫자 전용 필드에서 사용할 수 없습니다.
자세한 내용은 Windows 및 ConfigMgr 설정을 참조하세요.