== mysql 5.7 설치

wget http://dev.mysql.com/get/mysql-apt-config_0.8.1-1_all.deb

sudo dpkg -i mysql-apt-config_0.8.1-1_all.deb

sudo apt-get update

sudo apt-get install mysql-server

mysql --version


// mysql 기본 보안설정을 수행

mysql_secure_installation


// 계정 접속 대역 설정

mysql -uroot -p

use mysql

select host, user from user;

grant all privileges on *.* to '계정ID'@'192.168.%' identified by '계정암호';

flush privileges;


sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

아래 bind-address를 주석 처리한다

       bind-address    = 127.0.0.1

sudo service mysql restart


== PHP 7.1설치

sudo add-apt-repository ppa:ondrej/php

sudo apt-get update

sudo apt-get install php7.1-fpm

sudo apt-get install php7.1-mysql



== nginx 설치

sudo apt-get install nginx

nginx -v

---- 1.4 버전이 설치되어 최신 버전을 다시 설치

sudo add-apt-repository ppa:nginx/stable

sudo apt-get update

sudo apt-get install nginx


브라우저에서 127.0.0.1 또는 IP 로 접속해서 nginx 기본페이지가 뜨는지 확인
설정파일 경로는 /etc/nginx/sites-enabled/default 파일
php 사용할테니 시작페이지에 index.php 파일을 추가
php 설정 정보 추가. 위에서 7.1을 설치 했으니 정보를 맞춰 준다. php정보는 /var/run/php/ 에 있다.
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php7.1-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
}

설정파일 안의 root 경로는 기본값이 /var/www/html

/var/www/html 에 index.php 파일을 생성한다
<?php echo phpinfo(); ?>

nginx 설정 로드 후 php페이지가 잘 뜨는지 확인한다.
sudo service nginx reload


nginx 서비스 재시작 방법
sudo service nginx restart
nginx 설정 반영 방법
sudo service nginx reload



AND

NVMe 사용하기

시스템 2018. 8. 10. 21:08

NVMe라는 좋은 스토리지가 나왔다.

   NVME : https://en.wikipedia.org/wiki/NVM_Express


== 특징

1. SSD와 같은 메모리 디스크를 그대로 사용하는데 이때 사용하는 프로토콜을 개선한 방식이다. 

2. H/W생상비용이 크게 차이가 없어서 그런지 비용대비 성능이 훨씬 높아졌다.

3. PCIe에 콘트롤러 없이 다이렉트로 연결하여 사용하는데 이때문에 H/W Raid구성이 불가능하여 장애대비를 하고자 한다면 S/W Raid(Storage Space나..)를 구성해야 한다.

4. PCIe에 다이렉트로 연결하다 보니 장애발생으로 교체하려면 OS 재시작이 필요하다

 

== SQL Server에서는 어디다 사용할 수 있을까?

1. BPE(Buffer pool extension)

2. tempdb

3. DB파일에서도 사용할때는 아무래도 S/W Raid를 묶어야 할것 같다.


결국 어느정도 장애를 허용할 수 있는 분야에 도입하는게 좋을것 같다는 생각이다.

SQL Server외에도 private cloud시스템의 스토리지, NoSQL DB들의 스토리지와 같은 서비스들이 있을것 같다.



AND

Hyper-V에서 NAT 사용

시스템 2018. 8. 10. 21:02

Hyper-V의 guest OS에서 IP를 추가로 할당 받을 수 없는 경우 host OS에서 NAT를 구성해 guest OS에서 인터넷이 가능하도록 구성할 수 있다.


1. Hyper-V에서 [가상 스위치 관리자]를 통해 [내부 네트워크]를 추가 한다.


 

2. guest OS 설정에서 네트워크 어댑터를 1번 단계에서 생성한 내부 네트워크 이름을 선택한다.


 

3. [제어판 – 네트워크 및 인터넷 – 네트워크 연결] 에서 [이더넷 – 속성 – 공유 탭]에서 [다른 네트워크 사용자가 이 컴퓨터의 인터넷 연결을 통해 연결할 수 있도록 허용]을 체크한다.


 

4. guest OS에서 dhcp로 IP를 할당해서 인터넷 연결을 확인한다.

 

AND

schtasks

시스템 2007. 4. 30. 13:08

출처 : http://technet2.microsoft.com/WindowsServer/ko/Library/1d284efa-9d11-46c2-a8ef-87b297c68d171042.mspx?mfr=true

schtasks


schtasks

명령 및 프로그램이 정기적으로 또는 특정 시간에 실행되도록 예약합니다. 작업을 일정에 추가하거나 제거하고 필요한 경우 작업을 시작하거나 중단하고 예약된 작업을 표시하거나 변경합니다.

명령 구문을 보려면 다음 명령을 클릭합니다.

schtasks create

schtasks change

schtasks run

schtasks end

schtasks delete

schtasks query

schtasks create

작업을 예약합니다.

Schtasks는 각 일정 유형에 대해 다양한 매개 변수 조합을 사용합니다. 작업을 만들기 위한 결합된 구문을 보거나 특정 일정 유형으로 작업을 만들기 위한 구문을 보려면 다음 옵션 중 하나를 클릭합니다.

결합된 구문과 매개 변수 설명

매 N분마다 실행되는 작업 예약

N시간마다 실행되는 작업을 예약하려면

N일마다 실행되는 작업을 예약하려면

N주마다 실행되는 작업을 예약하려면

N개월마다 실행되는 작업을 예약하려면

매주 특정 요일에 실행되는 작업 예약

특정 주에 실행되는 작업 예약

매월 특정 날짜에 실행되는 작업 예약

매월 말일에 실행되는 작업 예약

한 번만 실행되는 작업 예약

시스템을 시작할 때마다 실행되는 작업 예약

사용자가 로그온할 때 실행되는 작업 예약

시스템이 유휴 상태일 때 실행되는 작업 예약

지금 실행되는 작업 예약

다양한 사용 권한으로 실행되는 작업 예약

시스템 권한으로 실행되는 작업 예약

두 개 이상의 프로그램을 실행하는 작업 예약

원격 컴퓨터에서 실행하는 작업 예약

결합된 구문과 매개 변수 설명

구문

Schtasks /create /sc ScheduleType /tn TaskName /tr TaskRun [/s Computer [/u [Domain\]User [/p Password]]] [/ru {[Domain\]User | System}] [/rp Password] [/mo Modifier] [/d Day[,Day...] | *] [/m Month[,Month...]] [/i IdleTime] [/st StartTime] [/ri Interval] [{/et EndTime | /du Duration} [/k]] [/sd StartDate] [/ed EndDate] [/it] [/Z] [/F]

매개 변수
/sc ScheduleType
일정 유형을 지정합니다. 유효한 값은 MINUTE, HOURLY, DAILY, WEEKLY, MONTHLY, ONCE, ONSTART, ONLOGON, ONIDLE입니다. 일정 유형설명 MINUTE, HOURLY, DAILY, WEEKLY, MONTHLY 일정의 시간 단위를 지정합니다. ONCE 지정한 날짜 및 시간에 작업을 한 번만 실행합니다. ONSTART 시스템을 시작할 때마다 작업을 실행합니다. 시작 날짜를 지정하거나 다음에 시스템을 시작할 때 작업을 실행하도록 지정할 수 있습니다. ONLOGON 사용자가 로그온할 때마다 작업을 실행합니다. 날짜를 지정하거나 다음에 사용자가 로그온할 때 작업을 실행하도록 지정할 수 있습니다. ONIDLE 시스템이 지정한 시간 동안 유휴 상태일 경우 작업을 실행합니다. 날짜를 지정하거나 다음에 시스템이 유휴 상태가 되면 작업을 실행하도록 지정할 수 있습니다.
/tn TaskName
작업의 이름을 지정합니다. 시스템상의 각 작업마다 고유한 이름이 지정되어야 합니다. 이름은 파일 이름 규칙을 따라야 하며 238자를 초과할 수 없습니다. 이름에 공백이 있으면 따옴표를 사용하여 묶습니다.
/tr TaskRun
작업을 실행할 프로그램이나 명령을 지정합니다. 실행 파일, 스크립트 파일 또는 배치 파일의 정규화된 경로와 파일 이름을 입력합니다. 경로 이름은 262자를 초과할 수 없습니다. 경로를 생략하면 Schtasks는 파일이 Systemroot\System32 디렉터리에 있는 것으로 간주합니다.
/s Computer
지정한 원격 컴퓨터에서 작업을 예약합니다. 원격 컴퓨터의 이름 또는 IP 주소를 백슬래시를 포함하거나 백슬래시 없이 입력합니다. 기본값은 로컬 컴퓨터입니다. /u와 /p 매개 변수는 /s를 사용할 때만 사용할 수 있습니다.
/u [Domain\]User
지정한 사용자 계정의 권한으로 이 명령을 실행합니다. 기본값은 로컬 컴퓨터의 현재 사용자 권한입니다. /u와 /p 매개 변수는 원격 컴퓨터에서 작업을 예약할 경우에만(/s) 사용할 수 있습니다. 지정된 계정의 사용 권한은 작업을 예약하고 실행할 때 사용됩니다. 다른 사용자의 사용 권한을 사용하여 작업을 실행하려면 /ru 매개 변수를 사용합니다.사용자 계정은 원격 컴퓨터에서 Administrators 그룹의 구성원이어야 합니다. 또한 로컬 컴퓨터는 원격 컴퓨터와 같은 도메인에 있어야 합니다. 그렇지 않을 경우 원격 컴퓨터 도메인이 트러스트하는 도메인에 있어야 합니다.
/p Password
/u 매개 변수에 지정한 사용자 계정의 암호를 입력합니다. /u 매개 변수를 사용하지만 /p 매개 변수 또는 암호 인수를 생략하는 경우 Schtasks는 암호를 묻는 메시지를 표시하고 사용자가 입력하는 텍스트를 보이지 않게 만듭니다. /u와 /p 매개 변수는 원격 컴퓨터에서 작업을 예약할 경우에만(/s) 사용할 수 있습니다.
/ru {[Domain\]User | System}
지정한 사용자 계정의 권한으로 작업을 실행합니다. 기본적으로 작업은 로컬 컴퓨터의 현재 사용자가 가진 사용 권한이나 /u 매개 변수에 지정한 사용자 계정이 있을 경우 그 계정의 사용 권한을 사용하여 실행됩니다. /ru 매개 변수는 로컬 또는 원격 컴퓨터에서 작업을 예약할 경우 사용할 수 있습니다. 값설명[Domain\]User다른 사용자 계정을 지정합니다. System 또는 ""로컬 시스템 계정을 지정합니다. 이 계정은 운영 체제 및 시스템 서비스에서 사용하는 권한 수준이 높은 계정입니다.
/rp Password
/ru [Domain\]User 매개 변수에 지정한 사용자 계정의 암호를 입력합니다. 사용자 계정을 지정할 때 이 매개 변수를 생략하면 SchTasks.exe는 암호를 입력하라는 메시지를 표시하고 입력하는 텍스트를 보이지 않게 만듭니다. 시스템 계정(/ru System)의 사용 권한으로 실행하는 작업에 대해서는 /rp 매개 변수를 사용하지 마십시오. 시스템 계정에는 암호가 없으므로 SchTasks.exe는 암호를 입력하라는 메시지를 표시하지 않습니다.
/mo Modifier
일정 유형 내에서 작업이 실행되는 간격을 지정합니다. 이 매개 변수는 MINUTE, HOURLY, DAILY, WEEKLY 및 MONTHLY 일정에서만 사용할 수 있으며 선택 요소입니다. 기본값은 1입니다. 일정 유형한정자 값설명MINUTE 1 - 1439작업을 N분마다 실행합니다.HOURLY 1 - 23작업을 N시간마다 실행합니다.DAILY 1 - 365작업을 N일마다 실행합니다.WEEKLY 1 - 52작업을 N주마다 실행합니다.ONCE한정자 없음작업을 한 번만 실행합니다.ONSTART한정자 없음작업을 시작 시에 실행합니다.ONLOGON한정자 없음/u 매개변수에 지정한 사용자가 로그온할 때 작업을 실행합니다.ONIDLE한정자 없음ONIDLE과 함께 사용해야 하는/i 매개 변수에 지정한 시간(분)동안 시스템이 유휴 상태이면 작업을 실행합니다.MONTHLY 1 - 12N개월마다 작업을 실행합니다.MONTHLY LASTDAY 매월 말일에 작업을 실행합니다.MONTHLY FIRST, SECOND, THIRD, FOURTH, LAST특정 주의 특정 날짜에 작업을 실행하려면 /dDay 매개 변수와 함께 사용합니다. 예를 들어 매월 세째 수요일을 지정할 수 있습니다.
/d Day[,Day...] | *
해당 월의 날짜나 요일을 지정합니다. WEEKLY 또는 MONTHLY 일정과 함께 사용할 경우에만 사용할 수 있습니다. 일정 유형한정자날짜 값 (/d)설명WEEKLY1 - 52 MON - SUN[,MON - SUN...] | *선택 요소입니다. MON가 기본값입니다. 와일드카드 값(*)은 매일을 의미합니다.MONTHLYFIRST, SECOND, THIRD, FOURTH, LAST MON - SUN특정 주 일정에 필요합니다.MONTHLY없음 또는 {1 - 12} 1 - 31선택 요소이며 특정 날짜 일정에 대한 한정자(/mo) 매개 변수를 사용하지 않거나 /mo가 1 - 12("N개월마다" 일정)인 경우에만 사용할 수 있습니다. 기본값은 day 1(매월 첫째날)입니다.
/m Month[,Month...]
예약된 작업이 실행되어야 하는 달을 지정합니다. 유효한 값은 JAN - DEC 및 *(매월)입니다. /m 매개 변수는 MONTHLY 일정에만 사용할 수 있습니다. LASTDAY 한정자를 사용하는 경우 필수 요소입니다. 그렇지 않은 경우에는 선택 요소이며 기본값은 *(매월)입니다.
/i IdleTime
작업을 시작하는데 필요한 컴퓨터의 유휴 상태 시간(분)을 지정합니다. 유효한 값은 1부터 999까지의 정수입니다. 이 매개 변수는 ONIDLE 일정에만 사용할 수 있으며 그 경우 필수 요소입니다.
/st StartTime
작업 시작 시간을 HH:MM 24시간 형식으로 지정합니다. 기본값은 로컬 컴퓨터의 현재 시간입니다. /st 매개 변수는 MINUTE, HOURLY, DAILY, WEEKLY, MONTHLY 및 ONCE 일정에 사용할 수 있습니다. ONCE 일정에 필요합니다.
/ri Interval
반복 간격을 분 단위로 지정합니다. 이 매개 변수는 MINUTE, HOURLY, ONSTART, ONLOGON, ONIDLE와 같은 일정 유형에는 적용되지 않습니다. 유효 범위는 1에서 599,940분(599,940분 = 9,999시간)까지입니다. /ET 또는 /DU를 지정하는 경우 반복 간격은 기본적으로 10분입니다.
/et EndTime
분 또는 시간 단위의 작업 일정 종료 시간을 HH:MM 24시간 형식으로 지정합니다. 지정된 종료 시간이 지나면 Schetasks는 다음 시작 시간이 될 때까지 작업을 시작하지 않습니다. 기본적으로 작업 일정에는 종료 시간이 없습니다. 이 매개 변수는 선택 요소이며 MINUTE 또는 HOURLY 일정에만 사용할 수 있습니다. 예를 들면 다음을 참조하십시오.N분마다 실행되는 작업 예약 섹션에서 "근무 외 시간 중 100분마다 실행되는 작업 예약"
/du Duration
분 또는 시간 단위 예약의 최대 시간 길이를 HHHH:MM 24시간 형식으로 지정합니다. 지정된 시간이 지나면 Schetasks는 다음 시작 시간이 될 때까지 작업을 시작하지 않습니다. 기본적으로 작업 일정에는 최대 기간이 없습니다. 이 매개 변수는 선택 요소이며 MINUTE 또는 HOURLY 일정에만 사용할 수 있습니다. 예를 들면 다음을 참조하십시오.N분마다 실행되는 작업 예약 섹션에서 "10시간 동안 3시간마다 실행되는 작업 예약"
/k
/et 또는 /du에 지정한 시간에 작업이 실행하는 프로그램을 중지합니다. /k를 지정하지 않을 경우 Schtasks는 /et 또는 /du에서 지정한 시간이 지난 후 프로그램을 다시 시작하지 않지만 계속 실행 중인 프로그램은 중지하지 않습니다. 이 매개 변수는 선택 요소이며 MINUTE 또는 HOURLY 일정에만 사용할 수 있습니다. 예를 들면 다음을 참조하십시오.N분마다 실행되는 작업 예약 섹션에서 "근무 외 시간 중 100분마다 실행되는 작업 예약"
/sd StartDate
작업 일정의 시작 날짜를 지정합니다. 기본값은 로컬 컴퓨터의 현재 날짜입니다. /sd 매개 변수는 모든 일정 유형에 사용할 수 있으며 선택 요소입니다. StartDate 인수의 형식은 제어판의 국가 및 언어 옵션에서 선택한 로컬 컴퓨터의 로케일에 따라 다릅니다. 로케일마다 한 가지 형식만 사용할 수 있습니다.올바른 날짜 형식이 아래 표에 나열되어 있습니다. 로컬 컴퓨터의 제어판에서 국가 및 언어 옵션에 있는 간단한 날짜에 선택된 형식과 가장 비슷한 형식을 사용합니다. MM / DD / YYYY 영어(미국) 및 스페인어(파나마)와 같이 월이 먼저 표시되는 형식을 사용합니다. DD / MM / YYYY 불가리아어와 네덜란드어(네덜란드)와 같이 날짜가 먼저 표시되는 형식을 사용합니다. YYYY / MM / DD 스웨덴어와 프랑스어(캐나다)와 같이 연도가 먼저 표시되는 형식을 사용합니다.
/ed EndDate
일정의 종료 날짜를 지정합니다. 이 매개 변수는 선택 요소입니다. ONCE, ONSTART, ONLOGON 또는 ONIDLE 일정에는 사용할 수 없습니다. 기본적으로 일정에는 종료 날짜가 없습니다. StartDate 인수의 형식은 제어판의 국가 및 언어 옵션에서 선택한 로컬 컴퓨터의 로케일에 따라 다릅니다. 로케일마다 한 가지 형식만 사용할 수 있습니다.올바른 날짜 형식이 아래 표에 나열되어 있습니다. 로컬 컴퓨터의 제어판에서 국가 및 언어 옵션에 있는 간단한 날짜에 선택된 형식과 가장 비슷한 형식을 사용합니다. MM / DD / YYYY 영어(미국) 및 스페인어(파나마)와 같이 월이 먼저 표시되는 형식을 사용합니다. DD / MM / YYYY 불가리아어와 네덜란드어(네덜란드)와 같이 날짜가 먼저 표시되는 형식을 사용합니다. YYYY / MM / DD 스웨덴어와 프랑스어(캐나다)와 같이 연도가 먼저 표시되는 형식을 사용합니다.
/it
"실행할" 사용자(작업을 실행하는 데 사용하는 사용자 계정)가 컴퓨터에 로그온하는 경우에만 작업이 실행되도록 지정합니다. 이 매개 변수를 지정해도 시스템 사용 권한으로 실행되는 작업에는 영향을 주지 않습니다. 기본적으로 "다음 계정으로 실행" 사용자는 작업이 예약된 때의 로컬 컴퓨터의 현재 사용자이거나,/u 매개 변수가 있는 경우 이 매개 변수가 지정하는 계정입니다. 그러나 명령에 /ru 매개 변수가 포함된 경우 "다음 계정으로 실행" 사용자는 /ru 매개 변수에서 지정된 계정입니다.예를 들면 다음을 참조하십시오.N일마다 실행되는 작업 예약 섹션에서 "로그온한 경우 70분마다 실행되는 작업 예약"다른 사용 권한으로 실행되는 작업 예약 섹션에서 "특정 사용자가 로그온한 경우에만 작업 실행"
/Z
일정 완료 시 작업을 삭제하도록 지정합니다.
/F
지정된 작업이 이미 있을 경우에도 경고를 표시하지 않고 작업을 만들도록 지정합니다.
/?
명령 프롬프트에서 도움말을 표시합니다.

매 N분마다 실행되는 작업 예약

분 단위 일정 구문

schtasks /create /tn TaskName /tr TaskRun /sc minute [/mo {1 - 1439}] [/st HH:MM] [/sd StartDate] [/ed EndDate] [{/et HH:MM | /du HHHH:MM} [/k]] [/it] [/ru {[Domain\]User [/rp Password] | System}] [/s Computer [/u [Domain\]User [/p Password]]]

설명

분 단위 예약에서 /sc minute 매개 변수는 필수 요소입니다. /mo(한정자) 매개 변수는 선택 요소이며 각 작업의 실행 간격(분)을 지정합니다. /mo의 기본값은 1(분)입니다. /et(종료 시간)와 /du(기간) 매개 변수는 선택 요소이며 /k(작업 끝내기) 매개 변수와 함께 또는 이 매개 변수 없이 사용할 수 있습니다.

20분마다 실행되는 작업을 예약하려면

다음은 보안 스크립트 Sec.vbs가 20분마다 실행되도록 예약하는 명령입니다. 이 명령은 /sc 매개 변수를 사용하여 분 예약을 지정하고 /mo 매개 변수를 사용하여 20분 간격을 지정합니다.

명령에 시작 날짜나 시간이 포함되지 않기 때문에 명령 완료 20분 후에 작업이 시작되며 이 작업은 시스템이 실행될 때마다 20분 간격으로 실행됩니다. 보안 스크립트 원본 파일은 원격 컴퓨터에 있지만 작업은 로컬 컴퓨터에서 예약되고 실행됩니다.

schtasks /create /sc minute /mo 20 /tn "Security Script" /tr \\central\data\scripts\sec.vbs

업무 외 시간에 100분마다 실행되는 작업을 예약하려면

다음은 보안 스크립트 Sec.vbs를 매일 오후 5시 정각에서 다음 날 오전 7시 59분까지 100분마다 로컬 컴퓨터에서 실행되도록 예약하는 명령입니다. /sc 매개 변수를 사용하여 분 예약을 지정하고 /mo 매개 변수를 사용하여 100분 간격을 지정합니다. 또한 /st 및 /et 매개 변수를 사용하여 하루 일정의 시작 및 종료 시간을 지정합니다. 또한 스크립트가 오전 7시 59분에도 실행 중일 경우 /k 매개 변수를 사용하면 해당 스크립트를 중지할 수 있습니다. /k를 사용하지 않을 경우 Schtasks는 오전 7시 59분 이후에 스크립트를 시작하지 않지만 오전 6시 20분에 시작된 인스턴스가 계속 실행 중인 경우에는 스크립트를 중지하지 않습니다.

schtasks /create /tn "Security Script" /tr sec.vbs /sc minute /mo 100 /st 17:00 /et 08:00 /k

5시간마다 실행되는 작업을 예약하려면

시간 단위 일정 구문

schtasks /create /tn TaskName /tr TaskRun /sc hourly [/mo {1 - 23}] [/st HH:MM] [/sd StartDate] [/ed EndDate] [{/et HH:MM | /du HHHH:MM} [/k]] [/it] [/ru {[Domain\]User [/rp Password] | System}] [/s Computer [/u [Domain\]User [/p Password]]]

설명

시간 단위 예약에서 /sc hourly 매개 변수는 필수 요소입니다. /mo(한정자) 매개 변수는 선택 요소이며 각 작업의 실행 간격(시간)을 지정합니다. /mo의 기본값은 1(시간)입니다. /k(작업 끝내기) 매개 변수는 선택 요소이며 /et(지정된 시간에 종료) 또는 /du(지정된 간격 이후에 종료)와 함께 사용할 수 있습니다.

5시간마다 실행되는 작업을 예약하려면

다음은 MyApp 프로그램이 2002년 3월 1일부터 5시간마다 실행되도록 예약하는 명령입니다. 이 명령은 /mo 매개 변수를 사용하여 간격을 지정하고 /sd 매개 변수를 사용하여 시작 날짜를 지정합니다. 명령에서 시작 시간을 지정하지 않았기 때문에 현재 시간을 시작 시간으로 사용합니다.

로컬 컴퓨터의 제어판에서 국가 및 언어 옵션을 영어(짐바브웨) 옵션으로 설정하면 시작 날짜 형식은 MM/DD/YYYY(03/01/2002)입니다.

schtasks /create /sc hourly /mo 5 /sd 03/01/2002 /tn "My App" /tr c:\apps\myapp.exe

매시간마다 5분 후에 실행되는 작업을 예약하려면

다음 명령은 MyApp 프로그램이 오전 12시 5분에 시작하여 한 시간 간격으로 실행되도록 예약합니다. /mo 매개 변수가 생략되었기 때문에 이 명령은 시간 단위 예약의 기본값인 매 시간을 사용합니다. 이 명령을 오전 12시 5분 이후에 실행하면 프로그램은 그 다음 날까지 실행되지 않습니다.

schtasks /create /sc hourly /st 00:05 /tn "My App" /tr c:\apps\myapp.exe

10시간 동안 3시간마다 실행되는 작업을 예약하려면

다음 명령은 MyApp 프로그램이 10시간 동안 3시간마다 실행되도록 예약합니다.

이 명령은 /sc 매개 변수를 사용하여 시간 단위 예약을 지정하고 /mo 매개 변수를 사용하여 3시간 간격을 지정합니다. 또한 /st 매개 변수를 사용하여 자정부터 일정을 시작하고 /du 매개 변수를 사용하여 10시간 이후에 작업을 종료합니다. 프로그램은 단지 몇 분 동안만 실행되므로 기간이 만료될 때 프로그램이 계속 실행 중일 경우 프로그램을 중지시키는 /k 매개 변수는 필요하지 않습니다.

schtasks /create /tn "My App" /tr myapp.exe /sc hourly /mo 3 /st 00:00 /du 0010:00

이 예에서는 작업이 오전 12시, 오전 3시, 오전 6시 및 오전 9시에 실행됩니다. 기간이 10시간이므로 오후 12시가 되면 작업을 실행하지 않습니다. 대신에 다음 날 오전 12시에 작업이 다시 시작됩니다.

12일마다 실행되는 작업을 예약하려면

일 단위 일정 구문

schtasks /create /tn TaskName /tr TaskRun /sc daily [/mo {1 - 365}] [/st HH:MM] [/sd StartDate] [/ed EndDate] [/it] [/ru {[Domain\]User [/rp Password] | System}] [/s Computer [/u [Domain\]User [/p Password]]]

설명

일 단위 예약에서 /sc daily 매개 변수는 필수 요소입니다. /mo(한정자) 매개 변수는 선택 요소이며 각 작업의 실행 간격(일)을 지정합니다. /mo의 기본값은 1(매일)입니다.

매일 실행되는 작업을 예약하려면

다음 예에서는 MyApp 프로그램이 2002년 12월 31일까지 매일 한 번씩 오전 8시에 실행되도록 예약합니다. /mo 매개 변수를 생략하기 때문에 명령이 매일 실행되도록 기본 간격 1이 사용됩니다.

이 예에서는 로컬 컴퓨터 시스템의 제어판에서 국가 및 언어 옵션이 영어(영국)로 설정되면 종료 날짜의 형식은 DD/MM/YYYY (31/12/2002)입니다.

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc daily /st 08:00 /ed 31/12/2002

12일마다 실행되는 작업을 예약하려면

다음 예에서는 MyApp 프로그램이 2002년 12월 31일 오후 1시(13:00)부터 12일마다 실행되도록 예약합니다. 이 명령은 /mo 매개 변수를 사용하여 2일 간격을 지정하고 /sd 및 /st 매개 변수를 사용하여 날짜와 시간을 지정합니다.

이 예에서는 로컬 컴퓨터 시스템의 제어판에서 국가 및 언어 옵션이 영어(짐바브웨)로 설정되면 종료 날짜의 형식은 MM/DD/YYYY (12/31/2002)입니다.

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc daily /mo 12 /sd 12/31/2002 /st 13:00

사용자가 로그인한 경우 70일마다 실행되는 작업을 예약하려면

다음은 보안 스크립트 Sec.vbs를 70일마다 실행되도록 예약하는 명령입니다. 이 명령은 /mo 매개 변수를 사용하여 간격을 70일로 지정합니다. 또한 /it 매개 변수를 사용하여 작업 실행에 사용되는 계정이 컴퓨터에 로그인하는 경우에만 작업이 실행되도록 지정합니다. 작업이 사용자 계정의 사용 권한으로 실행되므로 작업은 사용자가 로그인한 경우에만 실행될 것입니다.

schtasks /create /tn "Security Script" /tr sec.vbs /sc daily /mo 70 /it

참고

대화 전용(/it) 속성이 있는 작업을 식별하려면 자세한 정보 표시 쿼리(/query /v)를 사용합니다. /it를 지정한 작업의 자세한 정보 쿼리 표시에서 로그온 모드 필드에는 대화형만 값이 있습니다.

6주마다 실행되는 작업을 예약하려면

주 단위 일정 구문

schtasks /create /tn TaskName /tr TaskRun /sc weekly [/mo {1 - 52}] [/d {MON - SUN[,MON - SUN...] | *}] [/st HH:MM] [/sd StartDate] [/ed EndDate] [/it] [/ru {[Domain\]User [/rp Password] | System}] [/s Computer [/u [Domain\]User [/p Password]]]

설명

주 단위 예약에서 /sc weekly 매개 변수는 필수 요소입니다. /mo(한정자) 매개 변수는 선택 요소이며 각 작업의 실행 간격(주)을 지정합니다. /mo 기본값은 1(매주)입니다.

또한 주 단위 예약에서 선택적 매개 변수 /d를 사용하면 지정된 요일 또는 매일(*) 실행되도록 작업을 예약할 수 있습니다. 기본값은 MON(월요일)입니다. 매일(*) 옵션은 일 단위 일정과 같습니다.

6주마다 실행되는 작업을 예약하려면

다음 명령은 MyApp 프로그램이 원격 컴퓨터에서 6주 간격으로 실행되도록 예약합니다. 이 명령은 /mo 매개 변수를 사용하여 간격을 지정합니다. 명령에 /d 매개 변수를 사용하지 않으면 작업이 월요일마다 실행됩니다.

또한 이 명령은 /s 매개 변수를 사용하여 원격 컴퓨터를 지정하고, /u 매개 변수를 사용하여 사용자의 Administrator 계정 권한으로 명령을 실행합니다. /p 매개 변수를 사용하지 않으면 SchTasks.exe는 사용자에게 Administrator 계정 암호를 입력하라는 메시지를 표시합니다.

또한 명령이 원격으로 실행되므로 명령에 포함된 모든 경로는 MyApp.exe의 경로를 포함하여 원격 컴퓨터상의 경로를 참조합니다.

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc weekly /mo 6 /s Server16 /u Admin01

격주로 금요일마다 실행되는 작업을 예약하려면

다음은 격주로 금요일마다 작업이 실행되도록 예약하는 명령입니다. 이 명령은 /mo 매개 변수를 사용하여 2주 간격을 지정하고 /d 매개 변수를 사용하여 요일을 지정합니다. 매주 금요일에 실행되는 작업을 예약하려면 /mo 매개 변수를 생략하거나 1로 설정합니다.

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc weekly /mo 2 /d FRI

3개월마다 실행되는 작업을 예약하려면

구문

schtasks /create /tn TaskName /tr TaskRun /sc monthly [/mo {1 - 12}] [/d {1 - 31}] [/st HH:MM] [/sd StartDate] [/ed EndDate] [/it] [/ru {[Domain\]User [/rp Password] | System}] [/s Computer [/u [Domain\]User [/p Password]]]

설명

이 일정 유형에서 /sc monthly 매개 변수는 필수 요소입니다. 작업의 실행 간격(월)을 지정하는 /mo(한정자) 매개 변수는 선택 요소이며 기본값은 1(매월)입니다. 또한 이 일정 유형에서는 선택적 매개 변수 /d를 사용하여 해당 달의 지정된 날짜에 실행되도록 작업을 예약할 수 있습니다. 기본값은 1(매월 1일)입니다.

매월 1일에 실행되는 작업을 예약하려면

다음은 MyApp 프로그램이 매월 1일에 실행되도록 예약하는 명령입니다. /mo(한정자) 매개 변수 및 /d(일) 매개 변수 모두 기본값이 1이므로 이 매개 변수들은 명령에서 생략했습니다.

schtasks /create /tn "My App" /tr myapp.exe /sc monthly

3개월마다 실행되는 작업을 예약하려면

다음은 MyApp 프로그램이 3개월마다 실행되도록 예약하는 명령입니다. 이 명령은 /mo 매개 변수를 사용하여 간격을 지정합니다.

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc monthly /mo 3

격월마다 21일 자정에 실행되는 작업을 예약하려면

다음 명령은 MyApp 프로그램이 격월마다 21일 자정에 실행되도록 예약합니다. 이 명령은 2002년 7월 2일부터 2003년 6월 30일까지의 한 해 동안 이 작업이 실행되도록 지정합니다.

이 명령은 /mo 매개 변수를 사용하여 월 간격(2개월마다)을 지정하고 /d 매개 변수를 사용하여 날짜를 지정하며 /st 매개 변수를 사용하여 시간을 지정합니다. 또한 /sd 및 /ed 매개 변수를 사용하여 각각 시작 날짜와 종료 날짜를 지정합니다. 로컬 컴퓨터의 제어판에서 국가 및 언어 옵션을 영어(남아프리카)로 설정하면 날짜는 해당 국가의 로컬 형식인 YYYY/MM/DD로 지정됩니다.

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc monthly /mo 2 /d 21 /st 00:00 /sd 2002/07/01 /ed 2003/06/30

매주 특정 요일에 실행되는 작업 예약

주 단위 일정 구문

schtasks /create /tn TaskName /tr TaskRun /sc weekly [/d {MON - SUN[,MON - SUN...] | *}] [/mo {1 - 52}] [/st HH:MM] [/sd StartDate] [/ed EndDate] [/it] [/ru {[Domain\]User [/rp Password] | System}] [/s Computer [/u [Domain\]User [/p Password]]]

설명

"요일" 일정은 주 단위 일정의 변형입니다. 주 단위 예약에서 /sc weekly 매개 변수는 필수 요소입니다. /mo(한정자) 매개 변수는 선택 요소이며 각 작업의 실행 간격(주)을 지정합니다. /mo 기본값은 1(매주)입니다. 선택적 매개 변수인 /d는 지정된 요일 또는 매일(*) 실행되도록 작업을 예약합니다. 기본값은 MON(월요일)입니다. 매일 옵션(/d *)은 일 단위 예약과 같습니다.

수요일마다 실행되는 작업을 예약하려면

다음 명령은 MyApp 프로그램이 매주 수요일마다 실행되도록 예약합니다. 이 명령은 /d 매개 변수를 사용하여 특정 요일을 지정합니다. 명령에 /mo 매개 변수가 생략되었으므로 작업은 매주 실행됩니다.

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc weekly /d WED

8주마다 월요일과 금요일에 실행되는 작업을 예약하려면

다음 명령은 8주마다 월요일과 금요일에 실행되는 작업을 예약합니다. 이 명령은 /d 매개 변수를 사용하여 요일을 지정하고 /mo 매개 변수를 사용하여 8주 간격을 지정합니다.

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc weekly /mo 8 /d MON,FRI

특정 주에 실행되는 작업 예약

특정 주 구문

schtasks /create /tn TaskName /tr TaskRun /sc monthly /mo {FIRST | SECOND | THIRD | FOURTH | LAST} /d MON - SUN [/m {JAN - DEC[,JAN - DEC...] | *}] [/st HH:MM] [/sd StartDate] [/ed EndDate] [/it] [/ru {[Domain\]User [/rp Password] | System}] [/s Computer [/u [Domain\]User [/p Password]]]

설명

이 일정 유형에서는 /sc monthly, /mo(한정자) 및 /d(일) 매개 변수를 지정해야 합니다. /mo(한정자) 매개 변수는 작업이 실행되는 주를 지정합니다. /d 매개 변수는 요일을 지정합니다. (이 일정 유형에서는 하루만 지정할 수 있습니다.) 또한 이 일정에서는 선택적 매개 변수 /m(월)을 사용하여 특정 월 또는 매월(*)에 대해 작업을 예약할 수 있습니다. /m 매개 변수의 기본값은 매월(*)입니다.

매월 둘째 일요일에 작업을 예약하려면

다음 명령은 MyApp 프로그램이 매월 둘째 일요일에 실행되도록 예약합니다. /mo 매개 변수를 사용하여 둘째 주를 지정하고 /d 매개 변수를 사용하여 요일을 지정합니다.

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc monthly /mo SECOND /d SUN

3월과 9월 첫째 주 월요일에 작업을 예약하려면

다음 명령은 MyApp 프로그램이 3월과 9월 첫째 주 월요일에 실행되도록 예약합니다. 이 명령은 /mo 매개 변수를 사용하여 첫째 주를 지정하고 /d 매개 변수를 사용하여 요일을 지정합니다. 또한 /m 매개 변수를 사용하여 월을 지정하고 각 월 인수는 쉼표로 구분합니다.

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc monthly /mo FIRST /d MON /m MAR,SEP

매월 특정 날짜에 실행되는 작업 예약

특정 날짜 구문

schtasks /create /tn TaskName /tr TaskRun /sc monthly /d {1 - 31} [/m {JAN - DEC[,JAN - DEC...] | *}] [/st HH:MM] [/sd StartDate] [/ed EndDate] [/it] [/ru {[Domain\]User [/rp Password] | System}] [/s Computer [/u [Domain\]User [/p Password]]]

설명

특정 날짜 일정 유형에서는 /sc monthly 매개 변수와 /d(일) 매개 변수가 필수 요소입니다. /d 매개 변수는 요일이 아닌 날짜(1-31)를 지정합니다. 일정에서 하루만 지정할 수 있습니다. /mo(한정자) 매개 변수는 이 일정 유형에는 사용할 수 없습니다.

이 일정 유형에 대한 /m(월) 매개 변수는 선택 요소이고 기본값은 매월(*)입니다. Schtasks를 사용하면 /m 매개 변수로 지정한 달에 없는 날짜에는 작업을 예약할 수 없습니다. 그러나 /m 매개 변수를 생략하고 31일과 같이 특정 달에만 있는 날짜에 작업을 예약할 경우 31일이 없는 달에는 작업이 실행되지 않습니다. 매월 마지막 날에 작업을 예약하려면 말일 일정 유형을 사용합니다.

매월 1일에 작업을 예약하려면

다음은 MyApp 프로그램이 매월 1일에 실행되도록 예약하는 명령입니다. 기본 수정자는 없음, 기본 날짜는 1일, 기본 달은 매월이므로 명령에 별다른 매개 변수가 필요하지 않습니다.

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc monthly

5월과 6월의 15일에 작업을 예약하려면

다음 명령은 MyApp 프로그램이 5월과 6월의 15일 오후 3시(15:00)에 실행되도록 예약합니다. 이 명령은 /d 매개 변수를 사용하여 날짜를 지정하고 /m 매개 변수를 사용하여 달을 지정합니다. 또한 /st 매개 변수를 사용하여 시작 시간을 지정합니다.

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc monthly /d 15 /m MAY,JUN /st 15:00

매월 말일에 실행되는 작업 예약

말일 구문

schtasks /create /tn TaskName /tr TaskRun /sc monthly /mo LASTDAY /m {JAN - DEC[,JAN - DEC...] | *} [/st HH:MM] [/sd StartDate] [/ed EndDate] [/it] [/ru {[Domain\]User [/rp Password] | System}] [/s Computer [/u [Domain\]User [/p Password]]]

설명

말일 일정 유형에서는 /sc monthly, /mo LASTDAY(한정자) 및 /m(월) 매개 변수가 필수 요소입니다. /d(일) 매개 변수는 사용할 수 없습니다.

매월 말일에 작업을 예약하려면

다음 명령은 MyApp 프로그램이 매월 말일에 실행되도록 예약합니다. 이 명령은 /mo 매개 변수를 사용하여 말일을 지정하고 와일드카드 문자(*)와 함께 /m 매개 변수를 사용하여 프로그램이 매월 실행되도록 지정합니다.

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc monthly /mo lastday /m *

2월과 3월의 말일 오후 6시에 작업을 예약하려면

다음은 MyApp 프로그램이 2월과 3월 말일 오후 6시에 실행되도록 예약하는 명령입니다. 이 명령은 /mo 매개 변수를 사용하여 말일을 지정하고 /m 매개 변수를 사용하여 월을 지정하며 /st 매개 변수를 사용하여 시작 시간을 지정합니다.

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc monthly /mo lastday /m FEB,MAR /st 18:00

한 번만 실행되는 작업 예약

구문

schtasks /create /tn TaskName /tr TaskRun /sc once /st HH:MM [/sd StartDate] [/it] [/ru {[Domain\]User [/rp Password] | System}] [/s Computer [/u [Domain\]User [/p Password]]]

설명

한 번만 실행 일정 유형에서 /sc once 매개 변수는 필수 요소입니다. 작업 실행 시간을 지정하는 /st 매개 변수도 필수 요소입니다. 작업 실행 날짜를 지정하는 /sd 매개 변수는 선택 요소입니다. /mo(한정자) 및 /ed(종료 날짜) 매개 변수는 이 일정 유형에는 사용할 수 없습니다.

Schtasks에서는 로컬 컴퓨터의 시간과 비교하여 지정한 날짜와 시간이 과거 시점일 경우 한 번만 실행되도록 작업을 예약할 수 없습니다. 다른 시간대에 있는 원격 컴퓨터에서 한 번만 실행되는 작업을 예약하려면 로컬 컴퓨터상에서 지정한 날짜와 시간이 되기 전에 작업을 예약해야 합니다.

한 번만 실행되는 작업을 예약하려면

다음은 MyApp 프로그램이 2003년 1월 1일 자정에 실행되도록 예약하는 명령입니다. 이 명령은 /sc 매개 변수를 사용하여 일정 유형을 지정하고 /sd 및 st 매개 변수를 사용하여 날짜와 시간을 지정합니다.

로컬 컴퓨터의 제어판에서 국가 및 언어 옵션이 영어(미국) 옵션으로 설정되어 있으므로 시작 날짜 형식은 MM/DD/YYYY입니다.

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc once /sd 01/01/2003 /st 00:00

시스템을 시작할 때마다 실행되는 작업 예약

구문

schtasks /create /tn TaskName /tr TaskRun /sc onstart [/sd StartDate] [/it] [/ru {[Domain\]User [/rp Password] | System}] [/s Computer [/u [Domain\]User [/p Password]]]

설명

시작할 때 실행하는 일정 유형에서 /sc onstart 매개 변수는 필수 요소입니다. /sd(시작 날짜) 매개 변수는 선택 요소이며 기본값은 현재 날짜입니다.

시스템을 시작할 때마다 실행되는 작업을 예약하려면

다음 명령은 2001년 3월 15일에 시작하여 시스템을 시작할 때마다 MyApp 프로그램이 실행되도록 예약합니다.

로컬 컴퓨터의 제어판에서 국가 및 언어 옵션이 영어(미국) 옵션으로 설정되어 있으므로 시작 날짜 형식은 MM/DD/YYYY입니다.

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc onstart /sd 03/15/2001

사용자가 로그온할 때 실행되는 작업 예약

구문

schtasks /create /tn TaskName /tr TaskRun /sc onlogon [/sd StartDate] [/it] [/ru {[Domain\]User [/rp Password] | System}] [/s Computer [/u [Domain\]User [/p Password]]]

설명

"로그온 시" 일정 유형은 사용자가 컴퓨터에 로그온할 때마다 실행되는 작업을 예약합니다. "로그온 시" 일정 유형에서는 /sc onlogon 매개 변수가 필수 요소입니다. /sd(시작 날짜) 매개 변수는 선택 요소이며 기본값은 현재 날짜입니다.

사용자가 원격 컴퓨터에 로그온하면 시작되는 작업을 예약하려면

다음 명령은 모든 사용자가 원격 컴퓨터에 로그온할 때마다 배치 파일을 실행하도록 예약합니다. 또한 /s 매개 변수를 사용하여 원격 컴퓨터를 지정합니다. 명령이 원격이므로 배치 파일 경로를 포함하여 명령에 포함된 모든 경로는 원격 컴퓨터상의 경로를 참조합니다.

schtasks /create /tn "Start Web Site" /tr c:\myiis\webstart.bat /sc onlogon /s Server23

시스템이 유휴 상태일 때 실행되는 작업 예약

구문

schtasks /create /tn TaskName /tr TaskRun /sc onidle /i {1 - 999} [/sd StartDate] [/it] [/ru {[Domain\]User [/rp Password] | System}] [/s Computer [/u [Domain\]User [/p Password]]]

설명

"유휴 상태 시" 일정 유형은 /i 매개 변수가 지정하는 시간 동안 사용자 작업이 없을 경우에 실행되는 작업을 예약합니다. "유휴 상태 시" 일정 유형에서는 /sc onidle 매개 변수와 /i 매개 변수가 필수 요소입니다. /sd(시작 날짜) 매개 변수는 선택 요소이며 기본값은 현재 날짜입니다.

컴퓨터가 유휴 상태일 때마다 실행되는 작업을 예약하려면

다음 명령은 컴퓨터가 유휴 상태일 때마다 MyApp 프로그램이 실행되도록 예약합니다. 또한 필수 요소인 /i 매개 변수를 사용하여 10분 동안 컴퓨터가 유휴 상태를 유지하면 작업을 시작하도록 지정합니다.

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc onidle /i 10

지금 실행되는 작업 예약

Schtasks에서는 "지금 실행" 옵션이 없지만 한 번만 실행되는 작업을 만든 다음 몇 분 안에 시작함으로써 지금 실행 옵션처럼 수행할 수 있습니다.

구문

schtasks /create /tn TaskName /tr TaskRun /sc once [/st HH:MM] /sd MM/DD/YYYY [/it] [/ru {[Domain\]User [/rp Password] | System}] [/s Computer [/u [Domain\]User [/p Password]]]

지금부터 몇 분 후에 실행되는 작업을 예약하려면

다음 명령은 현지 시간으로 2002년 11월 13일 오후 2시 38분에 한 번만 실행되는 작업을 예약하는 명령입니다.

로컬 컴퓨터의 제어판에서 국가 및 언어 옵션이 영어(미국) 옵션으로 설정되어 있으므로 시작 날짜 형식은 MM/DD/YYYY입니다.

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc once /st 14:18 /sd 11/13/2002

다양한 사용 권한으로 실행되는 작업 예약

로컬 및 원격 컴퓨터 모두에서 다른 계정의 사용 권한으로 실행되도록 모든 유형의 작업을 예약할 수 있습니다. 특정 일정 유형에 필요한 매개 변수 외에도 /ru 매개 변수를 지정해야 하고 /rp 매개 변수는 선택 요소입니다.

로컬 컴퓨터에서 Administrator 권한으로 작업을 실행하려면

다음 명령은 MyApp 프로그램이 로컬 컴퓨터에서 실행되도록 예약합니다. 또한 /ru를 사용하여 작업이 사용자의 Administrator 계정(Admin06) 권한으로 실행되도록 지정합니다. 이 예에서는 작업이 화요일마다 실행되도록 예약되었지만 다른 사용 권한으로 실행되는 작업에는 모든 일정 유형을 사용할 수 있습니다.

schtasks /create /tn "My App" /tr myapp.exe /sc weekly /d TUE /ru Admin06

그러면 SchTasks.exe는 Admin06 계정에 대한 "실행할 계정" 암호를 묻고 나서 성공 메시지를 표시합니다.

Admin06을(를) 실행할 사용자의 암호 입력: ********



SUCCESS: 예약된 작업 "My App"을(를) 만들었습니다.
원격 컴퓨터에서 다른 사용 권한으로 작업을 실행하려면

다음 명령은 MyApp 프로그램이 Marketing 컴퓨터상에서 4일 마다 실행되도록 예약합니다.

또한 /sc 매개 변수를 사용하여 일 단위 일정을 지정하고 /mo 매개 변수를 사용하여 4일 간격을 지정합니다.

/s 매개 변수를 사용하여 원격 컴퓨터 이름을 입력하고 /u 매개 변수를 사용하여 원격 컴퓨터의 작업을 예약할 사용 권한이 있는 계정(Marketing 컴퓨터의 Admin01)을 지정합니다. 또한 이 명령은 /ru 매개 변수를 사용하여 작업이 사용자의 비 Administrator 계정(Reskits 도메인의 User01) 권한으로 실행되도록 지정합니다. /ru 매개 변수가 없을 경우 작업은 /u가 지정하는 계정의 사용 권한으로 실행됩니다.

schtasks /create /tn "My App" /tr myapp.exe /sc daily /mo 4 /s Marketing /u Marketing\Admin01 /ru Reskits\User01

Schtasks는 우선 명령을 실행하기 위해 /u 매개 변수가 지정하는 사용자의 암호를 요청한 다음 작업을 실행하기 위해 /ru 매개 변수가 지정하는 사용자의 암호를 요청합니다. 암호를 인증한 후 Schtasks는 작업이 예약되었음을 알려 주는 메시지를 표시합니다.

Marketing\Admin01에 대한 암호 입력:********



Please enter the run as password for Reskits\User01: ********



SUCCESS: 예약된 작업 "My App"을(를) 만들었습니다.
특정 사용자가 로그온할 때만 작업을 실행하려면

다음 명령은 AdminCheck.exe 프로그램이 금요일마다 새벽 4시에 Public 컴퓨터상에서 이 컴퓨터의 관리자가 로그온한 경우에만 실행되도록 예약합니다.

또한 /sc 매개 변수를 사용하여 주 단위 일정을 지정하고 /d 매개 변수를 사용하여 날짜를 지정하며 /st 매개 변수를 사용하여 시작 시간을 지정합니다.

또한 /s 매개 변수를 사용하여 원격 컴퓨터 이름을 입력하고 /u 매개 변수를 사용하여 원격 컴퓨터의 작업을 예약할 사용 권한이 있는 계정을 지정합니다. 또한 이 명령은 /ru 매개 변수를 사용하여 Public 컴퓨터의 관리자(Public\Admin01) 권한으로 실행되도록 작업을 구성하고 /it 매개 변수를 사용하여 Public\Admin01 계정이 로그온된 경우에만 작업이 실행되도록 지정합니다.

schtasks /create /tn "Check Admin" /tr AdminCheck.exe /sc weekly /d FRI /st 04:00 /s Public /u Domain3\Admin06 /ru Public\Admin01 /it

참고

대화 전용(/it) 속성이 있는 작업을 식별하려면 자세한 정보 표시 쿼리(/query /v)를 사용합니다. /it를 지정한 작업의 자세한 정보 쿼리 표시에서 로그온 모드 필드에는 대화형만 값이 있습니다.

시스템 권한으로 실행되는 작업 예약

모든 유형의 작업들을 로컬 및 원격 컴퓨터 모두에서 시스템 계정의 사용 권한으로 실행할 수 있습니다. 특정 일정 유형에 필요한 매개 변수 외에도 /ru system 매개 변수 또는 /ru "" 매개 변수를 지정해야 하며 /rp 매개 변수는 사용할 수 없습니다.

중요

System 계정에는 대화형 로그온 권한이 없습니다. 사용자는 시스템 권한으로 실행되는 프로그램이나 작업을 볼 수 없거나 상호 작용할 수 없습니다.

/ru 매개 변수는 작업을 예약하는 데 사용되는 사용 권한이 아니라 작업이 실행될 때 적용되는 사용 권한을 결정합니다. 관리자만이 /ru 매개 변수 값에 상관없이 작업을 예약할 수 있습니다.

참고

시스템 권한으로 실행되는 작업을 확인하려면 자세한 정보 표시 쿼리(/query /v)를 사용합니다. 시스템 권한으로 실행하는 작업의 자세한 정보 표시 쿼리 화면에서 다음 사용자 이름으로 실행 필드에는 NT AUTHORITY\SYSTEM 값이 들어 있으며 로그온 모드 필드에는 백그라운드만 값이 들어 있습니다.

시스템 권한으로 작업을 실행하려면

다음 명령은 MyApp 프로그램이 로컬 컴퓨터에서 시스템 계정 권한으로 실행되도록 예약합니다. 이 예에서는 매월 15일에 작업이 실행되도록 예약되었지만 시스템 권한으로 실행되는 작업에는 모든 일정 유형을 사용할 수 있습니다.

이 명령은 /ru System 매개 변수를 사용하여 시스템 보안 컨텍스트를 지정합니다. 시스템 작업은 암호를 사용하지 않기 때문에 /rp 매개 변수는 생략됩니다.

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc monthly /d 15 /ru System

이에 대한 응답으로 SchTasks.exe는 정보 메시지 및 성공 메시지를 표시합니다. 암호를 입력하라는 메시지는 표시되지 않습니다.

정보: The task will be created under user name ("NT AUTHORITY\SYSTEM"). 성공: 예약된 작업 "My App"을(를) 만들었습니다.
원격 컴퓨터에서 시스템 권한으로 작업을 실행하려면

다음 명령은 MyApp 프로그램이 매일 새벽 4시에 시스템 권한으로 Finance01 컴퓨터에서 실행되도록 예약합니다.

/tn 매개 변수를 사용하여 작업의 이름을 지정하고 /tr 매개 변수를 사용하여 MyApp 프로그램의 원격 복사본을 지정합니다. 또한 /sc 매개 변수를 사용하여 일 단위 예약을 지정하며 1(매일)이 기본값이므로 /mo 매개 변수는 생략합니다. 이 명령은 /st 매개 변수를 사용하여 시작 시간을 지정합니다. 또한 이 시간은 작업이 매일 실행되는 시간입니다.

또한 /s 매개 변수를 사용하여 원격 컴퓨터 이름을 입력하고 /u 매개 변수를 사용하여 원격 컴퓨터의 작업을 예약할 사용 권한이 있는 계정을 지정합니다. 또한 /ru 매개 변수를 사용하여 시스템 계정으로 실행할 작업을 지정합니다. /ru 매개 변수가 없을 경우 작업은 /u가 지정하는 계정의 사용 권한으로 실행됩니다.

schtasks /create /tn "My App" /tr myapp.exe /sc daily /st 04:00 /s Finance01 /u Admin01 /ru System

Schtasks에서는 /u 매개 변수가 지정하는 사용자의 암호를 요청하고 암호를 인증한 다음, 작업이 만들어지고 시스템 계정의 권한으로 실행될 것임을 알려 주는 메시지를 표시합니다.

Admin01에 대한 암호 입력:**********



INFO: 예약된 작업 "My App"을(를) 사용자 이름(""NT AUTHORITY\ SYSTEM")으로 만듭니다. 성공: 예약된 작업 "My App"을(를) 만들었습니다.

두 개 이상의 프로그램을 실행하는 작업 예약

각 작업은 한 프로그램만 실행합니다. 그러나 여러 프로그램을 실행하는 배치 파일을 만든 다음 그 배치 파일을 실행하는 작업을 예약할 수는 있습니다. 다음은 이 방법을 보여 줍니다.

1.

실행하려는 프로그램들을 시작하는 배치 파일을 만듭니다.

이 예에서는 이벤트 뷰어(Eventvwr.exe)와 시스템 모니터(Perfmon.exe)를 시작하는 배치 파일을 만듭니다.

메모장 같은 텍스트 편집기를 엽니다.

각 프로그램에 대해 실행 파일의 이름과 전체 경로를 입력합니다. 이런 경우 파일은 다음과 같은 명령문을 포함합니다.

C:\Windows\System32\Eventvwr.exe C:\Windows\System32\Perfmon.exe

파일을 MyApps.bat로 저장합니다.

2.

SchTasks.exe를 사용하여 MyApps.bat를 실행하는 작업을 만듭니다.

다음은 모든 사용자가 로그온할 때마다 실행되는 모니터 작업을 만드는 명령입니다. 이 명령은 /tn 매개 변수를 사용하여 작업의 이름을 지정하고 /tr 매개 변수를 사용하여 MyApps.bat를 실행합니다. 또한 /sc 매개 변수를 사용하여 OnLogon 일정 유형을 나타내고 /ru 매개 변수를 사용하여 사용자의 Administrator 계정 권한으로 작업을 실행합니다.

schtasks /create /tn Monitor /tr C:\MyApps.bat /sc onlogon /ru Reskit\Administrator

이 명령의 결과로 사용자가 컴퓨터에 로그온할 때마다 이 작업은 이벤트 뷰어와 시스템 모니터를 시작됩니다.

원격 컴퓨터에서 실행하는 작업 예약

원격 컴퓨터에서 실행하도록 작업을 예약하려면 원격 컴퓨터의 일정에 해당 작업을 추가해야 합니다. 모든 유형의 작업을 원격 컴퓨터에서 예약할 수 있지만 다음 조건과 일치해야 합니다.

작업을 예약할 수 있는 사용 권한이 있어야 합니다. 그것으로 원격 컴퓨터의 Administrator 그룹 구성원인 계정을 사용하여 로컬 컴퓨터에 로그인하거나 /u 매개 변수를 사용하여 원격 컴퓨터의 Administrator 자격 증명을 입력해야 합니다.

로컬 및 원격 컴퓨터가 같은 도메인에 속하거나 로컬 컴퓨터가 원격 컴퓨터 도메인에서 트러스트된 도메인 에 속할 경우에만 /u 매개 변수를 사용할 수 있습니다. 그렇지 않으면 원격 컴퓨터에서 지정된 사용자 계정을 인증할 수 없고 해당 계정이 Administrators 그룹의 구성원인지 확인할 수 없습니다.

이 작업은 원격 컴퓨터에서 실행되기에 충분한 사용 권한을 가지고 있어야 합니다. 작업에 따라 필요한 사용 권한은 다양합니다. 기본적으로 작업은 로컬 컴퓨터 현재 사용자의 사용 권한으로 실행되고, /u 매개 변수가 사용될 경우에는 /u 매개 변수가 지정하는 계정의 사용 권한으로 작업이 실행됩니다. 그러나 /ru 매개 변수를 사용하면 다른 사용자 계정의 사용 권한 또는 시스템 권한으로 작업을 실행할 수 있습니다.

관리자가 원격 컴퓨터에서 작업을 예약하는 경우

다음은 지금부터 10일마다 SRV01 원격 컴퓨터에서 MyApp 프로그램이 시작되도록 예약하는 명령입니다. 또한 /s 매개 변수를 사용하여 원격 컴퓨터의 이름을 입력합니다. 로컬 현재 사용자가 원격 컴퓨터의 Administrator이므로 작업 예약을 위한 다른 사용 권한을 제공하는 /u 매개 변수는 필요하지 않습니다.

원격 컴퓨터에서 작업을 예약할 경우 모든 매개 변수는 원격 컴퓨터를 참조합니다. 그러므로 /tr 매개 변수가 지정하는 실행 파일은 원격 컴퓨터에서 MyApp.exe의 복사본을 참조합니다.

schtasks /create /s SRV01 /tn "My App" /tr "c:\program files\corpapps\myapp.exe" /sc daily /mo 10

그러면 SchTasks는 작업이 예약되었음을 나타내는 메시지를 표시합니다.

원격 컴퓨터에서 명령을 예약하는 경우(사례 1)

다음은 MyApp 프로그램이 SRV06 원격 컴퓨터에서 3시간마다 실행되도록 예약하는 명령입니다. 작업을 예약하려면 Administrator 권한이 있어야 하므로 이 명령은 /u 및 /p 매개 변수를 사용하여 사용자의 Administrator 계정(Reskits 도메인의 Admin01) 자격 증명을 입력합니다. 기본적으로 이러한 사용 권한은 작업을 실행하는 데도 사용됩니다. 그러나 작업을 실행하는 데 Administrator 권한이 필요하지 않으므로 이 명령에는 기본값을 무시하고 원격 컴퓨터에서 사용자의 비 Administrator 계정 권한으로 작업을 실행할 수 있도록 /ru 및 /rp 매개 변수가 포함되어 있습니다 .

schtasks /create /s SRV06 /tn "My App" /tr "c:\program files\corpapps\myapp.exe" /sc hourly /mo 3 /u reskits\admin01 /p R43253@4$ /ru SRV06\user03 /rp MyFav!!Pswd

그러면 SchTasks는 작업이 예약되었음을 나타내는 메시지를 표시합니다.

원격 컴퓨터에서 명령을 예약하는 경우(사례 2)

다음 명령은 MyApp 프로그램이 매월 말일에 SRV02 원격 컴퓨터에서 실행되도록 예약합니다. 로컬 현재 사용자(user03)는 원격 컴퓨터의 Administrator가 아니므로 이 명령은 /u 매개 변수를 사용하여 사용자의 Administrator 계정(Reskits 도메인에서 Admin01)의 자격 증명을 입력합니다. Administrator 계정 권한은 작업을 예약 및 실행할 때 사용됩니다.

schtasks /create /s SRV02 /tn "My App" /tr "c:\program files\corpapps\myapp.exe" /sc monthly /mo LASTDAY /m * /u reskits\admin01

이 명령에는 /p(암호) 매개 변수가 포함되어 있지 않으므로 Schtasks는 암호를 입력하라는 메시지를 표시합니다. 그리고 나서 성공 메시지를 표시하며, 이 경우에는 경고를 표시합니다.

reskits\admin01에 대한 암호 입력:********



SUCCESS: The scheduled task "My App" has successfully been created.



WARNING: 예약된 작업 "My App"을(를) 만들었으나 계정 정보를 설정하지 못했기 때문에 작업이 실행되지 않을 수 있습니다.

이 경고는 원격 도메인이 /u 매개 변수가 지정하는 계정을 인증하지 못했음을 나타냅니다. 이 경우 로컬 컴퓨터가 원격 컴퓨터 도메인에서 트러스트된 도메인의 구성원이 아니므로 원격 도메인은 사용자 계정을 인증할 수 없었습니다. 이러한 일이 발생할 경우 예약된 작업 목록에 해당 작업이 나타나지만 사실상 작업 내용이 비어 있어 실행되지 않을 것입니다.

자세한 정보 표시 쿼리의 결과 화면은 작업의 문제를 보여 줍니다. 이 화면에서 다음 실행 시간의 값은 안 함이며 다음 사용자 이름으로 실행의 값은 작업 스케쥴러 데이터베이스에서 검색하지 못했습니다.입니다.

이 컴퓨터가 동일한 도메인 또는 트러스트된 도메인의 구성원이었다면 작업은 성공적으로 예약되고 지정된 이름으로 실행되었을 것입니다.

호스트 이름:                             SRV44 작업 이름:                             My App 다음 실행 시간:                        안 함 상태: 로그온 모드:                           대화형/백그라운드 마지막 실행 시간:                        안 함 마지막 결과:                          0 작성자:                              user03 일정:                             At 3:52 PM on day 31 of every month, start starting 12/14/2001 실행할 작업:                          c:\program files\corpapps\myapp.exe 시작 위치:                             myapp.exe 설명:                              N/A 예약된 작업 상태:                 사용 안 함 일정 항목 유형:                       Monthly 시작 시간:                           15:52:00 AM 시작 날짜:                           12/14/2001 종료 날짜:                             N/A 일:                                 31 월:                               JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NO V,DEC 다음 사용자 이름으로 실행:                          작업 스케쥴러 데이터베이스에서 검색하지 못했습니다. 다시 예약되지 않으면 삭제:       사용 다음 시간 동안 실행되면 작업 중지: 72:0 반복: 모두:                        사용 안 함 반복: 언제까지: 시간:                  사용 안 함 반복: 언제까지: Duration:              사용 안 함 반복: Stop If Still Running:        사용 안 함 유휴 시간                            사용 안 함 전원 관리:                     사용 안 함
설명

다른 사용자의 사용 권한으로 /create 명령을 실행하려면 /u 매개 변수를 사용합니다. /u 매개 변수는 원격 컴퓨터에서 작업을 예약하려는 경우에만 사용할 수 있습니다.

schtasks /create에 대한 추가 예제를 보려면 명령 프롬프트에서 schtasks /create /?를 입력합니다.

다른 사용자의 사용 권한으로 실행되는 작업을 예약하려면 /ru 매개 변수를 사용합니다. 로컬 또는 원격 컴퓨터에서 작업을 예약할 경우 /ru 매개 변수를 사용합니다.

/u 매개 변수를 사용하려면 로컬 컴퓨터와 원격 컴퓨터가 동일한 도메인에 속하거나 로컬 컴퓨터가 원격 컴퓨터 도메인에서 트러스트된 도메인에 있어야 합니다. 그렇지 않으면 작업이 만들어지지 않거나 작업 내용이 비어 있어 작업이 실행되지 않습니다.

사용자가 암호를 입력하지 않으면 현재 사용자 계정을 사용하여 로컬 컴퓨터에서 작업을 예약하는 경우라도 Schtasks는 항상 암호를 입력하라는 메시지를 표시합니다. Schtasks의 이러한 작동은 정상입니다.

SchTasks는 프로그램 파일 위치나 사용자 계정 암호를 확인하지 않습니다. 올바른 파일 위치나 사용자 계정에 대한 올바른 암호를 입력하지 않으면 작업은 만들어지기는 하지만 실행되지는 않습니다. 또한 계정에 대한 암호가 변경되거나 만료되는 경우 작업에 저장된 암호를 변경하지 않으면 작업이 실행되지 않습니다.

System 계정에는 대화형 로그온 권한이 없습니다. 사용자는 시스템 권한으로 실행되는 프로그램을 보거나 상호 작용할 수 없습니다.

각 작업은 한 프로그램만 실행합니다. 그러나 여러 작업을 시작하는 배치 파일을 만든 다음 그 배치 파일을 실행하는 작업을 예약할 수 있습니다.

작업을 만들면 즉시 테스트할 수 있습니다. run을 사용하여 작업을 테스트하고 SchedLgU.txt 파일(Systemroot\SchedLgU.txt)에서 오류를 확인합니다.

schtasks change

작업의 다음과 같은 속성 중 하나 이상을 변경합니다.

작업이 실행되는 프로그램(/tr)

작업이 실행되는 사용자 계정(/ru)

사용자 계정에 대한 암호(/rp)

작업에 대화 전용 속성을 추가합니다(/it).

구문

schtasks /change /tn TaskName [/s Computer [/u [Domain\]User [/p Password]]] [/ru {[Domain\]User | System}] [/rp Password] [/tr TaskRun] [/st StartTime] [/ri Interval] [{/et EndTime | /du Duration} [/k]] [/sd StartDate] [/ed EndDate] [/{ENABLE | DISABLE}] [/it] [/z]

매개 변수
/tn TaskName
변경할 작업을 식별합니다. 작업 이름을 입력합니다.
/s Computer
원격 컴퓨터의 이름 또는 IP 주소를 백슬래시를 포함하거나 포함하지 않고 지정합니다. 기본값은 로컬 컴퓨터입니다.
/u [Domain\]User
지정한 사용자 계정의 권한으로 이 명령을 실행합니다. 기본값은 로컬 컴퓨터의 현재 사용자 권한입니다. 지정한 사용자 계정은 원격 컴퓨터에서 Administrators 그룹의 구성원이어야 합니다. /u와 /p 매개 변수는 원격 컴퓨터에서 작업을 변경할 때만(/s) 사용할 수 있습니다.
/p Password
/u 매개 변수에 지정된 사용자 계정의 암호를 지정합니다. /u 매개 변수를 사용하지만 /p 매개 변수 또는 암호 인수를 생략하는 경우 암호를 묻는 메시지가 표시됩니다. /u와 /p 매개 변수는 /s를 사용할 때만 사용할 수 있습니다.
/ru {[Domain\]User | System}
작업이 실행되는 사용자 계정을 변경하도록 지정합니다. 로컬 시스템 계정을 지정하려는 경우 유효한 항목은 "", "NT AUTHORITY\SYSTEM" 또는 "SYSTEM"입니다. 사용자 계정을 변경하면 사용자 암호도 변경해야 합니다. 명령에 /ru 매개 변수는 있지만 /rp 매개 변수가 없으면 새 암호를 입력하라는 메시지가 표시됩니다.로컬 시스템 계정의 사용 권한으로 실행되는 작업은 암호를 필요로 하지 않거나 입력하라는 메시지를 표시하지 않습니다.
/rp Password
기존 사용자 계정이나 /ru 매개 변수가 지정하는 사용자 계정에 대해 새 암호를 지정합니다. 로컬 시스템 계정에서 사용될 경우 이 매개 변수의 값은 무시됩니다.
/tr TaskRun
작업이 실행되는 프로그램을 변경합니다. 실행 파일, 스크립트 파일 또는 배치 파일의 전체 경로와 파일 이름을 입력합니다. 경로를 생략하면 파일이 systemroot\System32 디렉터리에 있다고 간주됩니다. 작업이 실행하는 원래 프로그램을 지정한 프로그램으로 바꿉니다.
/st Starttime
HH:mm 24시간 형식을 사용하여 작업의 시작 시간을 지정합니다. 예를 들어 14:30의 값은 12시간 형식으로는 2:30 PM 입니다.
/ri Interval
예약된 작업의 반복 간격을 분 단위로 지정합니다. 유효 범위는 1 - 599,940(599,940분 = 9,999시간)입니다.
/et EndTime
HH:mm 24시간 형식을 사용하여 작업의 종료 시간을 지정합니다. 예를 들어 14:30의 값은 12시간 형식으로는 2:30 PM 입니다.
/du Duration
EndTime 또는 Duration이 지정된 경우 해당 시간에 작업을 닫도록 지정합니다.
/k
/et 또는 /du에 지정한 시간에 작업이 실행하는 프로그램을 중지합니다. /k를 지정하지 않을 경우 Schtasks는 /et 또는 /du에서 지정한 시간이 지난 후 프로그램을 다시 시작하지 않지만 계속 실행 중인 프로그램은 중지하지 않습니다. 이 매개 변수는 선택 요소이며 MINUTE 또는 HOURLY 일정에만 사용할 수 있습니다.
/sd StartDate
작업이 실행될 시작 날짜를 지정합니다. 날짜 형식은 mm/dd/yyyy입니다.
/ed EndDate
작업이 실행될 마지막 날짜를 지정합니다. 형식은 mm/dd/yyyy입니다.
/ENABLE
예약된 작업을 사용할 수 있도록 지정합니다.
/DISABLE
예약된 작업을 사용할 수 없도록 지정합니다.
/it
"실행할" 사용자(작업이 실행되는 사용자 계정)가 컴퓨터에 로그온하는 경우에만 예약된 작업이 실행되도록 지정합니다. 이 매개 변수는 시스템 권한으로 실행되는 작업이나 이미 대화 전용 속성 집합이 있는 작업에는 영향을 주지 않습니다. 작업에서 대화 전용 속성을 제거하기 위해 change 명령을 사용할 수 없습니다.기본적으로 "실행할" 사용자는 작업이 예약된 때의 로컬 컴퓨터의 현재 사용자이거나,/u 매개 변수가 있는 경우 이 매개 변수가 지정하는 계정입니다. 그러나 명령에 /ru 매개 변수가 포함된 경우 "실행할" 사용자는 /ru 매개 변수에서 지정된 계정입니다.
/z
일정 완료 시 작업을 삭제하도록 지정합니다.
/?
명령 프롬프트에서 도움말을 표시합니다.
설명

/tn 및 /s 매개 변수는 작업을 식별합니다. /tr, /ru 및 /rp 매개 변수는 변경할 수 있는 작업의 속성을 지정합니다.

/ru 및 /rp 매개 변수는 작업을 실행할 때 사용되는 권한을 지정합니다. /u 및 /p 매개 변수는 작업을 변경할 때 사용되는 권한을 지정합니다.

원격 컴퓨터에서 작업을 변경하려면 사용자는 원격 컴퓨터에서 Administrators 그룹에 속하는 계정을 사용하여 로컬 컴퓨터에 로그인해야 합니다.

다른 사용자의 사용 권한(/u, /p)으로 /change 명령을 실행하려면 로컬 컴퓨터와 원격 컴퓨터가 동일한 도메인에 있거나 로컬 컴퓨터가 원격 컴퓨터 도메인에서 트러스트된 도메인에 있어야 합니다.

System 계정에는 대화형 로그온 권한이 없습니다. 사용자는 시스템 권한으로 실행되는 프로그램을 보거나 상호 작용할 수 없습니다.

/it 속성이 있는 작업을 식별하려면 자세한 정보 표시 쿼리(/query /v)를 사용합니다. /it를 지정한 작업의 자세한 정보 쿼리 표시에서 로그온 모드 필드에는 대화형만 값이 있습니다.

작업이 실행되는 프로그램을 변경하려면

다음 명령은 Virus Check 작업이 실행하는 프로그램을 VirusCheck.exe에서 VirusCheck2.exe로 변경합니다. /tn 매개 변수를 사용하여 작업을 식별하고 /tr 매개 변수를 사용하여 작업에 새 프로그램을 지정합니다. (작업 이름은 변경할 수 없습니다.)

schtasks /change /tn "Virus Check" /tr C:\VirusCheck2.exe

이에 대한 응답으로 SchTask.exe는 다음과 같은 성공 메시지를 표시합니다.

성공: The parameters of the scheduled task "Virus Check" have been changed.

이 명령의 결과로 Virus Check 작업은 VirusCheck2.exe를 실행합니다.

원격 작업에 대한 암호를 변경하려면

다음 명령은 원격 컴퓨터 Svr01에서 RemindMe 작업에 대한 사용자 계정의 암호를 변경합니다. 이 명령은 /tn 매개 변수를 사용하여 작업을 식별하고 /s 매개 변수를 사용하여 원격 컴퓨터를 지정합니다. 또한 /rp 매개 변수를 사용하여 p@ssWord3이라는 새 암호를 지정합니다.

이 과정은 사용자 계정에 대한 암호가 만료되거나 변경될 때마다 필요합니다. 작업에 저장된 암호가 유효하지 않으면 작업이 실행되지 않습니다.

schtasks /change /tn RemindMe /s Svr01 /rp p@ssWord3

이에 대한 응답으로 SchTask.exe는 다음과 같은 성공 메시지를 표시합니다.

성공: The parameters of the scheduled task "RemindMe" have been changed.

이 명령의 결과로 RemindMe 작업은 이제 원래 사용자 계정과 새 암호를 사용하여 실행됩니다.

작업에 대한 사용자 계정과 프로그램을 변경하려면

다음 명령은 작업이 실행하는 프로그램과 작업이 실행되는 사용자 계정을 변경하는 명령입니다. 기본적으로 새 작업에 대해 이전 일정을 사용합니다. 이 명령은 매일 오전 9시에 Notepad.exe 대신에 Internet Explorer를 시작하도록 ChkNews 작업을 변경합니다.

이 명령은 /tn 매개 변수를 사용하여 작업을 식별합니다. 또한 /tr 매개 변수를 사용하여 작업이 실행하는 프로그램을 변경하고 /ru 매개 변수를 사용하여 작업이 실행되는 사용자 계정을 변경합니다.

사용자 계정에 대한 암호를 제공하는 /rp 매개 변수는 생략됩니다. 계정의 암호를 입력해야 하지만 /rp 매개 변수를 사용하여 일반 텍스트로 암호를 입력하거나 SchTasks.exe가 암호를 입력하라는 메시지를 표시할 때까지 기다린 다음 보이지 않는 텍스트로 암호를 입력할 수 있습니다.

schtasks /change /tn ChkNews /tr "c:\program files\Internet Explorer\iexplore.exe" /ru DomainX\Admin01

이에 대한 응답으로 SchTasks.exe는 사용자 계정에 대한 암호를 요청합니다. 사용자가 입력하는 텍스트를 흐리게 하므로 암호를 볼 수 없습니다.

DomainX\Admin01에 대한 암호를 입력하십시오: 

/tn 매개 변수는 작업을 식별하고 /tr 및 /ru 매개 변수는 작업의 속성을 변경합니다. 다른 매개 변수를 사용하여 작업을 식별할 수 없고 작업 이름을 변경할 수 없습니다.

이에 대한 응답으로 SchTask.exe는 다음과 같은 성공 메시지를 표시합니다.

성공: 예약된 작업 "ChkNews"의 매개 변수를 변경했습니다.

명령의 결과로서 이제 ChkNews 작업은 Administrator 계정의 권한으로 Internet Explorer를 실행합니다.

프로그램을 시스템 계정으로 변경하려면

다음 명령은 SecurityScript 작업을 변경하여 시스템 계정의 사용 권한으로 실행합니다. /ru "" 매개 변수를 사용하여 시스템 계정을 나타냅니다.

schtasks /change /tn SecurityScript /ru ""

이에 대한 응답으로 SchTask.exe는 다음과 같은 성공 메시지를 표시합니다.

정보: The run as user name for the scheduled task "SecurityScript" will be changed to "NT AUTHORITY\SYSTEM". 성공: 예약된 작업 "SecurityScript"의 매개 변수를 변경했습니다.

System 계정 권한으로 실행되는 작업에는 암호가 필요하지 않으므로 SchTask.exe는 암호를 입력하라는 메시지를 표시하지 않습니다.

로그온할 때만 프로그램을 실행하려면

다음 명령은 기존 작업 MyApp에 대화 전용 속성을 추가합니다. 이 속성에서는 작업이 실행되는 사용자 계정을 나타내는 "실행할" 사용자가 컴퓨터에 로그온하는 경우에만 작업이 실행된다고 간주합니다.

이 명령은 /tn 매개 변수를 사용하여 작업을 식별하고 /it 매개 변수를 사용하여 작업에 대화 전용 속성을 추가합니다. 작업이 이미 사용자 계정의 권한으로 실행되고 있으므로 작업에 대해 /ru 매개 변수를 변경할 필요가 없습니다.

schtasks /change /tn MyApp /it

이에 대한 응답으로 SchTask.exe는 다음과 같은 성공 메시지를 표시합니다.

성공: 예약된 작업 "MyApp"의 매개 변수를 변경했습니다.

schtasks run

예약된 작업을 즉시 시작합니다. run 작업은 예약을 무시하지만 프로그램 파일 위치, 사용자 계정 및 작업에 저장된 암호를 사용하여 작업을 즉시 실행합니다.

구문

schtasks /run /tn TaskName [/s Computer [/u [Domain\]User [/p Password]]]

매개 변수
/tn TaskName
필수 요소입니다. 작업을 식별합니다.
/s Computer
원격 컴퓨터의 이름 또는 IP 주소를 백슬래시를 포함하거나 포함하지 않고 지정합니다. 기본값은 로컬 컴퓨터입니다.
/u [Domain\]User
지정한 사용자 계정의 권한으로 이 명령을 실행합니다. 기본적으로 이 명령은 로컬 컴퓨터의 현재 사용자 권한으로 실행됩니다. 지정한 사용자 계정은 원격 컴퓨터에서 Administrators 그룹의 구성원이어야 합니다. /u와 /p 매개 변수는 /s를 사용할 때만 사용할 수 있습니다.
/p Password
/u 매개 변수에 지정된 사용자 계정의 암호를 지정합니다. /u 매개 변수를 사용하지만 /p 매개 변수 또는 암호 인수를 생략하는 경우 암호를 묻는 메시지가 표시됩니다. /u와 /p 매개 변수는 /s를 사용할 때만 사용할 수 있습니다.
/?
명령 프롬프트에서 도움말을 표시합니다.
설명

이 작업을 사용하여 작업을 테스트합니다. 작업이 실행되지 않으면 작업 스케줄러 서비스 트랜잭션 로그인 Systemroot\SchedLgU.txt에서 오류를 확인합니다.

작업을 실행해도 작업 일정에는 영향을 미치지 않고 예약된 다음 실행 시간도 변경되지 않습니다.

원격으로 작업을 실행하려면 원격 컴퓨터에서 작업을 예약해야 합니다. 작업을 실행할 때는 작업이 원격 컴퓨터에서만 실행됩니다. 작업이 원격 컴퓨터에서 실행되는지 확인하려면 작업 관리자나 작업 스케줄러 트랜잭션 로그인 Systemroot\SchedLgU.txt를 사용합니다.

로컬 컴퓨터에서 작업을 실행하려면

다음 명령은 "Security Script" 작업을 시작합니다.

schtasks /run /tn "Security Script"

이에 대한 응답으로 SchTasks.exe는 작업과 관련된 스크립트를 시작하고 다음과 같은 메시지를 표시합니다.

성공: 예약된 작업 "Security Script"을(를) 실행하도록 시도했습니다.

메시지가 암시하듯이 Schtasks는 프로그램 시작을 시도하지만 프로그램이 실제로 시작되었는지 확인할 수 없습니다.

원격 컴퓨터에서 작업을 실행하려면

다음 명령은 원격 컴퓨터 Svr01에서 업데이트 작업을 시작합니다.

schtasks /run /tn Update /s Svr01

이런 경우 SchTasks.exe는 다음과 같은 오류 메시지를 표시합니다.

ERROR: 예약된 "Update" 작업을 실행할 수 없습니다.

오류의 원인을 알아내려면 Svr01에서 예약된 작업 트랜잭션 로그 C:\WindowsSchedLgU.txt를 찾아 보십시오. 이런 경우 다음과 같은 항목이 로그에 나타납니다.

"Update.job" (update.exe) 3/26/2001 1:15:46 PM ** 오류 ** 작업과 연관된 계정에 로그온하지 못했습니다. 따라서 작업을 실행하지 못했습니다. The specific error is: 0x8007052e: Logon failure: unknown user name or bad password. 작업의 실행 이름 및 암호가 올바른지 확인하고 다시 시도하십시오.

작업의 사용자 이름이나 암호가 시스템에서 유효하지 않습니다. 다음 schtasks /change 명령은 Svr01에서 업데이트 작업에 대한 사용자 이름과 암호를 업데이트합니다.

schtasks /change /tn Update /s Svr01 /ru Administrator /rp PassW@rd3

change 명령이 완료되면 run 명령이 반복됩니다. 이번에는 Update.exe 프로그램이 시작되고 SchTasks.exe는 다음과 같은 메시지를 표시합니다.

성공: 예약된 작업 "Update"을(를) 실행하도록 시도했습니다.

메시지가 암시하듯이 Schtasks는 프로그램 시작을 시도하지만 프로그램이 실제로 시작되었는지 확인할 수 없습니다.

schtasks end

작업이 시작한 프로그램을 중지합니다.

구문

schtasks /end /tn TaskName [/s Computer [/u [Domain\]User [/p Password]]]

매개 변수
/tn TaskName
필수 요소입니다. 프로그램을 시작하는 작업을 식별합니다.
/s Computer
원격 컴퓨터의 이름이나 IP 주소를 지정합니다. 기본값은 로컬 컴퓨터입니다.
/u [Domain\]User
지정한 사용자 계정의 권한으로 이 명령을 실행합니다. 기본적으로 이 명령은 로컬 컴퓨터의 현재 사용자 권한으로 실행됩니다. 지정한 사용자 계정은 원격 컴퓨터에서 Administrators 그룹의 구성원이어야 합니다. /u와 /p 매개 변수는 /s를 사용할 때만 사용할 수 있습니다.
/p Password
/u 매개 변수에 지정된 사용자 계정의 암호를 지정합니다. /u 매개 변수를 사용하지만 /p 매개 변수 또는 암호 인수를 생략하는 경우 암호를 묻는 메시지가 표시됩니다. /u와 /p 매개 변수는 /s를 사용할 때만 사용할 수 있습니다.
/?
도움말을 표시합니다.
설명

SchTasks.exe는 예약된 작업으로 시작되는 프로그램의 인스턴스만 종료합니다. 다른 프로세스를 중지하려면 Windows XP Professional 등이 포함됩니다.에 포함되어 있는 TaskKill 도구를 사용합니다. TaskKill에 대한 자세한 내용은 Taskkill 을 참조하십시오.

로컬 컴퓨터에서 작업을 종료하려면

다음은 My Notepad 작업이 시작한 Notepad.exe의 인스턴스를 중지하는 명령입니다.

schtasks /end /tn "My Notepad"

이에 대한 응답으로 SchTask.exe는 작업이 시작한 Notepad.exe의 인스턴스를 중지하고 다음과 같은 성공 메시지를 표시합니다.

성공: 예약된 작업 "My Notepad"을(를) 중단했습니다.
원격 컴퓨터에서 작업을 종료하려면

다음 명령은 원격 컴퓨터 Svr01에서 InternetOn 작업이 시작한 Internet Explorer의 인스턴스를 중지합니다.

schtasks /end /tn InternetOn /s Svr01

이에 대한 응답으로 SchTasks.exe는 작업이 시작한 Internet Explorer의 인스턴스를 중지하고 다음과 같은 성공 메시지를 표시합니다.

성공: 예약된 작업 "InternetOn"을(를) 중단했습니다.

schtasks delete

예약된 작업을 삭제합니다.

구문

schtasks /delete /tn {TaskName | *} [/f] [/s Computer [/u [Domain\]User [/p Password]]]

매개 변수
/tn {TaskName | *}
필수 요소입니다. 삭제할 작업을 식별합니다. 값설명 TaskName 명명된 작업을 삭제합니다. * 컴퓨터에서 예약된 작업을 모두 삭제합니다.
/f
확인 메시지가 표시되지 않도록 합니다. 경고 메시지를 표시하지 않고 작업을 삭제합니다.
/s Computer
원격 컴퓨터의 이름 또는 IP 주소를 백슬래시를 포함하거나 포함하지 않고 지정합니다. 기본값은 로컬 컴퓨터입니다.
/u [Domain\]User
지정한 사용자 계정의 권한으로 이 명령을 실행합니다. 기본적으로 이 명령은 로컬 컴퓨터의 현재 사용자 권한으로 실행됩니다. 지정한 사용자 계정은 원격 컴퓨터에서 Administrators 그룹의 구성원이어야 합니다. /u와 /p 매개 변수는 /s를 사용할 때만 사용할 수 있습니다.
/p Password
/u 매개 변수에 지정된 사용자 계정의 암호를 지정합니다. /u 매개 변수를 사용하지만 /p 매개 변수 또는 암호 인수를 생략하는 경우 암호를 묻는 메시지가 표시됩니다. /u와 /p 매개 변수는 /s를 사용할 때만 사용할 수 있습니다.
/?
명령 프롬프트에서 도움말을 표시합니다.
설명

delete 작업은 일정에서 작업을 삭제합니다. 작업이 실행하는 프로그램을 삭제하거나 실행 중인 프로그램을 방해하지 않습니다.

delete * 명령은 컴퓨터에 예약된 모든 작업을 삭제하지만 현재 사용자가 예약한 작업은 삭제하지 않습니다.

원격 컴퓨터의 일정에서 작업을 삭제하려면

다음 명령은 원격 컴퓨터의 일정에서 "Start Mail" 작업을 제거합니다. 이 명령은 /s 매개 변수를 사용하여 원격 컴퓨터를 식별합니다.

schtasks /delete /tn "Start Mail" /s Svr16

이에 대한 응답으로 SchTasks.exe는 다음과 같은 확인 메시지를 표시합니다. 작업을 삭제하려면 y를 입력합니다. 명령을 취소하려면 n을 입력합니다.

경고: "Start Mail" 작업을 제거하시겠습니까(Y/N )? 성공: 예약된 작업 "Start Mail"을(를) 삭제했습니다.
로컬 컴퓨터에 예약된 작업을 모두 삭제하려면

다음 명령은 로컬 컴퓨터의 일정에서 다른 사용자가 예약한 작업을 포함하여 모든 작업을 삭제합니다. 이 명령은 /tn * 매개 변수를 사용하여 컴퓨터의 모든 작업을 표시하고 /f 매개 변수를 사용하여 확인 메시지가 표시되지 않도록 합니다.

schtasks /delete /tn * /f

이에 대한 응답으로 SchTasks.exe는 예약된 단 하나의 작업인 SecureScript가 삭제되었다는 성공 메시지를 다음과 같이 표시합니다.

SUCCESS: The scheduled task "SecureScript" was successfully deleted.

schtasks query

컴퓨터에서 실행하도록 예약되어 있는 작업들을 표시합니다.

구문

Schtasks [/query] [/fo {TABLE | LIST | CSV}] [/nh] [/v] [/s Computer [/u [Domain\]User [/p Password]]]

매개 변수
[/query]
작업 이름은 선택 요소입니다. 매개 변수 없이 schtasks를 입력하면 쿼리가 수행됩니다.
/fo {TABLE|LIST|CSV}
출력 형식을 지정합니다. TABLE이 기본값입니다.
/nh
테이블을 표시할 때 열 머리글을 생략합니다. 이 매개 변수는 TABLE 및 CSV 출력 형식에 사용할 수 있습니다.
/v
작업의 고급 속성을 표시에 추가합니다. /v를 사용하는 쿼리는 LIST 또는 CSV 형식으로 지정해야 합니다.
/s Computer
원격 컴퓨터의 이름 또는 IP 주소를 백슬래시를 포함하거나 포함하지 않고 지정합니다. 기본값은 로컬 컴퓨터입니다.
/u [Domain\]User
지정한 사용자 계정의 권한으로 이 명령을 실행합니다. 기본적으로 이 명령은 로컬 컴퓨터의 현재 사용자 권한으로 실행됩니다. 지정한 사용자 계정은 원격 컴퓨터에서 Administrators 그룹의 구성원이어야 합니다. /u와 /p 매개 변수는 /s를 사용할 때만 사용할 수 있습니다.
/p Password
/u 매개 변수에 지정된 사용자 계정의 암호를 지정합니다. /u 매개 변수를 사용하지만 /p 또는 암호 인수를 생략하는 경우 암호를 묻는 메시지가 표시됩니다. /u와 /p 매개 변수는 /s를 사용할 때만 사용할 수 있습니다.
/?
명령 프롬프트에서 도움말을 표시합니다.
설명

query 작업은 사용자가 표시 권한을 가진 모든 작업의 목록을 표시합니다. 관리자는 컴퓨터의 모든 작업을 볼 수 있습니다. 사용자는 예약된 작업만 볼 수 있습니다.

로컬 컴퓨터에 예약된 작업을 표시하려면

다음 명령은 로컬 컴퓨터에 예약된 모든 작업을 표시합니다. 이 명령은 동일한 결과를 가져오므로 상호 교환하여 사용할 수 있습니다.

schtasks

schtasks /query

이에 대한 응답으로 SchTasks.exe는 다음 표에서처럼 기본값인 간략한 표 형식으로 작업을 표시합니다.

작업 이름                  다음 실행 시간            상태 ========================= ======================== ============== Microsoft Outlook         At logon time SecureScript              14:42:00 PM , 2/4/2001
예약된 작업의 고급 속성을 표시하려면

다음 명령은 로컬 컴퓨터에서 작업을 자세히 표시하도록 요청하는 명령입니다. 이 명령은 /v 매개 변수를 사용하여 자세한 표시를 요청하고 /fo LIST 매개 변수를 사용하여 출력을 읽기 쉬운 목록으로 만듭니다. 이 명령을 사용하면 사용자가 만든 작업이 의도된 대로 되풀이 패턴을 유지하는지 확인할 수 있습니다.

schtasks /query /fo LIST /v

이에 대한 응답으로 SchTasks.exe는 모든 작업에 대한 자세한 속성 목록을 표시합니다. 다음 화면은 매월 마지막 금요일 오전4시에 실행하도록 예약된 작업 목록을 보여 줍니다.

호스트 이름:                                  RESKIT01 작업 이름:                                  SecureScript 다음 실행 시간:                             4:00:00 AM , 3/30/2001 상태:                                    Not yet run 로그온 모드:                                대화형/백그라운드 마지막 실행 시간:                             안 함 마지막 결과:                               0 작성자:                                   user01 일정:                                  At 4:00 AM on the last Fri of every month, starting 3/24/2001 실행할 작업:                               C:\WINDOWS\system32\notepad.exe 시작 위치:                                  notepad.exe 설명:                                   N/A 예약된 작업 상태:                      사용 일정 항목 유형:                            Monthly 수정자:                                  Last FRIDAY 시작 시간:                                4:00:00 AM 시작 날짜:                                3/24/2001 종료 날짜:                                  N/A 일:                                      FRIDAY 월:                                    JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC 다음 사용자 이름으로 실행:                               RESKIT\user01 다시 예약되지 않으면 작업 삭제:            사용 다음 시간 동안 실행되면 작업 중지:      72:0 반복: Until Time:                        사용 안 함 반복: Duration:                          사용 안 함 반복: Stop If Still Running:             사용 안 함 유휴: Start Time(For IDLE Scheduled Type): 사용 안 함 유휴: Only Start If Idle for X Minutes:    사용 안 함 유휴: If Not Idle Retry For X Minutes:     사용 안 함 유휴: Stop Task If Idle State End:         사용 안 함 전원 관리: No Start On Batteries:         사용 안 함 전원 관리: Stop On Battery Mode:          사용 안 함
원격 컴퓨터에 예약된 작업을 로그하려면

다음 명령은 원격 컴퓨터에 예약된 작업 목록을 요청하고 로컬 컴퓨터의 쉼표로 구분된 로그 파일에 그 작업을 추가합니다. 이 명령 형식을 사용하면 여러 컴퓨터에 예약된 작업을 수집하고 추적할 수 있습니다.

이 명령은 /s 매개 변수를 사용하여 원격 컴퓨터 Reskit16을 식별하고 /fo 매개 변수를 사용하여 형식을 지정하며 /nh 매개 변수를 사용하여 열 머리글이 표시되지 않도록 합니다. >>는 로컬 컴퓨터 Svr01에서 작업 로그 p0102.csv로 출력을 리디렉션하는 기호입니다. 명령이 원격 컴퓨터에서 실행되기 때문에 로컬 컴퓨터 경로는 전체 경로여야 합니다.

schtasks /query /s Reskit16 /fo csv /nh >> \\svr01\data\tasklogs\p0102.csv

이에 대한 응답으로 SchTasks.exe는 Reskit16 컴퓨터에 예약된 작업을 로컬 컴퓨터 Svr01의 p0102.csv 파일에 추가합니다.

설명

이 도움말 파일은 Windows Server™ 2003 제품군에 포함되어 있는 Schtasks.exe의 버전을 설명합니다. Windows XP Professional 등이 포함됩니다.에 들어 있는 Schtasks.exe 버전에 대한 자세한 내용은 Windows XP Professional 등이 포함됩니다. 도움말에서 Schtasks 항목을 참조하십시오.

Schtasks.exe는 제어판에 있는 예약된 작업과 동일한 작업을 수행합니다. 이러한 도구들은 서로 호환되며 함께 사용할 수 있습니다.

SchTasks는 이전 버전의 Windows에 포함된 도구인 At.exe를 대체합니다. At.exe가 Windows Server™ 2003 제품군에도 들어있지만 명령줄 작업 예약 도구로서 Schtasks를 사용하는 것이 좋습니다.

Schtasks 명령의 매개 변수는 순서 없이 지정할 수 있습니다. 매개 변수 없이 schtasks를 입력하면 쿼리가 수행됩니다.

Schtasks의 사용 권한

사용자는 명령을 실행할 수 있는 사용 권한이 있어야 합니다. 모든 사용자는 로컬 컴퓨터에서 작업을 예약할 수 있으며 예약한 작업을 표시 및 변경할 수 있습니다. Administrators 그룹의 구성원은 로컬 컴퓨터에서 모든 작업을 예약, 표시 및 변경할 수 있습니다.

원격 컴퓨터에서 작업을 예약, 표시 또는 변경하려면 원격 컴퓨터의 Administrators 그룹 구성원이든지 /u 매개 변수를 사용하여 원격 컴퓨터의 Administrator 자격 증명을 입력해야 합니다.

로컬 및 원격 컴퓨터가 같은 도메인에 있거나 로컬 컴퓨터가 원격 컴퓨터 도메인에서 트러스트된 도메인에 있을 때만 /create 또는 /change 작업에서 /u 매개 변수를 사용할 수 있습니다. 그렇지 않으면 원격 컴퓨터에서 지정된 사용자 계정을 인증할 수 없고 해당 계정이 Administrators 그룹의 구성원인지 확인할 수 없습니다.

작업은 실행할 수 있는 권한이 있어야 합니다. 작업에 따라 필요한 사용 권한은 다양합니다. 기본적으로 작업은 로컬 컴퓨터의 현재 사용자가 가진 사용 권한이나 /u 매개 변수에 지정한 사용자가 있을 경우 그 사용자의 사용 권한을 사용하여 실행됩니다. 다른 사용자 계정의 사용 권한이나 시스템 사용 권한으로 작업을 실행하려면 /ru 매개 변수를 사용합니다.

예약된 작업이 실행되었는지 확인하거나 예약된 작업이 실행되지 않는 이유를 알아내려면 작업 스케줄러 서비스 트랜잭션 로그인 Systemroot\SchedLgU.txt를 참조합니다. 이 로그는 예약된 작업과 SchTasks.exe를 포함하여 서비스를 사용하는 모든 도구에서 시작한 실행 시도를 기록합니다.

작업 파일이 손상되는 경우는 거의 없습니다. 손상된 작업은 실행되지 않습니다. 손상된 작업에서 작업을 수행하려고 하면 SchTasks.exe는 다음과 같은 오류 메시지를 표시합니다.

ERROR: The data is invalid.

손상된 작업은 복구할 수 없습니다. 시스템의 작업 일정 기능을 복구하려면 SchTasks.exe나 예약된 작업을 사용하여 시스템에서 작업을 삭제한 후 다시 예약합니다.

서식 범례

서식 의미

기울임꼴

사용자가 입력해야 하는 정보

굵게

사용자가 표시된 대로 정확히 입력해야 하는 요소

줄임표(...)

명령줄에서 여러 번 반복할 수 있는 매개 변수

대괄호([])로 묶음

옵션 항목

중괄호({})로 묶음, 선택 사항은 파이프(|)로 구분. 예: {even|odd}

사용자가 하나만 선택해야 하는 선택 사항 집합

Courier font

코드 또는 프로그램 출력


 

AND

출처 : http://www.microsoft.com/technet/scriptcenter/tools/scripto2.mspx
출처 : http://www.microsoft.com/technet/scriptcenter/tools/scripto2.mspx?pf=true

Scriptomatic 2.0: Readme

The world-famous Scriptomatic 2.0 is the utility that writes WMI scripts for you. Not only that, but it teaches you the fundamental concepts behind writing WMI scripts for yourself. If you’re new to Scriptomatic, you’ll definitely want to try it out and see what you’ve been missing. If you’re already familiar with Scriptomatic 1.0 you know how useful this tool can be. Version 2.0 is even better; it has a lot of new features, including the ability to create scripts in multiple scripting languages.

Download Scriptomatic 2.0 now! Oh, wait, you should read the rest of this first. There’s a lot of information in here—some of it is even helpful.

On This Page
A Brief History Lesson A Brief History Lesson
The One-Hit Wonders of Scripting? The One-Hit Wonders of Scripting?
Life as a Has-Been Life as a Has-Been
The Comeback The Comeback
Scriptomatic 2.0 Q & A Scriptomatic 2.0 Q & A
New Features New Features
How to Use Scriptomatic 2.0 How to Use Scriptomatic 2.0
Support (or Lack Thereof) Support (or Lack Thereof)
Future Plans Future Plans
*
* *
Related Links
* *

A Brief History Lesson

Throughout most of history people were much easier to please than they are now. For example, it’s unlikely that anyone ever went up to Luke the evangelist and said, “One Gospel? Come on, Luke. I mean, Matthew, Mark, John – anybody can write one Gospel.” Upon being introduced to someone at a cocktail party Neil Armstrong probably never had to hear, “Oh, first man on the moon? I see ….” Did anyone ever say to the Pharaoh Cheops, “Well, it’s a good pyramid, Cheops, but I don’t know about a great pyramid ….” Of course they didn’t.

Well, not if they knew what was good for them, anyway.

Today it’s a bit different: not only are people notoriously hard to please, but even if you do have a success there’s no guarantee that anyone will be satisfied. After all, nothing is worse than being labeled a one-trick pony, a one-hit wonder, or a flash-in-the-pan. We remember William Shakespeare, but only because he wrote hundreds of plays and sonnets. Who remembers the rock duo Mouth and McNeal? Nobody. And that’s because Mouth and McNeal had one hit song, and then were never heard from again. Stephen King will be remembered forever because of his prolific productivity, but does anyone out there have the slightest idea who wrote the Epic of Gilgamesh?

Well, OK, it probably was Stephen King. Then what about – right, he probably wrote that, too. But you know what we mean.

The One-Hit Wonders of Scripting?

Now, to be honest, we Microsoft Scripting Guys were never too concerned about being one-hit wonders; after all, you can’t be a one-hit wonder unless you first have a hit. We were sure nobody would ever hear of us, and somehow that seemed better than being remembered and then just as quickly forgotten. Remember baseball’s Joltin’ Joe Charboneau? Exactly.

But then we made a terrible mistake: we released the original Scriptomatic – the amazing utility that actually wrote WMI scripts for you – and it turned out to be a hit. That was not intentional, by the way. The Scriptomatic was originally thrown together when one of the Scripting Guys was looking for a socko-boffo ending for a WMI presentation he had to make for an internal Microsoft audience. Literally minutes before the presentation was to begin, he created something called the Scriptomatic, an HTA (HTML Application) that could write rudimentary WMI scripts. He showed off his new creation at the end of the talk, and the response was both overwhelming and unanimous; as noted in the official annals of the Scripting Guys, everyone in the room stood up as one and said, “Can we go now?” Not the most auspicious debut a piece of software has ever had, though it probably still tops the reception accorded Microsoft Bob.

Note. If you’re a Microsoft employee who liked Microsoft Bob, we’re just kidding. In fact, some of our best friends used Microsoft Bob.

Well, at least we think they did. It’s hard to get people to admit to something like that.

But back to our story. As it turned out, something weird happened when we released that same Scriptomatic on Microsoft.com: it became a hit, or at least as close to being a hit as any scripting-related utility will ever come. As of today, the Scriptomatic has been downloaded by nearly 500,000 people, a number which warms the cockles of our hearts, and also makes us wonder why we didn’t charge people $1 per download.

But while it was great that everyone found the Scriptomatic useful, its unexpected success put us in the position of being the computer world equivalent to Dexy’s Midnight Runners. Now we had to create a follow-up success of some kind. But what? The Beatles didn’t have to worry about being one-hit wonders because they were really good at what they did. Ernest Hemingway didn’t have to worry about being labeled a flash-in-the-pan; after all, he was good at what he did. But where did that leave the Microsoft Scripting Guys?

Life as a Has-Been

We pondered this problem of being a one-hit wonder long and hard, for many, many months, and without much success. Not for lack of trying, mind you, but to be honest, most of our efforts were for naught. In retrospect, reading all our scripts out loud and recording them onto an MP3 player we called the scriptPod might not have been such a good idea after all. (Of course, it probably would have helped had we remembered to put a Play button on the scriptPod. And maybe we should have taken the rock group U2 up on their offer after all.)

Likewise, we probably should have tested the waters with a single Scriptbucks rather than blithely opening a chain of coffee houses across the country, all of them serving script-flavored lattes. (In our defense, a number of people have told us that the ADSI Mocha Fudge Delight wasn’t that bad as long as you added sugar and cinnamon, stirred well, spritzed a little whipped cream on top, and then poured the whole thing down the drain without drinking it. As an added bonus, it could unclog that drain in no time!)

And while we haven’t given up on our reality TV show, The Scripting Life, we are having problems getting either Paris Hilton or Nicole Ritchie to return our calls. (And thanks to various court orders, injunctions, and restraining orders, we’re no longer allowed to contact them.) Coming up with a follow-up success turned out to be much harder than we expected.

The Comeback

But then one day, inspiration struck. It occurred to us that, instead of copying someone else’s ideas, we should do what we do best. And while we don’t do very many things well at all, there was one thing that we were good at: writing Scriptomatics. Therefore, the solution to our problem was obvious: if we had a hit with one Scriptomatic, then logically we’d have an even bigger hit if we released another Scriptomatic. It would be just like the Star Wars saga, only with scripts instead of light sabers.


Actually, our original plan was to emulate the Coca-Cola company, which a few years back released New Coke, a product that met with almost universal disdain. Needless to say, things looked grim, but then some unsung genius at Coca Cola had a brainstorm: they suggested that the company do nothing more than bring back the old Coke, now christened Classic Coke. And guess what? It was a huge success! We figured, OK, we’ll do the same thing. We’ll write a piece of software that nobody likes and release it as New Scriptomatic. We’ll let people grumble and complain for awhile, and then we’ll bring back the old Scriptomatic (or Classic Scriptomatic) and everyone will love it! We’ll be heroes, and – best of all – we won’t have to do any work.

In the end, though, we decided to create a brand new version of the Scripotmatic, one that actually worked: Scriptomatic 2.0.

Scriptomatic 2.0 Q & A

To celebrate the release of the new Scriptomatic 2.0, we decided to hold a make-believe press conference. Here’s the transcript from that press conference.

New Features

New Features

Question: So what’s so great about Scriptomatic 2.0?

Answer: …….

Question: Could you speak into the microphone please?

Answer: Oh, sorry; we don’t do many press conferences. What’s great about Scriptomatic 2.0 is that it not only fixes some problems inherent in Scriptomatic 1.0, but it also introduces some really cool new features.

Question: There were problems with Scriptomatic 1.0?

Answer: No, of course not. It’s just that, for example, one of the … features … of Scriptomatic 1.0 was the way it handled properties that were stored as arrays: it just ignored them. Another feature was the way Scriptomatic 1.0 dealt with dates and times: it displayed them in UTC format, so you got output like 20040930083722.000000-480. In Scriptomatic 2.0, these … features … have been changed. Scriptomatic 2.0 now handles arrays without any problem, and now displays dates and times as, well, dates and times.

Question: Wow, that alone makes Scriptomatic 2.0 a worthy successor to the original.

Answer: You know, that’s what we thought, too. But our managers decided we were just being lazy, and so they made us go back and add a bunch of other features to Scriptomatic 2.0 as well.

Question: Really? What kind of features?

Answer: Oh, there are so many of them it’s hard to know where to begin. But here are some of the highlights:

Scriptomatic 2.0 now works with all the WMI namespaces on your computer. The old version only worked with the root\cimv2 namespace. That was fine for Windows 2000 computers, but just didn’t cut it with Windows XP or Windows Server 2003 computers.

Scriptomatic 1.0 gave you a bare-bones environment for running scripts: all you could do was click a button and run the script in a command window, displaying the returned data on screen. You can still do that with Scriptomatic 2.0; however, when running the script you also have options for saving returned data as a text file, saving it as an Excel file (in comma-delimited format), or saving the returned data as an HTML or XML file.

Scriptomatic 1.0 let you write scripts that ran against only a single computer.

Question: But what if you wanted to run that script against multiple computers?

Answer: Well, we were getting to that: you couldn’t run the script against multiple computers, at least not without re-writing the thing. But that’s not the case with Scriptomatic 2.0. With Scriptomatic 2.0, you can enter a bunch of computer names (as a comma-separated list, or by loading the names in from a text file), and the new Scriptomatic will automatically write you a script that runs against all those machines.

Question: That’s pretty cool.

Answer: We like to think so. After all, could you write a script like that using Classic Coke?

Well, OK, maybe if you did it that way. But most people don’t know about that.

Question: So is this multiple computer thing the best new feature of Scriptomatic 2.0?

Answer: Oh, by far. But by far the best new feature of Scriptomatic 2.0 is the fact that the Scriptomatic now speaks multiple languages. With Classic Scriptomatic you could write a script that used any scripting language you wanted, just as long as the scripting language you wanted was VBScript. With Scriptomatic 2.0, you can choose to create scripts written in VBScript, JScript, Perl, or Python.

Question: Really? So if I prefer Perl over VBScript, I can use Scriptomatic 2.0 to write Perl scripts.

Answer: You bet.

Question: And if I prefer Python over Perl, I can use Scriptomatic 2.0 to write Python scripts.

Answer: Of course.

Question: And if I prefer --

Answer: Yes.

How to Use Scriptomatic 2.0

How To

Question: Wow. So I guess that with all these new features Scriptomatic 2.0 must be really hard to use, huh?

Answer:

Question: I said, “I guess that with all these new features Scriptomatic 2.0 must be really hard to use, huh?”

Answer: Oh, sorry, we thought the press conference was over. No, the Scriptomatic is as easy to use as it ever was. You have a few more options available to you, but you can still write a complete, fully-functional WMI script with just a couple of mouse clicks.

Question: That’s hard to believe. Could you give us a demonstration?

Answer: We’d love to. To begin with, start Scriptomatic 2.0 by double-clicking the file ScriptomaticV2.hta. After a few seconds, your screen should look like this:

Scriptomatic 2.0

By default, Scriptomatic 2.0 loads all the classes found in the root\cimv2 namespace. If that’s the namespace you want to use, then you’re ready to write a script.

Question: But what if I want to use a different namespace?

Answer: That’s no problem. Just click the little dropdown labeled WMI Namspace. A list of all the WMI namespaces found on the local computer will appear, like so:

Scriptomatic 2.0

Pick the namespace you want to use, and Scriptomatic 2.0 will automatically load all the classes found in that namespace into the dropdown labeled WMI Class.

Question: Then what?

Answer: At this point you’re practically done. Just select a class from the WMI Class dropdown, and in a split-second the Scriptomatic will write a script for you that returns information for all the properties of that class. For example, suppose you want information about the Win32_BIOS class. Just select that class from the dropdown and you’ll get something like this:

Scriptomatic 2.0

Give it a try using Win32_BIOS. You’ll not only get a script, you’ll also see how Scriptomatic 2.0 handles arrays and how it converts dates and times from UTC format to something a bit more readable.

Question: Cool. But it looks like this script is written in VBScript. How do I get a script written in Perl or one of those other scripting languages?

Answer: Well, you’re right: VBScript is the default language for the Scriptomatic 2.0. But it’s not exactly hard to write a script using one of the other languages. For example, you want a Perl script? Then just click the radio button labeled Perl:

Scriptomatic 2.0

Question: Oh, I see. So how do I make Perl the default language for Scriptomatic 2.0?

Answer: Uh, next question, please.

Question: So I can’t make Perl the default language?

Answer: Well, no, sorry. But after you select Perl, any subsequent scripts you write in this session will be written in Perl, at least until you select a different language option. So that’s good.

Question: So you’re telling me it’s absolutely impossible to make Perl the default language?

Answer: Boy, you just don’t give up, do you? OK, if you really want Perl to be the default language, you can follow these steps.

Question: Is this guaranteed to work?

Answer: Well, it’s guaranteed just as strongly as the rest of the Scriptomatic, which is to say there’s no guarantee at all. But it should work, and as long as you make changes on a copy of Scriptomatic 2.0, you should be fine. If it doesn’t work, then you just throw the copy away and go back to the unedited version of Scriptomatic 2.0.

Anyway, do this:

Make a copy of ScriptomaticV2.hta, and open that copy in Notepad.

Scroll down until you find these lines of code:

'************************
'* Global State Variables
'************************
g_strCurrentLanguage  = "VBScript"
g_strCurrentNamespace = "\root\CIMV2"
g_strOutputFormat     = "CmdLine"

Change the value of the variable g_strCurrentLanguage to Perl (or to Python or JScript, as desired):

g_strCurrentLanguage  = "Perl"

Scroll down to the end of the file and look for these lines of code:

<tr>
<td><span style="font-size:8pt;">VBScript</span></td>
<td><input type="radio" name="language" onClick="ComposeVBScriptCode" CHECKED></td>
<tr>

<tr>
<td><span style="font-size:8pt;">Perl    </span></td>
<td><input type="radio" name="language" onClick="ComposePerlCode"></td>
</tr>

<tr>
<td><span style="font-size:8pt;">JScript </span></td>
<td><input type="radio" name="language" onClick="ComposeJScriptCode"></td>
</tr>

<tr>
<td><span style="font-size:8pt;">Python  </span></td>
<td><input type="radio" name="language" onClick="ComposePythonCode"></td>
</tr>

Remove the CHECKED parameter found after onClick=”ComposeVBScriptCode”. Type CHECKED after onClick=”ComposePerlCode” (or ComposePythonCode or JScriptCode, depending on the default you want to use). Your code should now look like this:

<tr>
<td><span style="font-size:8pt;">VBScript</span></td>
<td><input type="radio" name="language" onClick="ComposeVBScriptCode" ></td>
<tr>

<tr>
<td><span style="font-size:8pt;">Perl    </span></td>
<td><input type="radio" name="language" onClick="ComposePerlCode" CHECKED></td>
</tr>

<tr>
<td><span style="font-size:8pt;">JScript </span></td>
<td><input type="radio" name="language" onClick="ComposeJScriptCode"></td>
</tr>

<tr>
<td><span style="font-size:8pt;">Python  </span></td>
<td><input type="radio" name="language" onClick="ComposePythonCode"></td>
</tr>

Save the file and –with any luck – Perl will now be set as your default scripting language.

Question: OK, that’s not too bad. Now what about all those buttons under the label Output Format? I’ve clicked all of them, but nothing seems to happen.

Answer: There’s a good reason for that: when you click them, nothing does happen. Those buttons don’t affect the actual script written by the Scriptomatic; they come into play only if you click the Run button and then run the script from within Scriptomatic 2.0.

Question: I don’t get it.

Answer: OK, then do this. Write a script – using any class or language you want – and then click the Run button. A command window should pop up on screen, the script you just wrote should run, and the results should appear in that command window. The whole thing ought to look something like this:

Scriptomatic 2.0

That’s with the Output Format set to the default (Command Prompt). Now, select a different option, say, HTML. Your screen should look like this:

Scriptomatic 2.0

Run the script again, and see what happens. This time, your output should appear in a Web page rather than the command window:

Scriptomatic 2.0

With the Plain Text option, output should pop up as a plain-text file in Notepad; with Excel, the output should pop up in Excel (assuming, of course, that you have Excel installed). And with XML – well, you get the idea.

By the way, if you want to save this data, make sure you save it before you run another script. Because Scriptomatic uses the same temp files over and over, if you run Script A and then run Script B, the results of Script B will overwrite the old data currently displayed. For example, whatever happens to be on the HTML page right now will be replaced with a new set of data.

Question: Let me make sure I understand this now: all this works only if I run the script from within the Scriptomatic? If I save the script as, say, a .vbs file and then run it, will it save the output to Excel or HTML?

Answer: No, sorry. We considered that, but that brought up far too many complications to handle in a simple HTA. We wanted to maintain the traditional simplicity of the Scriptomatic as much as we could so ….

Question: Speaking of saving files ….

Answer: Yes, you can save scripts from within the Scriptomatic. Just click the Save button and then type the path and file name for the script in this dialog box:

Scriptomatic 2.0

And don’t forget to use the correct file extension: .vbs for VBScript; .js for JScript; .py for Python; and .pl for Perl.

Question: So what about this multiple computer stuff? How does that work?

Answer: Quite well, actually. At the bottom of the screen you’ll see a text box labeled Target Computers. Just type in the names of all the computers you want the script to run against, separating the computer names by commas:

Scriptomatic 2.0

In other words:

atl-ws-01, atl-ws-02, atl-ws-03, atl-ws-04

Note. You know how an entire industry has sprung up around telling you the inside secrets to video games? Well, here’s an inside secret to Scriptomatic 2.0: you don’t really have to separate computer names by commas. Instead, you can separate computer names by blank spaces, by semi-colons, or even by putting each computer on a separate line, like so:

atl-ws-01
atl-ws-02
atl-ws-03
atl-ws-04

Question: But I don’t like the idea of typing a bunch of computer names in a text box.

Answer: You big baby!

Um, sorry. What we meant to say is this: “That’s OK. If you have computer names stored in a text file, you can simply import all those names by clicking the Load From File button and then picking a text file to load in.”

Incidentally, regardless of how you get computer names into the text box, you’ll need to click the Upgrade Script button to get those names embedded into your script. For better or worse (OK, for worse), this doesn’t happen automatically.

Question: Don’t get me wrong, I really liked the old Scriptomatic. But one thing that bothered me is that it could only list the WMI namespaces and classes that were on my local machine; it couldn’t go out to, say, one of my servers and get the WMI namespaces and classes found there. I suppose that’s still a problem with the new version of the Scriptomatic?

Answer: Au contraire, which means – well, we’re not totally sure what that means. So let’s say this instead: on the contrary. In Scriptomatic 2.0 you can retrieve WMI information from a remote computer. Just click the WMI Source button and wait for this dialog box to appear:

Scriptomatic 2.0

When it does, type in the name of the remote computer, click OK, and the Scriptomatic will now retrieve information from that remote machine.

Question: Amazing. Now what do I do when I want to quit?

Answer: Interesting question; it never occurred to us that anyone ever would want to quit. But probably the best way to quit is to simply click the Quit button. You can also quit just by closing the Scriptomatic 2.0 window, but if you do that the temporary files created by Scriptomatic won’t be deleted. That’s not a big deal; there are only a handful of files and they’re pretty small. But, still ….

Support (or Lack Thereof)

Support

Question: Well, I’m sold. But what if I encounter any problems with Scriptomatic 2.0, what should I do then?

Answer: Send email to scripter@microsoft.com. Officially we offer no support for Scriptomatic 2.0 and we can’t promise to respond to your questions. But we’ll see what we can do.

Future Plans

Future Plans

Question: One last question: will there be a Scriptomatic 3.0?

Answer: No. We’ve decided to invest all our time and money in creating a new online venture: scriptBay. It will be a Web site where we’ll auction WMI scripts off to the highest bidder.

Question: Um, shouldn’t you have done that before you released Scriptomatic 2.0, which will let people write those same WMI scripts for free?

Answer: We’ll get back to you on a date for Scriptomatic 3.0 ….


© 2007 Microsoft Corporation. All rights reserved.  Terms of Use | Trademarks | Privacy Statement
 Microsoft
AND

Windows Vista 버전

Windows Vista 에디션 개요

가정용 또는 업무용 등 PC를 사용하는 다양한 방식에 따라 사용자에게 적합한 Windows Vista 에디션이 있습니다.

Windows Vista Ultimate

Ultimate K

Windows Vista Ultimate K는 모든 기능을 원하는 사용자를 위한 에디션입니다. Windows Vista의 가장 완벽한 에디션을 통해 업무와 엔터테인먼트 사이를 쉽게 전환할 수 있습니다. Ultimate는 업무에 필요한 성능, 보안 및 모바일 기능 및 사용자가 즐길 수 있는 모든 엔터테인먼트 기능을 제공합니다.




Windows Vista Home Premium

Home Premium K

Windows Vista Home Premium K는 가정용 데스크톱 및 모바일 PC에 적합한 에디션입니다. 가정이나 모바일 환경 PC에서 사용자에게 필요한 생산성, 엔터테인먼트 및 보안을 제공하면서 강력한 기능을 사용할 수 있게 해 주는 혁신적인 디자인을 제공합니다.




Windows Vista Home Basic

Home Basic K/KN

Windows Vista Home Basic K/KN은 전자 메일, 인터넷 검색 및 사진 보기 등 기본적인 컴퓨터 기능이 필요한 가정에 적합합니다. 설치 및 유지 관리가 간편하고, PC 및 인터넷을 빠르게 검색할 수 있으며 보다 안전한 환경을 제공하여 예상치 못한 상황에서 사용자를 보호할 수 있습니다.




Windows Vista Business

Business K/KN

Windows Vista Business K/KN은 중소기업의 수요에 맞게 특별히 설계된 첫 번째 Windows 에디션입니다. 기술 지원 관련 문제에 소요되는 시간을 절감하여 비즈니스에 보다 주력할 수 있습니다. Windows Vista Business K/KN은 현재 향후 비즈니스를 위한 탁월한 선택입니다.




Windows Vista Enterprise

Enterprise

Windows Vista Enterprise는 IT 비용 및 위험을 크게 줄여 주며, IT 인프라가 복잡한 국제적인 대기업의 수요에 맞게 특별히 설계되었습니다.




어떤 제품 기능은 Windows Vista 특정 에디션에서만 가능하며 한층 업그레이드된 또는 추가적인 하드웨어가 필요할 수도 있습니다.


출처 : http://www.microsoft.com/korea/windows/products/windowsvista/editions/default.mspx
AND

제로 데이 공격

시스템 2007. 4. 9. 13:22
제로 데이 공격 [-, zero day attack]
본문
보안 취약점이 발견되었을 때 그 문제의 존재 자체가 널리 공표되기도 전에 해당 취약점을 악용하여 이루어지는 보안 공격. 공격의 신속성을 의미하는 것으로, 일반적으로 컴퓨터에서 취약점이 발견되면 제작자나 개발자가 취약점을 보완하는 패치를 배포하고 사용자가 이를 내려받아 대처하는 것이 관례이나, 제로 데이 공격은 대응책이 공표되기도 전에 공격이 이루어지기 때문에 대처 방법이 없다. 아직 알려지지 않은 취약 지점도 공격할 수 있는 알려지지 않은 프로그램 공격도 이에 속하며, 공격에 이용된 패킷의 특징을 분석해서 아직 발견되지 않은 취약점을 이용한 공격을 차단하는 연구도 진행되고 있으나 아직 확실한 해결책은 발견되지 않고 있다.
AND

WMI로 Windows 관리

시스템 2007. 3. 22. 13:12
출처 : http://www.microsoft.com/korea/technet/win2000/mngwmi.asp

WMI로 Windows 관리

Michael Maston
Microsoft Corporation

1999년 11월

요약: 규모가 커지고 복잡해지는 엔터프라이즈 시스템, 응용 프로그램 및 네트워크의 관리에 도움이 되도록 Windows 2000의 일부로 개발된 Microsoft® Windows® Management Instrumentation을 소개합니다. Windows 95, Windows 98 및 Windows NT® 4.0에서도 사용할 수 있습니다. (15 인쇄 페이지)

목차

소개
시스템의 모든 서비스 나열
소개 중지된 자동 서비스 나열
소개 사용 가능한 공간이 20% 미만인 모든 드라이브 파티션 나열
소개 운영 체제 부팅 지연 설정
소개 응용 프로그램 이벤트 로그 백업
소개 원격 컴퓨터 다시 부팅
소개 WMI를 통해 메모장 시작
소개 WMI에서 Windows NT 로그 이벤트 수집
소개 CPU 사용률이 높은 이벤트 수집
소개 결론

소개

이 기사의 목표는 Microsoft® Windows® Management Instrumentation(WMI)을 소개하고, WMI에 익숙해지고 가능한 빨리 실행하여 스크립트 인터페이스를 통해 시스템을 관리하는 데 WMI를 사용하도록 하는 것입니다. WMI를 사용하여 작업을 수행하기 전에 몇 가지 유용한 예제의 사용을 포함하여 WMI가 무엇인지, 사용 목적이 무엇인지, 귀중한 이유가 무엇인지에 등에 관해 약간의 배경 지식이 필요합니다.

정보 기술 관리자가 당면한 가장 큰 난제의 하나는 점점 규모가 커지고 복잡해지는 엔터프라이즈 시스템, 응용 프로그램 및 네트워크를 관리하는 것입니다. 이러한 문제의 해결과 Windows 기반 서버 및 데스크톱의 총 소유 비용 절감을 돕기 위해 Microsoft는 확장 가능 관리 인프라이며 Windows 2000의 일부로 제공되는 Windows Management Instrumentation(WMI)을 개발했습니다. WMI는 DMTF(Distributed Management Task Force)가 채택한 WBEM 권고안과 CIM(Common Information Model)에 기반합니다. http://www.msdn.microsoft.com/voices/news/wmisidebar2.asp 에서 "DMTF, CIM, WBEM 및 WMI" 막대를 참조하십시오. WMI에는 CIM에서 정의한 관리 개체는 물론 Windows 플랫폼에서 사용할 수 있는 추가 정보를 위한 CIM 모델 확장도 포함됩니다.

즉, WMI는 일관되고 확장 가능하며 표준에 기반하는 단일의 개체 지향 인터페이스를 사용하여 Windows 2000의 관리를 극대화합니다. 또한 WMI 데이터에 액세스하는 모든 응용 프로그램이나 스크립트는 로컬 컴퓨터에서 실행하든 원격에서 실행하든 관계없이 제대로 작동할 수 있습니다. WMI는 Windows 2000에는 물론 Windows 95, Windows 98 및 Windows NT® 4.0에도 사용할 수 있습니다. 오늘날 IT 관리자가 당면한 복잡한 관리 작업의 해결에 소중하게 사용할 수 있는 WMI의 핵심 기능은 다음과 같습니다.

  • 균일 스크립트 API 모든 관리 개체는 CIM 개체 모델에 기초한 공통 개체 프레임워크에 정의됩니다. 스크립트는 단일 API인 WMI만 사용하여도 본질적으로 다른 많은 원본에서 정보를 액세스할 수 있습니다.
  • 원격 관리 응용 프로그램과 스크립트는 WMI 내에서 관리되는 개체를 기본적으로 로컬과 원격 모두에서 사용할 수 있습니다. 원격 개체 관리에 추가 작업이 필요 없습니다.
  • 검색성과 탐색성 응용 프로그램과 스크립트는 사용 가능한 클래스를 나열함으로써 시스템에 대한 사용 가능한 정보를 찾을 수 있습니다. 관련 개체 사이의 관계를 검색하고 교환하여 하나의 관리된 엔티티가 다른 엔티티에 미치는 영향을 알 수 있습니다.
  • 쿼리 기능 WMI는 관리 데이터를 관계형 데이터베이스처럼 취급하며, 데이터를 필터링하고 관심 있는 데이터만을 중심으로 요청하기 위해 SQL 쿼리를 보낼 수 있게 허용합니다.
  • 강력한 이벤트 게시 및 가입 내부 이벤트 기능의 지원 여부에 관계 없이 시스템에 있는 관리 개체의 거의 모든 변경 내용에 대해 이벤트를 요청할 수 있습니다. 이벤트 가입자는 원래 개발자가 미리 정의한 이벤트를 얻을 수 있을 뿐만 아니라 자신의 특정 관심에 따라 매우 특정한 이벤트를 알리도록 요청할 수 있습니다. 또한 아키텍처의 신축성이 매우 뛰어나므로 사실상 모든 사용자 정의 동작을 특정 이벤트 수신하는 즉시 수행할 수 있습니다.

우선 아키텍처 관점에서 WMI를 살펴보도록 합니다. 그림 1은 공급자, CIM 개체 관리자(CIMOM) 및 WMI 정보의 소비자 등으로 구성되는 WMI의 3계층 모델을 보여줍니다.

그림 1 WMI 아키텍처

가장 낮은 수준에서 상위 수준으로 작업해 나갈 때 첫째 계층에는 공급자가 있습니다. 간단히 설명해서 공급자는 운영 체제, 서비스, 응용 프로그램, 장치 드라이버 같은 관리 대상 시스템과 CIM 개체 관리자 사이의 중간 에이전트입니다. 공급자의 작업은 관리를 위해 소프트웨어가 제공하는 인터페이스를 사용하여 기본 데이터 원본에서 관리 정보를 추출하는 것입니다. 그런 다음 관리 정보와 인터페이스는 공급자에 의해 WMI가 WMI 소비자에게 제공하는 개체 클래스로 매핑됩니다. 나아가, 새롭게 업데이트된 관리 대상 시스템은 심각한 중간 변환 없이 관리 API를 노출하는 직접적인 방법으로 공급자를 사용합니다.

그 다음 층에는 자체의 저장 리포지토리를 가지며 개체 요청의 중개자 역할을 하는 CIM 개체 관리자인 CIMOM이 있습니다. CIMOM 및 그 리포지토리는 WinMgmt라는 시스템 서비스에 의해 시스템에 표현됩니다. 공급자는 게시된 COM 인터페이스 집합을 통해 CIMOM에 연결됩니다. CIMOM은 사용 가능한 클래스(정의는 리포지토리에 저장)와 그러한 클래스의 인스턴스를 공급할 책임이 있는 공급자를 추적합니다. WMI 소비자가 CIMOM에 관리 정보를 요청하면 CIMOM은 요청을 평가하고 정보를 가진 공급자를 확인한 다음 정보를 구하여 소비자에게 데이터를 제공합니다. 소비자는 필요한 정보를 요구만 하면 되고, 정확한 정보원이나 기본 API에서 정보가 추출되는 방법에 대한 세부 사항은 알 필요가 없습니다. 정적 데이터를 리포지토리에 저장하여 공급자 없이도 검색할 수 있지만, WMI 시스템의 실제 강점은 관리 대상 시스템에 대한 동적 정보를 제공하는 것이고 이러한 정보의 제공은 완전히 공급자를 통하여 이루어집니다.

마지막 층에는 WMI 데이터의 소비자가 있습니다. 소비자는 MMC 스냅인과 같은 관리 도구, Microsoft Systems Management Server(SMS), 다른 공급업체의 응용 프로그램 또는 스크립트와 같은 관리 응용 프로그램일 수 있습니다. 앞에서도 설명한 것처럼 이들 소비자는 정보가 필요한 개체의 클래스만 알면 됩니다. 정보의 출처와 실제로 정보를 얻는 방법에 대한 자세한 내용은 숨겨지며 관련이 없습니다. 이러한 방식에 따라 응용 프로그램이나 스크립트는 단일 공통 API인 WMI에 쓸 수 있고 컴퓨터, 운영 체제, 응용 프로그램, 장치에 대한 풍부한 정보는 물론 SNMP나 DMI 같은 다른 관리 프로토콜을 통한 정보도 얻을 수 있습니다.

WMI 사용 예제를 설명하기 전에 WMI가 제공하는 관리 클래스를 통해 수행할 수 있는 작업의 종류를 알아보기로 합니다. WMI 클래스에서 정의할 수 있는 정보에는 몇 가지 종류가 있습니다.

  • 속성 클래스의 특정 인스턴스에 대한 설명 또는 운영 정보를 제공합니다. 예를 들어 Win32_DiskDrive 클래스의 인스턴스는 C: 드라이브에 값 "IDE"를 갖는 InterfaceType이라는 속성을 정의합니다.
  • 메서드 클래스의 특정 인스턴스에서 메서드는 그 인스턴스를 대상으로 수행할 수 있는 동작입니다. 예를 들어, Win32_Directory 클래스에는 Windows 그래픽 사용자 인터페이스에서처럼 폴더의 내용을 압축할 수 있는 Compress() 메서드가 있습니다.
  • 이벤트 시스템에서 발생한 관심 있는 사건이나 실패를 수신하기 위해 소비자가 요청할 수 있는 알림입니다. 정의된 속성의 변경 내용을 이벤트의 기초로 사용할 수 있습니다. 예를 들어, Win32_Processor 클래스의 LoadPercentage 속성은 CPU 사용률이 50% 이상으로 측정될 때마다 이벤트를 요청하기 위해 사용할 수 있습니다. 또한, 이벤트는 특정 속성에 기초하지 않고도 제공될 수 있습니다.
  • 연결 연결은 클래스 사이의 관계를 설명하며 그 자체도 클래스에 의해 정의됩니다. 전화 접속 모뎀 및 그것이 연결된 통신 포트의 인스턴스에 대한 참조를 포함하는 Win32_POTSModemToSerialPort 클래스는 연결의 한 예입니다. 연결은 문제 해결과 같은 작업을 위해 관련 구성 요소의 전체 시스템에 대한 관리 정보를 보거나 교환할 수 있기 때문에 매우 강력한 개념입니다.

Windows 2000과 함께 제공되며 다른 모든 Windows 운영 체제에도 사용할 수 있는 최신 버전의 WMI에는 시스템의 많은 부분을 위해 풍부한 장치 정보를 제공하는 몇 가지 공급자가 포함되어 있습니다. 이들 공급자는 다음과 같습니다.

  • Win32® 공급자 운영 체제, 컴퓨터 시스템, 주변 기기 및 파일 시스템에 대한 정보와 보안 정보를 제공합니다.
  • WDM 공급자 사용자 입력 장치, 저장 장치, 네트워크 인터페이스 및 통신 포트를 위해 낮은 수준의 WDM(Windows Driver Model) 드라이버 정보를 제공합니다.
  • 이벤트 로그 공급자 Windows NT 이벤트 로그 항목 읽기, 이벤트 로그 관리 옵션 구성 및 이벤트 로그 백업을 가능하게 합니다. 이벤트가 로그에 추가될 때 WMI 이벤트가 생성될 수 있습니다.
  • 레지스트리 공급자 레지스트리 키 만들기, 읽기 및 쓰기를 가능하게 합니다. 지정한 레지스트리 키가 수정되면 WMI 이벤트가 생성될 수 있습니다.
  • 성능 카운터 공급자 시스템 모니터 도구에 표시되는 성능 값의 계산에 사용되는 원시 성능 카운터 정보를 제공합니다. 시스템에 설치된 성능 카운터는 자동으로 이 공급자를 통해 나타납니다. Windows 2000에서만 지원됩니다.
  • Active Directory® 공급자 Microsoft Active Directory 서비스에 저장되는 모든 정보의 게이트웨이의 역할을 합니다. 단일 API를 사용하여 WMI와 Active Directory 모두의 정보를 액세스할 수 있게 합니다.
  • Windows Installer 공급자 Windows Installer에 대한 완전한 제어와 WMI를 통한 소프트웨어 설치를 가능하게 합니다. 또한 Windows Installer를 사용하여 설치된 모든 응용 프로그램에 대한 정보를 제공합니다.
  • SNMP 공급자 관리에 SNMP(단순 네트워크 관리 프로토콜)를 사용하는 시스템과 장치의 게이트웨이 역할을 합니다. SNMP MIB 개체 변수를 읽고 쓸 수 있습니다. SNMP 트랩은 자동으로 WMI 이벤트에 매핑됩니다.
  • 보기 공급자 기존 클래스로부터 새로운 집계 클래스를 만들 수 있습니다. 관심 있는 정보만을 위해 원본 클래스를 필터링할 수 있고, 여러 클래스의 정보를 단일 클래스로 조합할 수 있으며, 여러 컴퓨터의 정보를 단일 보기에 집계할 수 있습니다.

http://www.msdn.microsoft.com/voices/news/wmichart.asp 에서 WMI 시스템 스키마 차트를 참조하십시오. 이 스키마 차트는 Windows 2000에서 사용할 수 있는 중요한 WMI 시스템 클래스 및 장치 클래스와 더불어 각 클래스에서 정의하는 속성, 메서드 및 연결을 보여줍니다. 공급자에 대한 전체 스키마만으로도 여기에 모두 게시할 수 없을 정도로 방대하고 풍부합니다. 그러나 이 차트는 WMI가 제공하는 내용을 탐색할 때 유용한 참조 도구가 될 수 있고 사용할 수 있는 기능을 더 많이 배우기 위한 출발점으로 이용할 수 있습니다. 그러나 WMI 공급자는 단지 핵심 운영 체제 기능으로 제한되지는 않습니다. Windows 플랫폼에서 실행되는 다른 핵심 응용 프로그램과 서비스를 위해 Microsoft나 다른 공급업체에서 많은 공급자를 개발했습니다. http://www.msdn.microsoft.com/voices/news/wmisidebar1.asp 에서 "How others are making use of WMI(다른 사람들이 WMI를 사용하는 방법)" 세로 막대를 참조하십시오.

이제 WMI의 정의와 시스템 관리에 편리한 이유에 대해 설명이 끝났습니다. 이제부터는 WMI의 스크립트 지원을 사용하여 시스템을 관리하는 방법을 설명하기로 합니다. Windows 플랫폼의 스크립트처럼 Windows 스크립트 호스트(WSH)를 통해 여러 가지 스크립트 언어를 사용할 수 있습니다. 여기에는 Microsoft Visual Basic® Scripting Edition(VBScript), Microsoft JScript® 및 Perl 같이 Microsoft ActiveScripting 기술을 지원하는 스크립트 언어가 포함됩니다. C++, Visual Basic, ASP(Active Server Pages) 및 표준 HTML 페이지 안의 스크립트를 통해 쉽게 WMI 클래스를 액세스할 수 있습니다.

WMI 장치 정보를 사용하여 수행할 수 있는 작업은 너무 많기 때문에 모든 주요 하위 시스템의 대표적인 예를 이 기사에 제시할 수는 없습니다. 다행히 어느 한 클래스에서 클래스 액세스, 속성 읽기 및 쓰기, 메서드 실행 및 이벤트 수신 방법을 이해하면 그것을 다른 WMI 클래스에도 적용할 수 있습니다. WMI의 성능 일부를 설명하기 위해 VBScript로 작성한 몇 가지 예제를 선택했습니다. 예제는 다음과 같습니다.

  • 설치된 모든 서비스의 목록을 열거한 다음 중지했지만 "자동" 시작 모드로 설정된 서비스만 확인합니다.
  • 내 컴퓨터의 모든 논리 디스크 파티션을 나열하고 사용할 수 있는 공간이 20% 미만인 파티션을 확인합니다.
  • 기본으로 선택된 운영 체제를 부팅하기 전에 시간 지연을 변경합니다.
  • 내 "응용 프로그램" 이벤트 로그에서 백업을 수행한 다음 로그 파일을 지웁니다.
  • 동료의 데스크톱 시스템을 다시 부팅합니다. 걱정할 필요는 없습니다. 동료가 이 작업 수행에 필요한 보안 사용 권한을 주어야 했고 이는 보안에 관해 논의할 기회가 되었습니다.
  • WMI 메서드를 통해 메모장 유틸리티를 시작합니다.
  • 이벤트 로그에 추가되는 새 이벤트를 감시할 이벤트 소비자를 설정합니다.
  • CPU 사용률이 50%를 초과할 때마다 이벤트를 요청하도록 이벤트 소비자 스크립트를 다시 구성합니다.

시스템의 모든 서비스 나열

이 예제에서는 Win32_Service 클래스를 사용하여 시스템에 설치된 서비스를 실행 중인가의 여부에 관계 없이 모두 출력합니다.

Set ServiceSet =
GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_Service")
for each Service in ServiceSet
WScript.Echo Service.Description
Next

이 예제를 잠깐 살펴보면 각 단계에서 수행되는 작업을 이해할 수 있습니다. 먼저 WMI 서비스(WinMgmt)에서 GetObject()를 호출하여 개체를 요청합니다. 이를 위해서는 InstancesOf() 메서드를 통해 Win32_Service 클래스의 모든 인스턴스를 요청합니다. 이 호출의 결과로 Win32_Service 클래스의 인스턴스 목록이 반환됩니다.

인스턴스를 다시 ServiceSet 변수에 넣은 후에는 각 인스턴스를 차례로 거치면서 관심 있는 속성, 즉 서비스의 친숙한 이름이 포함되어 설명 필드를 표시합니다. 설명 속성은 서비스 개체의 자동화 속성으로 취급되므로 훨씬 직관적인 스크립트를 작성할 수 있습니다. 또한 AQL 쿼리를 ExecQuery() 메서드로 보내도 정확히 같은 결과를 얻을 수 있습니다.

Set ServiceSet =
GetObject("winmgmts:{impersonationLevel=impersonate}")
.ExecQuery("select * from Win32_Service")

이 SQL 쿼리에서는 선택되고 반환될 모든 인스턴스(인스턴스의 모든 속성 포함)를 요청합니다. 이 양식을 사용하더라도 반환되는 개체의 집합은 정확히 같지만, 아래의 예제에서 명확히 알 수 있듯이, 쿼리 양식을 이용하면 관심 있는 인스턴스로만 반환되는 속성, 인스턴스 또는 둘 다의 개수를 세밀하게 제어할 수 있습니다. 보다 중요한 것은 열거를 지원하는 WMI를 통해 제공되는 모든 클래스에 대해 이들 메커니즘 중 어느 것이나 사용할 수 있다는 것입니다.

이 예제 및 다음에 나오는 예제와 관련하여 마지막으로 주의할 것은 사용되는 보안 모델에 대한 것입니다. 바로 위에서 본 GetObject() 호출에 "{impersonationLevel=impersonate}" 문이 포함되어 있습니다. 기본적으로 이 문은 시스템이 데이터를 요청하거나 메서드를 실행할 때 제시될 자격 증명으로서 현재의 로그인 자격 증명을 사용하도록 시스템에 알립니다. 이렇게 하면 원시 API를 직접 호출하는 것과 같습니다. 이것은 로컬 컴퓨터와 원격 컴퓨터에 관계없이 모든 요청에 적용됩니다. 어느 경우든 시스템이 보는 사용자는 현재 로그인으로 정의된 사용자입니다. 물론, 필요하면 요청에 대한 다른 자격 증명을 지정할 수 있지만 이 기사에서는 그 내용을 다루지 않습니다. 또한 Windows 2000에서 "{impersonationLevel=impersonate}" 문은 "impersonate"가 COM에 대해 구성된 기본 가장 수준이기 때문에 생략할 수 있습니다. 그러나 Windows NT 4.0과 같은 이전 플랫폼에서도 동일하게 작동할 수 있도록 이 예제에서는 이것을 그대로 사용합니다.

중지된 자동 서비스 나열

자동 실행되도록 설정했지만 사용자가 수동으로 중지하는 등 어떤 이유로 현재 실행 중이 아닌 서비스만 보려면 아래에서 굵게 표시된 것처럼 스크립트 쿼리 버전에서 한 가지만 변경하면 됩니다.

Set ServiceSet =
GetObject("winmgmts:{impersonationLevel=impersonate}")
.ExecQuery("select * from Win32_Service where State='Stopped' and
StartMode='Auto'")
for each Service in ServiceSet
WScript.Echo Service.Description
next
if ServiceSet.Count = 0 Then WScript.echo "쿼리 기준과 일치하는 서비스가 없습니다."

SQL 데이터베이스의 특정 정보를 요청할 때와 마찬가지로, 부팅 시 자동 실행되도록 구성되었지만 현재 중지되어 있는 서비스의 목록을 얻으려면 쿼리에 WHERE 절을 추가하면 됩니다. 지정한 쿼리는 이미 얻은 결과의 범위를 State 속성에 "Stopped" 값이 있고 StartMode 속성이 "Auto"로 설정된 인스턴스로 좁힙니다.

요구하는 정보 세트의 특성에 따라 쿼리는 아주 단순할 수도 있고 매우 복잡할 수도 있습니다. 기준에 일치하여 반환되는 인스턴스가 없는 경우를 포착하기 위해 스크립트의 끝에 행 하나를 추가한 점에 유의해야 합니다. 이 시나리오에서는 이런 상황이 발생할 가능성이 높습니다. 이 스크립트에 의해 반환되는 인스턴스를 보기 위해 시스템의 인쇄 스풀러를 임시 중지하고 스크립트를 실행할 것을 권장합니다. 인쇄 스풀러를 끄기 전에는 "쿼리 기준과 일치하는 서비스가 없습니다." 메시지가 표시되고, 이후에는 중지된 스풀러 서비스를 나타내는 인스턴스 하나가 결과로 표시됩니다. 이 테스트를 마친 후에는 인쇄 스풀러 서비스를 다시 시작하고 스크립트에 의해 반환되는 인스턴스에서 인쇄 스풀러 서비스가 사라졌는지 확인해야 합니다.

사용 가능한 공간이 20% 미만인 모든 드라이브 파티션 나열

드라이브 공간이 부족한지 확인하려면 Win32_LogicalDisk 클래스의 FreeSpaceSize 등 두 속성을 검색합니다. 이 두 가지 정보를 이용하면 사용 가능 공간의 백분율을 알 수 있고 한계보다 작은 디스크 파티션을 확인할 수 있습니다.

Set DiskSet =
GetObject("winmgmts:{impersonationLevel=impersonate}")
.ExecQuery("select FreeSpace,Size,Name from Win32_LogicalDisk where
DriveType=3")
for each Disk in DiskSet
If (Disk.FreeSpace/Disk.Size) < 0.20 Then
WScript.Echo + Disk.Name + " 드라이브의 공간이 부족합니다."
End If
Next

이 쿼리에서는 스크립트 작성에 필요한 정확한 속성들이 필요하지만 그것들이 모두 Win32_LogicalDisk 클래스에 들어 있지는 않습니다. WHERE 절에서는 로컬 하드 디스크에 대한 정보를 얻기 위해 해당 드라이브 종류(DriveType=3)로 쿼리를 제한합니다. 이 필터 플로피 드라이브를 사용하지 않으면 CD-ROM 드라이브와 네트워크 공유도 검사에 포함하게 되므로 바람직하지 않습니다. 또한 공간 부족 메시지를 표시할 경우에 사용하기 위해 이름 속성도 검색합니다.

운영 체제 부팅 지연 설정

이 스크립트에서는 부팅 시 사용자가 기본 운영 체제가 아닌 다른 부팅 옵션을 선택할 수 있는 시간을 주기 위해 Win32_ComputerSystem 클래스를 사용하여 부팅 지연 설정을 수정합니다. 이 스크립트의 주요 차이점은 Win32_ComputerSystem 클래스의 속성을 수정한 다음 WMI에 다시 기록하여 운영 체제 설정을 업데이트하는 것입니다.

Set CompSysSet =
GetObject("winmgmts:{impersonationLevel=impersonate}"
.ExecQuery("select * from Win32_ComputerSystem")
for each CompSys in CompSysSet
CompSys.SystemStartupDelay = 20
CompSys.Put_()
next
WScript.Echo "부팅 지연 시간 설정"

이 작업을 완료하기 위해 전과 마찬가지로 쿼리를 사용하여 Win32_ComputerSystem 클래스를 열거합니다. 이 스크립트에서는 각 인스턴스를 순환하면서 임시 변수의 SystemStartupDelay 속성 값을 원하는 값으로 설정합니다. 그러나, 이 클래스의 경우 주어진 컴퓨터에 대한 컴퓨터 시스템 인스턴스가 하나뿐이므로 인스턴스가 항상 하나 밖에 없습니다. 마지막에는 변경된 값을 사용하여 인스턴스를 다시 쓰기 위해 Put_() 메서드를 호출합니다. 한 번의 Put_() 호출로 인스턴스의 여러 속성을 동시에 업데이트할 수 있습니다. WMI에서 지원되는 쓰기 가능한 모든 속성에 동일한 메커니즘을 적용할 수 있습니다.

20초의 값이 속성에 기록됩니다. 스크립트를 실행한 후 그림 2와 같이 제어판의 시스템 애플릿에 있는 고급 탭의 시작 및 복구 옵션에서 이 값을 확인할 수 있습니다.

mngwm02

그림 2 시작 및 복구 옵션

응용 프로그램 이벤트 로그 백업

Win32_NTEventLogFile 클래스는 Windows NT 4.0과 Windows 2000의 이벤트 로그를 모델로 합니다. 기본적으로 System, Security, Application 등 세 가지 표준 이벤트 로그가 있습니다. 이 예제에서는 이 로그 중 하나를 백업하는 메서드를 호출합니다. WMI의 메서드는 특정 관리 개체에 적용되는 단순한 함수 호출입니다. 여기서 백업 메서드는 Windows NT 이벤트 로그 개체의 인스턴스에 적용됩니다.

LogFileSet =
GetObject("winmgmts:{impersonationLevel=impersonate,(Backup)}")
.ExecQuery("select * from Win32_NTEventLogFile where
LogfileName='Application')
for each Logfile in LogFileSet
RetVal = LogFile.BackupEventlog("c:\BACKUP.LOG")
if RetVal = 0 then WScript.Echo "로그를 백업했습니다."
next

이 쿼리는 Win32_NTEventLogFile 클래스를 대상으로 실행되고 관심 있는 특정 로그 파일인 "Application"을 필터링한다는 점에서 기본 원칙은 이전과 동일합니다. GetObject() 호출에 "(Backup)" 문이 추가된 점에 유의하십시오. 이벤트 로그 파일을 백업하려면 계정에 "백업" 권한을 부여해야 합니다. NT 보안 그룹인 Administrators 및 Backup Operators 그룹의 구성원에게는 이 권한이 기본적으로 부여됩니다. 그러나, 권한이 부여된 것만으로는 그 권한을 사용할 수 없습니다. 권한이 부여된 백업과 같은 작업을 실행할 때는 사용하기 전에 사용자가 권한을 명시적으로 사용 가능하게 설정해야 합니다. GetObject() 호출에 "(Backup)"을 지정하지 않으면 이 스크립트를 실행할 때 BackupEventlog() 메서드 호출 시 "액세스 거부" 메시지를 받고 작업이 수행되지 않습니다. BackupEventlog() 메서드는 유일한 매개 변수로 백업 파일의 경로 및 이름을 사용합니다.

백업 후 Appication 이벤트 로그에서 항목을 지우려면 아래에 굵게 표시된 것과 같이 스크립트를 간단히 수정하면 됩니다.

LogFileSet =
GetObject("winmgmts:{impersonationLevel=impersonate,(Backup)}")
.ExecQuery("select * from Win32_NTEventLogFile where
LogfileName='Application'")
for each Logfile in LogFileSet
RetVal = LogFile.BackupEventlog("c:\BACKUP.LOG")
if RetVal = 0 then WScript.Echo "로그를 백업했습니다."
RetVal = LogFile.ClearEventlog()
if RetVal = 0 then WScript.Echo "로그를 지웠습니다."
next

업데이트된 예제에서 굵게 표시된 영역은 ClearEventlog() 메서드를 호출하여 로그 파일을 지우고 결과가 성공적이면 메시지를 표시하는 기능을 합니다.

원격 컴퓨터 다시 부팅

WMI에 대한 원격 작업은 로컬에서 수행하는 작업과 거의 같습니다. 이전의 모든 예제는 기본인 로컬 시스템 대신 원격 컴퓨터로 대상을 지정하도록 쉽게 수정할 수 있습니다. WMI를 다루는 데 있어 특정 대상 컴퓨터를 호출하는 것 이외에 차이점이 없습니다. 이렇게 하면 아주 단순한 스크립트를 사용하여 개별적으로 또는 전체 엔터프라이즈에 걸쳐 정보 속성이나 메서드를 액세스할 수 있게 되므로, 이는 결코 작은 변화가 아닙니다. 이제 Win32_OperatingSystem 클래스의 Reboot() 메서드를 사용하여 원격 시스템을 다시 부팅합니다.

Set OpSysSet =
GetObject("winmgmts:{impersonationLevel=impersonate,(RemoteShutdo
wn)}//alexn-pc ").ExecQuery("select * from Win32_OperatingSystem
where Primary=true")
for each OpSys in OpSysSet
OpSys.Reboot()
Next

이 스크립트를 만들기 위해서는 원격 컴퓨터를 쿼리하여 실행 중인 운영 체제의 인스턴스를 알아내야 합니다. 여기서는 Primary 플래그가 TRUE로 설정된 운영 체제를 알아냅니다. 물론 메서드에서 올바른 시스템을 쿼리하도록 하기 위해 컴퓨터 이름 alexn-pc를 지정해야 합니다. 이 경우 대상 컴퓨터를 지정하는 이외에 로컬 컴퓨터에서 정보를 검색하는 방법에는 차이가 없습니다.

여기서도 작업이 권한이 부여된 작업임에 유의해야 합니다. 이 스크립트를 성공적으로 사용하려면 사용자가 원격 컴퓨터의 Administrator 그룹 구성원이어야 합니다. 스크립트가 제대로 작동하려면 원격에서 시스템을 종료할 수 있는 권한이 원격 시스템에서 사용자에게 부여되어야 하고, 권한이 부여된 작업을 시도하기 전에 "(RemoteShutdown)"을 사용하여 권한을 명시적으로 사용 가능하게 설정해야 합니다. 앞에서 설명한 것처럼 모든 사용 권한과 특권은 스크립트를 실행하는 로그인한 사용자를 기초로 합니다. WMI는 수행이 허용된 정보와 동작만 가능하도록 사용자 계정에 현재 정의된 권한을 구체화합니다.

WMI를 통해 메모장 시작

이 예제에서는 Win32_Process 클래스의 WMI 메서드를 통해 새 프로세스를 시작합니다. 여기서는 보여주기 위한 목적으로 비교적 단순한 응용 프로그램인 메모장을 선택했지만 실행 가능한 다른 응용 프로그램을 사용할 수도 있습니다. 이는 비교적 경험이 적은 사용자를 지원하는 담당자에게 매우 유용할 수 있습니다. 예를 들어, 사용자에게 진단 도구 실행을 위한 사용자 인터페이스, 메뉴 등을 제공하기 보다는 지원 담당자가 스크립트를 이용하여 WMI를 통해 원격으로 진단 도구를 호출하는 도구를 사용자 시스템에 표시할 수 있습니다. 이것만으로도 상당히 시간을 절약할 수 있습니다.

set process =
GetObject("winmgmts:{impersonationLevel=impersonate}
!Win32_Process")
result = process.Create ("notepad.exe",null,null,processid)
WScript.Echo "메서드에서 반환된 결과 = " & result
WScript.Echo "새 프로세스의 ID : " & processed

이 예제에는 두 가지 새로운 개념이 있습니다. 새로 개발된 개념 중 첫째는 Win32_Process 클래스를 요청할 때 GetObject() 호출에 COM 모니커 표기를 사용하는 것입니다. 모니커는 다른 COM 개체의 위치를 포함하고 바인딩하기 위한 COM 표준 메커니즘입니다. 이를 통해 디스플레이 이름을 토대로 특정 개체로 되돌아갈 수 있습니다. 둘째 개념은 Win32_Process 클래스의 인스턴스로 되돌아가기 위해 ExecQuery()를 통해 쿼리를 보내는 대신 클래스 개체 자체를 되돌리도록 요청하는 것입니다. 그 이유는 아주 간단하지만 분명하게 드러나지는 않을 수도 있습니다. 새 프로세스를 만드는 것은 실제로 기존 프로세스 인스턴스를 대상으로 하지 않습니다. 현재 실행 중인 프로세스 중 어느 것이 새 프로세스를 시작해야 합니까? 이 문제에는 일관된 답이 없기 때문에 프로세스를 만드는 것이 실제로 Win32_Process 클래스의 새 인스턴스를 만드는 것처럼 보입니다. 따라서 클래스의 인스턴스 대신 클래스 정의 자체를 대상으로 정의되는 정적 메서드 개념이 필요합니다. Win32_Process를 위한 Create() 메서드는 그러한 정적 메서드의 예입니다. 반면에 이전의 모든 메서드 예제는 개별 인스턴스를 대상으로 동작하는 동적 메서드입니다. 우연하게도 Delete() 메서드는 대개 클래스 전체가 아닌 특정 인스턴스에 적용되므로 동적 메서드입니다.

Create() 메서드는 입력 매개 변수를 여러 개 사용하지만 이 예제에서는 시작할 실행 파일 이름인 "notepad.exe"만 제공했습니다. 이 메서드는 작업의 성공 또는 실패를 나타내는 값뿐만 아니라 만들어진 새 프로세스의 ID도 반환합니다. 이 스크립트에서는 메서드를 실행한 후 메서드의 실행 결과와 프로세스 ID 값을 표시하며 메모장 응용 프로그램이 바탕 화면에 나타납니다.

WMI에서 Windows NT 로그 이벤트 수집

지금까지 데이터를 일부 수집하고 몇 가지 메서드를 실행했으므로 이제는 주제를 이벤트로 이동합니다. WMI는 시스템에서 발생하는 다양한 변경 내용이나 상황을 위한 이벤트를 제공할 수 있습니다. 이 예제에서는 Windows NT 또는 Windows 2000 이벤트 로그에 기록되는 모든 새 이벤트를 등록하도록 스크립트를 만듭니다. 새 이벤트가 기록되면 WMI는 이 스크립트와 같은 이벤트 소비자가 받을 수 있는 WMI 이벤트를 생성합니다. 그러나, 이벤트를 받을 소비자가 하나 이상 등록되어 있어야 WMI 이벤트가 전송됩니다. 등록된 소비자가 없으면 WMI는 시스템에서 특정 상황이 발생하는지 감시하느라 리소스를 낭비하지 않습니다.

set events =
GetObject("winmgmts:{impersonationLevel=impersonate}")
.ExecNotificationQuery _
("select * from __instancecreationevent where targetinstance
isa 'Win32_NTLogEvent'")
if err <> 0 then
WScript.Echo Err.Description, Err.Number, Err.Source
end if
'아래의 호출은 무한정 기다립니다 -
필요하면 시간 제한을 지정할 수 있습니다.
WScript.Echo "NT 이벤트를 기다리는 중..."
do
set NTEvent = events.nextevent
if err <> 0 then
WScript.Echo Err.Number, Err.Description, Err.Source
Exit Do
else
WScript.Echo NTEvent.TargetInstance.Message
end if
loop
WScript.Echo "완료"

이 스크립트에서는 발생할 경우 전송할 이벤트의 종류를 정의하는 쿼리를 보내기 위해 ExecNotificationQuery() 메서드를 사용합니다. 이벤트가 로그에 기록되면 효과적으로 Win32_NTLogEvent 클래스의 인스턴스가 생성됩니다. WMI는 인스턴스의 생성, 수정 또는 삭제 시간을 감지할 수 있으며 이 정보는 검색하려는 이벤트의 소스가 됩니다. SQL 쿼리 문은 "만들어지는 인스턴스가 Win32_NTLogEvent 클래스에 속하는 경우 인스턴스를 만드는 모든 이벤트를 전송"하도록 WMI에 알립니다. 다른 클래스에 대한 인스턴스를 만드는 이벤트는 쿼리의 기준과 일치하지 않기 때문에 보고되지 않습니다.

이 스크립트에서는 이벤트가 도착할 때까지 단순히 루프를 반복하다가 수신된 인스턴스의 메시지 속성을 표시합니다.

CPU 사용률이 높은 이벤트 수집

이전 예제에서는 이벤트 로그 공급자가 이벤트를 직접 제공하고 새 이벤트가 로그되면 이벤트 로그 서비스에 의해 다시 호출되는 공급자가 이벤트를 처리합니다. 그러나, 관심 있는 이벤트를 보고하기 위해 모든 서비스에서 이와 같은 메커니즘을 제공하지는 않으며 이 메커니즘을 제공하는 것이 반드시 좋은 것은 아닙니다. WMI에는 일부 장치 정보에 대한 이벤트가 없는 대신 이벤트 지원이 없는 경우에 이벤트를 생성하는 기본 메커니즘이 있습니다. 사실상 속성은 장치 정보이므로 이벤트의 소스가 될 수 있습니다.

이 예제에서는 CPU 사용률을 어떻게 모니터하며, 프로세서 로드가 많을 때 어떻게 이벤트가 발생하여 등록된 소비자에게 전송되는지 보여줍니다. 운영 체제에 이러한 특정 이벤트를 측정하기 위한 내부 이벤트 메커니즘이 없어도 이 예제를 사용할 수 있습니다.

set events =
GetObject("winmgmts:{impersonationLevel=impersonate}")
.ExecNotificationQuery _
("select * from __instancemodificationevent within 5 where
targetinstance isa 'Win32_Processor' and
targetinstance.LoadPercentage > 50")
if err <> 0 then
WScript.Echo Err.Description, Err.Number, Err.Source
end if
'아래의 호출은 무한정 기다립니다 -
필요하면 시간 제한을 지정할 수 있습니다.
WScript.Echo "CPU 로드 이벤트를 기다리는 중..."
WScript.Echo ""
do
set NTEvent = events.nextevent
if err <> 0 then
WScript.Echo Err.Number, Err.Description, Err.Source
Exit Do
else
WScript.Echo NTEvent.TargetInstance.DeviceID WScript.Echo
NTEvent.TargetInstance.LoadPercentage
end if
loop

WScript.Echo "완료"

이 스크립트에서는 이전 Windows NT 이벤트 로그를 수정하여 CPU에 심한 부하가 있는지 확인합니다. 이전 예제와는 달리 이 예제에서는 인스턴스 생성 대신 인스턴스 수정과 관련된 이벤트를 감시합니다. 또한, 모니터 대상 클래스는 Win32_Processor 클래스이며, Win32_Processor 클래스의 구성원인 LoadPercentage 속성이 50보다 큰 값을 가져야 하는 제약 조건이 추가되었습니다. WMI가 LoadPercentage 속성의 값을 모니터하고 그 값이 변경되어 쿼리 기준에 맞으면 이벤트를 생성하기 때문에 값을 모니터할 빈도를 알려주는 매개 변수가 필요합니다. 쿼리에서 WITHIN 절이 이 목적에 사용됩니다. WITHIN 절에서는 WMI가 속성의 값을 검사하고 변경 여부와 쿼리 요구 사항 충족 여부를 확인하기 전에 경과해야 하는 최대 시간 간격을 정의합니다. 이 값은 원하는 이벤트를 얻기 전에 소비자가 기다리게 될 최대 시간으로 생각할 수도 있습니다.

이전의 예제에서와 마찬가지로 쿼리 기준이 충족되면 WMI가 스크립트로 이벤트를 전송하고 스크립트에서는 이벤트에 대한 몇 가지 정보를 인쇄합니다. 여기서는 CPU 이름과 실제 측정된 로드의 백분율이 표시됩니다. 우연하게도 이 스크립트는 단일 CPU 시스템과 다중 CPU 시스템 모두에서 똑같이 잘 작동합니다. 이 스크립트는 Win32_Processor 클래스의 인스턴스에 영향을 주는 인스턴스 수정 사항을 검색하기 때문에 지정한 로드 기준을 초과하는 모든 CPU를 보고합니다. 물론 특정 CPU 로드에만 관심이 있으면 로드 범위를 제한하기 위해 쿼리를 쉽게 변경할 수 있습니다.

WMI를 통해 볼 수 있는 모든 속성에 대해 그것이 운영 체제에서 제공한 장치 정보에 속하든 다른 공급업체가 추가한 장치 정보에 속하는 것이든 관계 없이 동일한 기능성을 적용할 수 있습니다. 이 경우 추가로 수행해야 하는 작업은 없습니다. 이 기능은 제품에 WMI를 사용하면 무료로 제공되는 표준 기능입니다. 또한, 바탕의 API가 동일한 정보를 보다 최적화된 방식으로 공급할 수 있는 내부 이벤트 시스템을 지원하는 경우, 공급자의 작성자는 이벤트 소비자가 차이점을 알 필요가 없도록 쉽고 자연스럽게 WMI 이벤트 모니터링을 무시할 수 있습니다. 따라서 소비자는 작업 방식을 변경하지 않고도 자동으로 최상의 이벤트 메커니즘의 장점을 활용할 수 있습니다. 또한 이벤트를 위해 등록된 이벤트 소비자가 없으면 WMI는 앞서 설명한 방식으로 속성을 모니터하지 않는다는 점을 다시 강조합니다. 스크립트가 끝나는 등, 등록이 제거되면 WMI는 요청된 이벤트를 더 이상 감시하지 않습니다.

결론

WMI는 Windows 플랫폼을 관리하기 가장 쉬운 운영 체제로 만들고 고객의 TCO를 절감하기 위한 Microsoft 전략의 핵심 부분입니다. 산업 표준에 기초하며 DMFT의 승인을 받은 WMI는 로컬에서나 원격으로 일관되고 스크립팅 가능한 방식으로 컴퓨터 시스템을 관리할 수 있게 하는 풍부하고 확장 가능한 개체 모델을 제공합니다. Windows 2000과 함께 제공된 기본 WMI 시스템에는 대부분의 핵심 운영 체제 정보와 서비스가 이미 준비되어 있습니다. Microsoft의 다른 제품이나 다른 공급업체 제품에 대한 장치 정보도 현재 사용 가능하거나 개발 중에 있으므로 WMI는 Windows 기반 시스템을 확장 가능하며 신뢰성이 높고 균일한 방식으로 관리하기 위한 최선의 방법이 되고 있습니다.

이 기사에서는 WMI에서 사용할 수 있는 몇 가지 유용한 기능을 소개했습니다. WMI는 Microsoft Visual Basic, Microsoft Visual C++®와 같은 스크립트 언어를 통해 쉽고 강력하게 액세스할 수 있는 클래스, 속성, 메서드, 이벤트 및 연결의 개체 지향 세트를 제공합니다. 몇 가지 예제 스크립트를 통해 WMI의 강력한 기능을 보여주었지만 이는 극히 일부에 지나지 않습니다. 함께 제공된 장치 정보 차트와 이 예제들을 통해, 시스템을 강력하게 관리할 수 있도록 하기 위해 WMI에서 제공하는 정보를 탐구할 수 있는 기회가 되길 바랍니다. 앞으로 발표될 기사에서는 WMI 공급자 작성, 고급 이벤트 처리, 클라이언트 응용 프로그램 같은 보다 심도 있는 개념을 소개하겠습니다.

WMI 구성 요소를 만들고 사용하는 방법이 수록된 전체 설명서는 MSDN Windows 2000 Platform SDK의 일부로 제공되는 WMI SDK에 있습니다. 또는 http://msdn.microsoft.com/developer/sdk/wmisdk/ 에서 무료로 다운로드할 수도 있습니다. 이 사이트에서 Windows NT 4.0 시스템과 Windows 95/98에 필요한 핵심 WMI 구성 요소도 다운로드할 수 있습니다.


 

최종 수정일 : 2000.4.26

AND

URL : http://msdn2.microsoft.com/ko-kr/library/ms178144.aspx

SQL Server 2005 온라인 설명서 
NUMA(Non-Uniform Memory Access) 이해 

업데이트: 2005년 12월 5일

Microsoft SQL Server 2005 는 NUMA(Non-Uniform Memory Access)를 인식하며 특수한 구성 없이 NUMA 하드웨어에서 원활하게 작동합니다. 클럭 속도와 프로세서 수가 증가할수록 이러한 추가 처리 능력을 사용하는 데 필요한 메모리 대기 시간을 줄이기가 더 어려워집니다. 이러한 문제를 피하기 위해 하드웨어 공급업체에서는 대용량의 L3 캐시를 제공하지만 이는 제한적인 해결책입니다. NUMA 아키텍처는 이 문제에 대한 포괄적인 해결책을 제공합니다. SQL Server 2005 는 응용 프로그램을 변경할 필요 없이 NUMA 기반 컴퓨터를 활용하도록 디자인되었습니다.

NUMA 개념NUMA 개념

작은 프로세서 집합에 사용되는 시스템 버스를 여러 개 구성하는 것이 일반적인 하드웨어 추세입니다. 각 프로세서 그룹에는 자체 메모리가 있으며 자체 I/O 채널이 있는 경우도 있습니다. 그러나 각 CPU는 일관된 방법으로 다른 그룹과 연결된 메모리에 액세스합니다. 각 그룹을 NUMA 노드라고 합니다. NUMA 노드 내의 CPU 수는 하드웨어 공급업체에 따라 다릅니다. 다른 NUMA 노드와 연결된 메모리보다 로컬 메모리를 액세스하는 것이 더 빠릅니다. 이러한 이유로 Non-Uniform Memory Access, 즉 NUMA 아키텍처라고 명명되었습니다.

NUMA 하드웨어에서는 일부 메모리 영역이 실제로 나머지 영역과 다른 버스에 있습니다. NUMA는 로컬 메모리와 외부 메모리를 사용하므로 다른 영역에 비해 일부 메모리 영역에 액세스하는 시간이 오래 걸립니다. "로컬 메모리"와 "외부 메모리"라는 용어는 대개 현재 실행 중인 스레드에 대한 참조에 사용됩니다. 로컬 메모리는 현재 스레드를 실행 중인 CPU와 같은 노드에 있는 메모리입니다. 스레드가 현재 실행 중인 노드에 속하지 않는 메모리는 외부 메모리입니다. 외부 메모리를 "원격 메모리"라고도 합니다. 로컬 메모리 액세스 비용에 대한 외부 메모리 액세스 비용의 비율을 NUMA 비율이라고 합니다. NUMA 비율이 1이면 이는 SMP(대칭 다중 처리)입니다. 비율이 높을수록 다른 노드의 메모리에 액세스하는 데 더 많은 비용이 소요됩니다. SQL Server 2000 SP3 이전 버전을 포함하여 NUMA를 인식하지 않는 Windows 응용 프로그램은 경우에 따라 NUMA 하드웨어에서 제대로 작동하지 않습니다.

NUMA의 주된 이점은 확장성입니다. NUMA 아키텍처는 SMP 아키텍처의 확장성 제한을 극복하기 위해 고안되었습니다. SMP를 사용하면 모든 메모리 액세스가 같은 공유 메모리 버스에 게시됩니다. CPU 수가 비교적 적을 때는 문제가 없지만 공유 메모리 버스 액세스를 위해 수십 개나 수백 개의 CPU가 경쟁할 경우에는 이 기능이 제대로 작동하지 않습니다. NUMA는 특정 메모리 버스의 CPU 개수를 제한하고 고속 연결로 여러 개의 노드를 연결하여 이러한 병목 현상을 완화합니다.

4개의 프로세서가 있는 NUMA 노드
하드웨어 NUMA 및 소프트 NUMA하드웨어 NUMA 및 소프트 NUMA

NUMA는 특별한 하드웨어(하드웨어 NUMA)를 통해 또는 SQL Server 메모리(소프트 NUMA)를 구성하여 메모리를 CPU에 대응시킬 수 있습니다. 시작 중에 SQL Server 는 기본 운영 체제 및 하드웨어 구성이나 소프트 NUMA 설정에 따라 구성됩니다. 하드웨어 NUMA 및 소프트 NUMA 둘 다에 대해, NUMA 구성에서 SQL Server 시작 시 각 노드에 대한 다중 모드 구성 메시지와 CPU 마스크가 SQL Server 로그에 기록됩니다.

하드웨어 NUMA

하드웨어 NUMA가 구성된 컴퓨터에는 작은 프로세서 집합에 사용되는 시스템 버스가 여러 개 있습니다. 각 프로세서 그룹에는 자체 메모리가 있으며 자체 I/O 채널이 있는 경우도 있지만 각 CPU는 일관된 방법으로 다른 그룹과 연결된 메모리에 액세스할 수 있습니다. 각 그룹을 NUMA 노드라고 합니다. NUMA 노드 내의 CPU 수는 하드웨어 공급업체에 따라 다릅니다. 컴퓨터의 하드웨어 NUMA 지원 여부는 해당 하드웨어 제조업체로 문의하십시오.

하드웨어 NUMA가 있는 경우 NUMA 대신 인터리브 메모리를 사용하도록 구성할 수 있습니다. 그러면 Windows와 SQL Server 에서 NUMA로 인식되지 않습니다. 다음 쿼리를 실행하여 SQL Server 에서 사용 가능한 메모리 노드의 개수를 확인할 수 있습니다.

SELECT DISTINCT memory_node_id
FROM sys.dm_os_memory_clerks

SQL Server 에서 하나의 메모리 노드(노드 0)만 반환되면 하드웨어 NUMA가 없거나 해당 하드웨어가 인터리브(비-NUMA)로 구성되어 있는 것입니다. 하드웨어 NUMA가 잘못 구성되었다고 판단되는 경우 하드웨어 공급업체에 NUMA를 설정하도록 요청하십시오. SQL Server 는 하드웨어 NUMA에 4개 이하의 CPU가 있고 CPU가 하나뿐인 노드가 하나 이상 있는 NUMA 구성을 무시합니다.

소프트 NUMA

SQL Server 2005 에서는 CPU를 소프트 NUMA라는 노드로 그룹화할 수 있습니다. 일반적으로 많은 CPU가 있으며 하드웨어 NUMA가 없는 경우 소프트 NUMA를 구성하지만 소프트 NUMA를 사용하여 하드웨어 NUMA 노드를 더 작은 그룹으로 세분화할 수도 있습니다. SQL Server 스케줄러와 SQL Server 네트워크 인터페이스(SNI)만 소프트 NUMA를 인식합니다. MEMORY 노드는 하드웨어 NUMA를 기반으로 생성되므로 소프트 NUMA의 영향을 받지 않습니다. 예를 들어 SMP 컴퓨터에 8개의 CPU가 있으며 각각 두 개의 CPU를 가진 소프트 NUMA 노드 4개를 만들면 MEMORY 노드 하나에서 4개의 NUMA 노드를 모두 처리합니다. 소프트 NUMA는 메모리에서 CPU로의 선호도를 제공하지 않습니다.

소프트 NUMA는 많은 CPU가 있고 하드웨어 NUMA가 없는 컴퓨터에서 I/O 및 지연 기록기 병목을 완화시키는 이점이 있습니다. 각 메모리 노드에 대해 I/O 스레드와 지연 기록기 스레드가 각각 하나씩 있으므로 많은 CPU가 있지만 하드웨어 NUMA가 없는 컴퓨터에는 I/O 스레드와 지연 기록기 스레드가 각각 하나뿐입니다. 데이터베이스 사용량에 따라 이러한 단일 스레드는 심각한 성능 병목이 될 수 있습니다. 4개의 소프트 NUMA 노드를 구성하면 I/O 스레드와 지연 기록기 스레드가 각각 4개가 되므로 성능이 향상됩니다.

여러 하드웨어 NUMA 노드의 CPU를 포함하는 소프트 NUMA를 만들 수는 없습니다. 예를 들어 하드웨어에 8개의 CPU(0..7)가 있고 하드웨어 NUMA 노드가 두 개(0-3 및 4-7)이면 CPU(0,1)과 CPU(2,3)을 결합하여 소프트 NUMA를 만들 수 있습니다. CPU(1, 5)를 사용하여 소프트 NUMA를 만들 수는 없지만 CPU 선호도를 사용하여 SQL Server 인스턴스의 선호도를 여러 NUMA 노드의 CPU로 설정할 수 있습니다. 따라서 위의 예에서 SQL Server 에 CPU 0-3이 사용되는 경우 I/O 스레드와 지연 기록기 스레드가 각각 하나씩 있습니다. 위의 예에서 SQL Server 에 CPU 1, 2, 5, 6이 사용되는 경우 두 개의 NUMA 노드에 액세스하게 되며 I/O 스레드와 지연 기록기 스레드가 각각 두 개씩 있습니다.

참고:
일부 하드웨어 구성은 L3/L4 캐시 같은 일반 리소스를 공유합니다. 이러한 공유 리소스를 중심으로 프로세서를 그룹화하여 소프트 NUMA 노드를 만들 수 있습니다.

자세한 내용은 방법: 소프트 NUMA를 사용하도록 SQL Server 구성을 참조하십시오.

변경 내역변경 내역

릴리스 내역

2005년 12월 5일 

변경된 내용
  • 이번 릴리스에서 모든 NUMA 항목을 다시 구성했으며 많은 정보를 새로 추가했습니다.
AND