Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
해당되는 게시물 6건
  GUID SID 값 확인 하기 
작성일시 : 2008.03.28 13:15 | 분류 : Windows Server/Active Directory | 태그 : get, guid, script, SID, VBS

GUID 와 SID 는 특정 Object에 대한 구분을 위해 Windows  내부에서 사용하는 ID 입니다.
GUID의 경우 객체에 할당이 되면 절대 변하지 않지만 SID의 경우 포레스트 에서 도메인간 이동이 있을때 변경이 있을 수 있습니다.
Windows 에서 SID를 사용하는 이유는 NT4와의 호환성 때문입니다.

[Name Format]

Constant

Value

Description

ADS_NAME_TYPE_1779

1

Name format as specified in RFC 1779. For example, "CN=Jeff Smith,CN=users,DC=Fabrikam,DC=com".

ADS_NAME_TYPE_CANONICAL

2

Canonical name format. For example, Fabrikam.com/Users/Jeff Smith".

ADS_NAME_TYPE_NT4

3

Account name format used in Windows NT 4.0. For example, "Fabrikam\JeffSmith".

ADS_NAME_TYPE_DISPLAY

4

Display name format. For example, "Jeff Smith".

ADS_NAME_TYPE_DOMAIN_SIMPLE

5

Simple domain name format. For example, "JeffSmith@Fabrikam.com".

ADS_NAME_TYPE_ENTERPRISE_SIMPLE

6

Simple enterprise name format. For example, "JeffSmith@Fabrikam.com".

ADS_NAME_TYPE_GUID

7

Global Unique Identifier format. For example, "{95ee9fff-3436-11d1-b2b0-d15ae3ac8436}".

ADS_NAME_TYPE_USER_PRINCIPAL_NAME

9

User principal name format. For example, "JeffSmith@Fabrikam.com".

ADS_NAME_TYPE_CANONICAL_EX

10

Extended canonical name format. For example, "Fabrikam.com/Users Jeff Smith".

ADS_NAME_TYPE_SERVICE_PRINCIPAL_NAME

11

Service principal name format. For example, "www/www.fabrikam.com@fabrikam.com".

[GUID 값 확인 하기]
위의 Name Format 을 알고 있으면 쉽게 사용자의 GUID를 알 수 있습니다.

Const ADS_NAME_INITTYPE_GC = 3
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_GUID = 7

strUserName = "mskim\administrator"

Set objTranslator = CreateObject("NameTranslate")

objTranslator.Init ADS_NAME_INITTYPE_GC, ""
objTranslator.Set ADS_NAME_TYPE_NT4, strUserName

strUserGUID = objTranslator.Get(ADS_NAME_TYPE_GUID)

Wscript.Echo strUserGUID

[SID 값 확인 하기]

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set objAccount = objWMIService.Get _
    ("Win32_UserAccount.Name='administrator',Domain='mskim'")
Wscript.Echo objAccount.SID

[참고]

http://www.microsoft.com/technet/scriptcenter/resources/qanda/dec04/hey1203.mspx
http://www.microsoft.com/technet/scriptcenter/resources/qanda/aug07/hey0822.mspx
http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/distrib/dsce_ctl_yicc.mspx?mfr=true

신고
  압축(ZIP) 폴더 메뉴 삭제하는 스크립트 
작성일시 : 2008.03.06 16:04 | 분류 : Windows Server/Kernel | 태그 : Delete, script, send to, ZIP

보내기 > 압축(ZIP) 폴더 메뉴 삭제하는 스크립트

[스크립트]
On Error Resume Next

Const SENDTO = &H9&

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objShell.Namespace(SENDTO)
Set objFolderItem = objFolder.Self

strFile = objFolderItem.Path & "\*.ZFSendToTarget"

Wscript.Echo strFile
objFSO.DeleteFile(strFile), DeleteReadOnly

신고
  특정 OU의 사용자 리스트를 파일로 추출하는 스크립트 
작성일시 : 2008.02.21 16:55 | 분류 : Windows Server/Active Directory | 태그 : Active Directory, ou, script, user list

특정 OU의 사용자 (User) 의 리스트를 저장하는 스크립트 입니다. DN 으로 저장됩니다.

StrOU = InputBox("Please Enter in the name of the OU that you wish to query, this needs to be in the format OU=")
Set objRootDSE = GetObject("LDAP://rootDSE")
strADsPath = "LDAP://" & strOU & "," & objRootDSE.Get("defaultNamingContext")
Set objDomain = GetObject(strADsPath)
objOutputFile = InputBox("c:\abc.txt")
Dim objConn, objRecordSet

Set objFileSystem = CreateObject("Scripting.fileSystemObject")
Set objOutputFile = objFileSystem.CreateTextFile(objOutputFile, TRUE)
Set objCommand =   CreateObject("ADODB.Command")

Set objConn = CreateObject("ADODB.Connection")
objConn.Open "Provider=ADsDSOObject;"

Set objCommand.ActiveConnection = objConn

objCommand.CommandText = "SELECT distinguishedName FROM " + "'" + strADsPath + "'" + " WHERE objectCategory = 'CN=Person,CN=Schema,CN=Configuration,DC=xxx,DC=xxx,DC=xxx'"
-- 사용자만 추출하기 위한 부분
objCommand.Properties("searchscope") = 2
objCommand.Properties("Page Size") = 1000
Set objRecordSet = objCommand.Execute

While Not objRecordSet.EOF
objOutputFile.Write(objRecordSet.Fields("distinguishedName") & VBCRLF)
objRecordSet.MoveNext
WEnd

objOutputFile.Close

Set objFileSystem = Nothing
objConn.Close
WScript.Echo("Script Has Completed?")

이번에는 바로 소스코드에 파일 등을 박아 넣어서 돌리도록 변경하였습니다.

Set objRootDSE = GetObject("LDAP://rootDSE")
strADsPath = "LDAP://ou=개인, "& objRootDSE.Get("defaultNamingContext")
Set objDomain = GetObject(strADsPath)
Dim objConn, objRecordSet

Set objFileSystem = CreateObject("Scripting.fileSystemObject")
Set objOutputFile = objFileSystem.CreateTextFile("c:\userlist.txt", TRUE)
Set objCommand =   CreateObject("ADODB.Command")

Set objConn = CreateObject("ADODB.Connection")
objConn.Open "Provider=ADsDSOObject;"

Set objCommand.ActiveConnection = objConn

objCommand.CommandText = "SELECT distinguishedName FROM " + "'" + strADsPath + "'" + " WHERE

objectCategory = 'CN=Person,CN=Schema,CN=Configuration,DC=xxx,DC=xxxDC=xx"
objCommand.Properties("searchscope") = 2
objCommand.Properties("Page Size") = 1000
Set objRecordSet = objCommand.Execute

While Not objRecordSet.EOF
objOutputFile.Write(objRecordSet.Fields("distinguishedName") & VBCRLF)
objRecordSet.MoveNext
WEnd

objOutputFile.Close

Set objFileSystem = Nothing
objConn.Close
WScript.Echo("Script Has Completed?")

신고
  메일 포워딩 스크립트로 한방에 끝내기 1 (Overview) 
작성일시 : 2008.02.20 18:04 | 분류 : Exchange Server | 태그 : Exchange 2003, Forwarding, mail, script, 전달

목차
1. Overview
2. Contacts 만들기
3. 개정 별 Forwarding 걸기

일반적인 메일 포워딩 요청은 Ads.msc 에서 외부 메일에 대한 contact를 만든 후 계정으로 들어온 메일을 이 contact로 포워딩 하게 함으로써 간단하게 설정이 가능합니다. 물론 꽁수를 쓰는 방법도 있다고 합니다. 그냥 ProxyAdderss 하나 더 만들고 이 주소를 TargetAddress 로 만드는 방법인데... 아직 Test는 않해봤습니다. (http://marcusoh.blogspot.com/2006/05/ds-how-to-setup-mail-forwarding.html)

방법은 다음과 같습니다.

1. gather these fields. take down this information. step 2 will blow it away

  • mail
  • mailNickname
  • proxyAddresses primary)

2. disconnect [his/her] mailbox.

3. put these fields back in for the user object.

  • mail
  • mailNickname
  • proxyAddresses (primary from step 1)
  • proxyAddresses (secondary - the email address to forward to)
  • targetAddress (the email address to forward to)

하지만 Test도 않해밨음을 알려드립니다.
그래도 그냥 ldifde 가지고 쉽게 할 수 있지 않을까 싶습니다.
다만 이벤트 로그에 ID 9514가 찍히지 않을까 싶습니다. (예상입니다.)
(관련 Article : http://support.microsoft.com/kb/318774)

자 우리는 그냥 원론적으로 해결 하도록 하겠습니다.
정석대로 contact 만들고 이 contact에 메일을 포워딩 하는 형식으로요...^^
우리의 스크립트는 다음 Article,의 내용을 따라 갑니다.
(http://support.microsoft.com/kb/281926)
그림책 같은 내용도 있습니다.
(http://www.msexchange.org/tutorials/MF015.html)

혹시나 하는 마음에 해당 Article의 내용을 한번 적어 드립니다.

연락처를 만드는 방법
1. Active Directory 사용자 및 컴퓨터 스냅인을 시작합니다.
2. 서버를 확장한 다음 Users를 마우스 오른쪽 단추로 누릅니다.
3. 새로 만들기를 누른 다음 연락처를 누릅니다.
4. 이름을 입력하고 다음을 누릅니다.
5. 수정을 누르고, SMTP를 누른 다음 확인을 눌러 사용자 지정 SMTP 메일 주소를 만듭니다.
6. SMTP 전자 메일 주소를 입력하고, 확인을 누르고, 다음을 누른 후 마침을 누릅니다.

메일 사용 가능 연락처로 만드는 방법
1. Active Directory 사용자 및 컴퓨터 스냅인을 시작합니다.
2. 해당 연락처를 마우스 오른쪽 단추로 누른 다음 Exchange 작업을 누릅니다.
3. 다음을 누르고 그룹의 전자 메일 주소 설정을 선택한 후 다음을 누릅니다.
4. 연락처에 별칭이 없으면 연락처의 별칭을 입력합니다. 
5. 적절한 전자 메일 주소 형식을 누른 다음 전자 메일 주소를 입력합니다.

참고 메시지 형식 설정을 구성하려면 고급 탭을 누릅니다.
6. 확인, 다음을 차례로 누른 후 마침을 누릅니다.

메일 전달을 구성하는 방법
참고 메일 사용 가능 개체는 전달 주소가 될 수 있습니다. 메일 사용 가능 개체를 예로 들면 메일 그룹, 보안 그룹, 공용 폴더 및 기타 관련 항목이 있습니다.1. Active Directory 사용자 및 컴퓨터 스냅인을 시작합니다.
2. 해당 메일 사용 가능 사용자를 마우스 오른쪽 단추로 누른 다음 속성을 누릅니다.
3. Exchange 일반 정보 탭을 누릅니다.
4. 배달 옵션을 누릅니다.
5. 전달 주소 섹션에서 전달 대상을 누른 다음 수정을 누릅니다.
6. 메일 사용 가능 사용자나 메일 사용 가능 연락처를 누르고 확인을 누릅니다.

참고 전자 메일을 원본 사서함과 전달 주소로 배달하려면 메시지를 전달 주소와 사서함 모두에 배달 확인란을 선택합니다. 
7. 확인을 차례로 두 번 눌러 배달 옵션과 속성을 닫습니다.

자 우리는 위의 내용은 100번 아니 1000번을 해야 할 지도 모릅니다.
그래서 우리 이거 그냥 스크립트로 한방에 한번 끝내 봅시다.
그럼 contact 만드는 내용은 내일 쓰도록 하겠습니다.

신고
  Exchange proxyAddresses 추가 
작성일시 : 2008.02.20 14:29 | 분류 : Exchange Server | 태그 : error, Exchange proxyAddresses 추가, script

1. CVS 파일을 만든다.
[형식]
primarysmtp@domain1.com (원래 메일 주소), proxyaddress@domain2.com (추가 메일 주소)

2. 다음 스크립트를 실행한다.

Option Explicit

Const CSV_FILE = "file.txt"
Const FILE_DELIMITER = ", "
Const ADS_SCOPE_SUBTREE = 2

Dim objFileSystem, objFile, objStream, objUsers, objConnection, objCommand, objRootDSE, objRecordSet, objUser
Dim strPrimarySMTP, strNewSMTP, strAddresses
Dim arrLine, arrAddresses

Set objFileSystem = CreateObject("Scripting.FileSystemObject")
Set objFile = objFileSystem.GetFile(CSV_FILE)
Set objStream = objFile.OpenAsTextStream(1, 0)

Set objUsers = CreateObject("Scripting.Dictionary")

Do While Not objStream.AtEndOfStream
      arrLine = Split(objStream.ReadLine, FILE_DELIMITER)

      If UBound(arrLine) = 1 Then
            strPrimarySMTP = LCase(arrLine(0))
            strNewSMTP = LCase(arrLine(1))

            If Not objUsers.Exists(strPrimarySMTP) Then
                  objUsers.Add strPrimarySMTP, strNewSMTP
            End If
      End If
Loop

Set objStream = Nothing
Set objFile = Nothing

Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"

Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection

Set objRootDSE = GetObject("LDAP://RootDSE")
objCommand.CommandText = "SELECT aDSPath, mail " &_
      "FROM 'LDAP://" & objRootDSE.Get("defaultNamingContext") & "' WHERE objectClass='user'"
Set objRootDSE = Nothing

objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 600
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.Properties("Cache Results") = False

Set objRecordSet = objCommand.Execute

Set objFile = objFileSystem.OpenTextFile("logfile.txt", 2, True, 0)

While Not objRecordSet.EOF
      If Not IsNull(objRecordSet.Fields("mail")) Then
            strPrimarySMTP = LCase(objRecordSet.Fields("mail"))

            If objUsers.Exists(strPrimarySMTP) Then
                  Set objUser = GetObject(objRecordSet.Fields("aDSPath"))

                  arrAddresses = objUser.Get("proxyAddresses")

                  ' Check the Address isn't already there

                  strAddresses = Join(arrAddresses, ",")
                  If InStr(1, strAddresses, ",smtp:" & objUsers(strPrimarySMTP) & ",", VbTextCompare) = 0 Then
                        ReDim Preserve arrAddresses(UBound(arrAddresses) + 1)
                        arrAddresses(UBound(arrAddresses)) = "smtp:" & objUsers(strPrimarySMTP)

                        objFile.WriteLine strPrimarySMTP & ": Matched to " & objUser.Get("name") &_
                              ": " & objUsers(strPrimarySMTP) & " Address Added"

                        ' objUser.Put "proxyAddresses", arrAddresses
                        ' objUser.SetInfo
                  Else
                        objFile.WriteLine strPrimarySMTP & ": Matched to " & objUser.Get("name") &_
                              ": " & objUsers(strPrimarySMTP) & " Address Exists"
                  End If
                  Set objUser = Nothing
            End If
      End If

      objRecordSet.MoveNext
Wend
objConnection.Close

Set objFile = Nothing
Set objFileSystem = Nothing

Set objRecordSet = Nothing
Set objCommand = Nothing
Set objConnection = Nothing

Set objUsers = Nothing

출처 :
http://www.experts-exchange.com/Software/Server_Software/Email_Servers/Exchange/Q_22090180.html

참고 :
원치 않는 프록시 주소 삭제 : http://support.microsoft.com/kb/318774

신고
  내 컴퓨터를 만든 회사는 누구? 
작성일시 : 2008.01.30 11:04 | 분류 : Windows Server/ETC | 태그 : h/w 제조사, script

간단하게 자신 머신의 H/W 제조사를 알아보는 스크립트 입니다.

On Error Resume Next

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
           & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * from Win32_BaseBoard")

For Each objItem in colItems
           For Each strOption in objItem.ConfigOptions
                      Wscript.Echo "Configuration Option: " & strOption
           Next
           Wscript.Echo "Manufacturer: " & objItem.Manufacturer

Next

신고
 Prev   1   Next 

티스토리 툴바