2010. 7. 29. 10:33

안녕하세요 @우주인입니다.

파워쉘 관련 다양한 툴들이 있지만 그래도 기존에 쓰고 있는 툴에 붙여쓰면 좋겠다싶어 visual studio에 연결해서 쓰는 방법을 찾아봤습니다.

1. PowerGui 를 설치합니다. ( http://www.powergui.org/index.jspa )
  파워쉘을 위한 독립적인 툴입니다. 이 툴을 최신버전으로 우선 설치합니다.

2.PowerGui를 Visual Studio 2010 에 붙여주는 툴을 다운로드 합니다. ( http://powerguivsx.codeplex.com/ )

위에 두가지를 설치하면 Visual Studio 2010 에서 파워쉘파일에 대해 자동완성이나 하이라이트 기능을 이용할 수 있습니다.

파워쉘 파일 생성은



위 과정으로 파일을 생성하면 아래와 같이 사용이 가능합니다.


원본: http://woojuin79.tistory.com/category/Window/VS

'Powershell > @우주인' 카테고리의 다른 글

[MSSQL]WMI for SQL Management(1)  (0) 2010.09.15
파워쉘을 이용한 DOM 사용  (0) 2010.09.09
파워쉘 부팅매크로(Invoke-Item)  (0) 2010.09.09
파워쉘 버전  (0) 2010.09.09
PowerShell Profile Configuration  (2) 2010.09.09
Posted by 알 수 없는 사용자
:
2010. 7. 28. 13:54

안녕하세요~

서버관리자 역할, 기능 설치/제거를 GUI환경보다 좀더 빠르고 효율적으로 관리 할 수 있는 ServerManagerCmd.exe 기능에 대하여 알아 보도록 하겠습니다.

ServerManagerCmd.exe의 경우 Windows의 CMD 모드 또는 PowerShell에서 모두 사용이 가능 합니다.



장점 : ServerManagerCmd.exe를 사용하여 역할, 기능을 추가시 GUI 환경에서 보다 빠른 속도의 설치가 가능하며 반복적인 설치 및 제거가 필요하거나 많은 양의 설치 및 제거 필요한 경우에는 XML 파일로 제작하여 설치시 활용하면 작업시간의 단축을 가져 올 수 있습니다.

단점 : 현재 windows2008R2 환경까지 지원을 하고 있으나 이후 Windows 버전에서는 지원이 되지 않을 수 있습니다.

<아래 내용은 XML예제 입니다.>

 <ServerManagerConfiguration
 Action="Install"
 xmlns="http://schemas.microsoft.com/sdm/Windows/ServerManager/Configuration/2007/1">
 <Feature Id="NET-Framework"/>
 <Feature Id="RSAT-ADDS"/>
 <Role Id="Web-Server"/>
 <RoleService Id="Web-Basic-Auth"/>
 <RoleService Id="Web-Windows-Auth"/>
 <RoleService Id="Web-Metabase"/>
 <RoleService Id="Web-Net-Ext"/>
 <RoleService Id="Web-Lgcy-Mgmt-Console"/>
 <Feature Id="WAS-Process-Model"/>
 <Feature Id="RSAT-Clustering"/>
 <Feature Id="RSAT-Web-Server"/>
 <RoleService Id="Web-ISAPI-Ext"/>
 <RoleService Id="Web-Digest-Auth"/>
 <RoleService Id="Web-Dyn-Compression"/>
 <Feature Id="NET-HTTP-Activation"/>
 <Feature Id="RPC-over-HTTP-proxy"/>
</ServerManagerConfiguration>




<ServerManagerCmd.exe에 대한 구문과 명령줄 매개 변수 및 옵션>


1. ServerManagerCmd.exe -query

매개변수 -query : 서버에 설치되어 있거나 설치할 수 있는 모든 역할, 역할 서비스 및 기능의 목록을 표시합니다. 이 매개 변수의 약식인 -q를 사용할 수도 있습니다.

사용자 삽입 이미지

2. ServerManagerCmd.exe -inputPath

매개변수 -inputPath : 응답 파일에 지정된 역할, 역할 서비스 및 기능을 설치 또는 제거합니다. 이 매개 변수의 약식인 -p를 사용할 수도 있습니다.

3. ServerManagerCmd.exe -install

매개변수 -install : ID로 지정된 역할, 역할 서비스 또는 기능을 설치합니다. ID에 지정하도록 선택할 수 있는 역할, 역할 서비스 또는 기능 식별자의 전체 목록은 ServerManagerCmd.exe -query 참조하십시오. 식별자는 대/소문자를 구별하지 않습니다.

<설치 시작화면>
사용자 삽입 이미지

<설치 완료화면>
사용자 삽입 이미지


추가적으로 -install 매개 변수와 함께 사용되는 선택적 매개 변수입니다.

-allSubFeatures : -install 명령의 ID 매개 변수에 이름이 지정된 부모 역할, 역할 서비스 또는 기능과 함께 모든 자식 서비스 및 기능의 설치를 지정합니다.
-resultPath : result.xml로 표시된 XML 파일로 설치 결과를 저장합니다. 이 매개 변수의 약식인 -r을 사용할 수도 있습니다. -resultPath 매개 변수와 -whatIf 매개 변수는 ServerManagerCmd.exe의 동일한 인스턴스에서 사용할 수 없습니다.

-restart : 설치된 역할 또는 기능을 사용하기 위해 컴퓨터를 다시 시작해야 하는 경우 -install 명령에 -restart를 추가합니다. 이렇게 하면 설치가 완료될 때 컴퓨터가 자동으로 다시 시작됩니다.

-whatIf : -whatIf를 사용하여 -install 명령에 대해 지정된 작업을 표시할 수 있습니다. 이 매개 변수의 약식인 -w를 사용할 수도 있습니다. -resultPath 매개 변수와 -whatIf 매개 변수는 ServerManagerCmd.exe의 동일한 인스턴스에서 사용할 수 없습니다.

-logPath : 로그 파일의 이름과 위치를 기본값(%windir%\temp\servermanager.log)과 다르게 지정하려면 -logPath를 사용합니다.

4. ServerManagerCmd.exe -remove

매개변수 -remove :  ID로 지정된 역할, 역할 서비스 또는 기능을 제거합니다. ID에 지정하도록 선택할 수 있는 역할, 역할 서비스 및 기능 식별자의 전체 목록은 ServerManagerCmd.exe -query 참조하십시오. 식별자는 대/소문자를 구별하지 않습니다.



<제거 시작화면>
사용자 삽입 이미지

<제거 완료 화면>
사용자 삽입 이미지
역할 및 기능이 제거가 완료 되면 재부팅이 필요합니다. (-Remove 매개변수를 사용하는 경우 -Restart 매개변수를 추가 옵션으로 지정하여 제거 후 자동으로 재부팅이 되도록 사용하면 유용합니다.)

-remove 매개 변수와 함께 사용되는 선택적 매개 변수입니다.

-resultPath : result.xml로 표시된 XML 파일로 설치 결과를 저장합니다. 이 매개 변수의 약식인 -r을 사용할 수도 있습니다. -resultPath 매개 변수와 -whatIf 매개 변수는 ServerManagerCmd.exe의 동일한 인스턴스에서 사용할 수 없습니다.

-restart : 설치된 역할 또는 기능을 사용하기 위해 컴퓨터를 다시 시작해야 하는 경우 -install 명령에 -restart를 추가합니다. 이렇게 하면 설치가 완료될 때 컴퓨터가 자동으로 다시 시작됩니다.

-whatIf : -whatIf를 사용하여 -install 명령에 대해 지정된 작업을 표시할 수 있습니다. 이 매개 변수의 약식인 -w를 사용할 수도 있습니다. -resultPath 매개 변수와 -whatIf 매개 변수는 ServerManagerCmd.exe의 동일한 인스턴스에서 사용할 수 없습니다.

-logPath : 로그 파일의 이름과 위치를 기본값(%windir%\temp\servermanager.log)과 다르게 지정하려면 -logPath를 사용합니다.


5. ServerManagerCmd.exe -help

매개변수 -help : 명령 창에 ServerManagerCmd.exe에 대한 도움말을 표시합니다. 약식인 -?를 사용할 수도 있습니다.

<-Help 실행 화면>



6. ServerManagerCmd.exe -version

매개변수 -version : 서버 관리자 버전 번호를 표시합니다. 약식인 -v를 사용할 수도 있습니다.


<-Version 실행화면>

사용자 삽입 이미지


이상 ServerManagerCmd.exe를 이용하여 서버관리자 역할, 기능 추가/제거하는 기능에 대하여 간략히 알아 보았습니다.

'Windows' 카테고리의 다른 글

RDP 관리 프로그램 4종 세트  (0) 2010.07.20
Posted by 알 수 없는 사용자
:
2010. 7. 28. 00:41
안녕하세요~

이번에는 윈도우 서버관리에 있어 중요한 오류 메시지를 확인 할 수 있는 이벤트 로그를 파워쉘을 이용하여 확인해 보도록 하겠습니다.

get-Eventlog Cmdlets을 이용하여 아래와 같이 보안에 관련된 이벤트 로그를 확인하였습니다.
사용자 삽입 이미지

Powershell의 기능을 좀더 활용 하여 아래와 같이 검색을 원하는 로그 파일을 종류 Application(응용프로그램), securuty(보안)등 원하는 로그에 대하여  -LogName (로그이름) -Message (*성공적*) 포함한 내용에 대하여  -After(검색을원하는기간)을 사용하여 로그를 조회 확인하였습니다.

Get-EventLog -LogName security -Message *성공적* -After 2010-07-26
사용자 삽입 이미지
로그를 확인하는 방법을 위와 같이 Powershell의 기능을 활용하여 다양한 방법으로 특정 로그에 대한 조회가 가능합니다.
이상으로 get-Eventlog Cmdlets을 이용하여 간략하게 이벤트 로그 확인법에 대하여 알아 보았습니다.

'Powershell > cyber1008' 카테고리의 다른 글

powershell에서 데이터 저장 (Out-File) 사용하기  (0) 2010.07.20
Posted by 알 수 없는 사용자
:
2010. 7. 27. 18:07

...이제 SCCM을 무작정 설치 하게 되면 어떤 상황이 되는지 알아 보겠습니다.

많은 사람들은 메뉴얼 읽는 것을 아주 싫어 합니다. 시간 낭비라고 생각 하는것 같은데 잘 모르는 기계나 소프트웨어의 경우 메뉴얼을 읽어 보는 것이 오히려 시간을 버는 것임을 언제가는 알게 되겠죠.

SCCM 설치 실패 시나리오는 대충 이렇게 만들어 질것 같습니다.

보통의 경우 사내의 하드웨어 / 소프트웨어 인벤토리 관리와 소프트웨어 배포를 위하여 이와 같은 기능을 제공 하는 몇가지 제품들을 체크 하다가 SCCM 도입을 하려고 합니다. 만만한 직원 하나 불러서 "SCCM 설치 하고 운영 테스트 해봐!" 라는 지시를 내릴겁니다. 지시를 받은 "만만한 직원1"은 별도의 사전 교육이나 SCCM에 대한 기술적인 확인 절차 없이 곧바로 Windows Server 2008 R2가 설치된 서버에 SCCM을 설치 합니다. 하지만 이전 포스팅에 말했듯이 사전에 설치 되어야할 요소들이 많이 있음을 이때까지는 알지 못합니다.

사전에 확인해야할 기술 요소들과 인프라는 다음과 같습니다.
- Active Directory
- Microsoft SQL Server 2005 SP2 이상
- Internet Explorer 5 이상
- .NET Framework 2.0
- Internet Information Service (IIS) 6.0 이상
- Background Intelligent Transfer Service (BITS)
- Web-based Distributed Authoring (WebDAV)
- MMC 3.0


1. 무작정 SCCM 설치를 시작 합니다. 클릭 클릭 잘 넘어가는듯 싶다가 바로 첫번째 난관에 봉착 합니다.


Domain Membership 이라는 Prerequisite(전제조건) 오류 입니다. 설명에는 "Configuration Manager site server components can only be installed on computer that are members of a Windows domain." 라고 되어 있습니다. 이 오류는 필요한 인프라중에 AD 관련 문제 입니다. 당연하겠지만 SCCM AD Join 되어 있어야 합니다. SCCM을 운영하려면 AD 구축이 필수 입니다. 사내에 AD가 도입되어 있지 않거나 AD가 도입 되었더라도 모든 클라이언트들이 AD Join 하지 않는다면 SCCM을 운영할 수 없습니다. 따라서 사내에 AD가 구축되지 않았다면 AD를 구축하던가 다른 제품을 찾아야 합니다.

2. 사내에 AD가 구축되어 있다면 AD에 조인 하고 다시 설치를 시작 하겠죠. Domain Membership 조건은 만족했으니 다음으로 잘 넘어 갑니다만 두번째 문제에 부딫힙니다.

You must specify the SQL Server name. 이라는 오류창 입니다. 사내에 여유있는 Microsoft SQL Server가 있다면 SQL Server name을 명시 하고 통과 하면 됩니다만 그렇지 않다면 해당 서버에 Microsoft SQL을 설치 하거나 별도의 SQL Server를 구축해야 합니다.

3. SQL Server가 필요 하다고 하니 해당 서버에 Microsoft SQL Server를 설치 하고 다시 SCCM을 설치 해봅니다. 하지만 SCCM이 설치 되기 위한 전제조건 체크시 경고 항목 2가지와 에러 항목 6가지가 다시 한번 목덜미를 잡습니다. 아직 SCCM의 설치도 시작하지 못했는데 말이죠.

3-1. Schema extensions 경고 : Configuration Manager Active Directory schema extensions are not required, for site server installation, but are recommended to fully support the use of all Configuration Manager features.

3-2. WSUS SDK on site server 경고 : Configuration Manager software update points require Windows Server Update Services (WSUS) version 3.0 SP1 or later.  If using a remote software update point, the WSUS administration console must be installed on the site server.  For more information on WSUS installation see http://go.microsoft.com/fwlink/?LinkID=79477.

3-3. Microsoft Remote Differential Compression(RDC) library Registered 오류 : The Microsoft Remote Differential Compression (RDC) library must be registered for Configuration Manager site server installation.

3-4. IIS Service running 오류 : Internet Information Services (IIS) is required for some site system roles. If you have selected to install a site system role requiring IIS, and the IIS service is not running, this rule will fail.

3-5. BITS installed / BITS enabled 오류 : Background Intelligent Transfer Service (BITS) is required for the management point and BITS-enabled distribution point site system roles. Background Intelligent Transfer Service (BITS) is not installed and/or IIS 6 WMI compatibility component for IIS7 is not installed on this computer or remote IIS host, or setup was unable to verify remote IIS settings because IIS common components were not installed on the site server computer. ConfigMgr requires BITS be installed and enabled in Internet Information Services (IIS) before setup can continue. Setup cannot continue.

3-6. WebDAV installed / WebDAV enabled 오류 : Web-based Distributed Authoring and Versioning (WebDAV) is required for the management point and distribution point site system roles. If you have selected to install a site role requiring WebDAV, and it is not installed, this rule will fail. Web-based Distributed Authoring and Versioning (WebDAV) is not installed and/or IIS 6 WMI compatibility component for IIS7 is not installed on the computer specified for management point installation or setup was unable to verify remote IIS settings because IIS common components were not installed on the site server computer. ConfigMgr requires WebDAV to be installed and enabled in Internet Information Services (IIS) for management point site systems. Setup cannot continue.

...오류 메세지들이 끔찍하네요. 이는 사전에 충분히 SCCM 설치전에 필요한 요소들을 파악 하지 않은채 무작정 설치를 했기 때문 입니다. 이때 부터 "만만한 직원1"은 구글링을 하면서 이것 저것 찾아 보려 할겁니다. SCCM 관련된 한글 문서가 많지 않기 때문에 짧은 영어 실력으로 마이크로소프트 Technet 영문 문서를 보면서 울화통이 터지거나 외국의 관련 포럼 Q&A를 보면서 짜증이 나겠죠. 그러다가 이 포스팅을 보게 될겁니다. (구글링 하다가 오신 "만만한 직원1" 여러분 잘 오셨습니다.)

이 포스팅은 이렇게 맨땅에 헤딩을 해야 하는 엔지니어들을 위해서 사전에 점검 하고 설치해야할 필수 요소들에 대하여 하나 하나 설치 하면서 진행 될겁니다. 다음 포스팅 부터는 실제로 SCCM 설치를 하기 위하여 필요한 요소들에 대해서 알아 보기로 하겠습니다.

대한민국에 살고 있는 맨땅에 헤딩하는 엔지니어 여러분 힘냅시다.


Posted by 알 수 없는 사용자
:
2010. 7. 26. 19:51

안녕하세요. 엉스데브 입니다.

PowerShell 로 필요한 스크립트를 만들던 중, MSSQL 서버에 저장 되어 있는 데이터를 참조해야 하는 경우가 생겼습니다.

PowerShell .NET Framework  기반의 언어이기 때문에 .NET Framework 가 제공하는 여러 클래스를 사용 할 수 있으며, 이 클래스 들 중에는 MSSQL 접속 및 데이터 조회 / 수정을 위한 클래스 들도 있습니다. 이 클래스 들을 이용해서 직접 사용 할 MSSQL 관련 함수들을 만들어 보았습니다. 

Function Query-Mssql
{
  Param(
    [parameter(Mandatory=$true)][String]$Query,
    [parameter(Mandatory=$true)][String]$Server,
    [parameter(Mandatory=$true)][String]$Id,
    [parameter(Mandatory=$true)][String]$Password,
    [parameter(Mandatory=$true)][String]$DBName,
    [Int32]$Timeout = "30"
  )

  $Conn = New-Object System.Data.SqlClient.SqlConnection
  $Conn.ConnectionString = "Server=" + $Server + ";Database=" + $DBName + ";User ID=" + $Id + ";Password=" + $Password
  $Conn.Open()

  $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
  $SqlCmd.CommandText = $Query
  $SqlCmd.Connection = $Conn
  $SqlCmd.CommandTimeout = $Timeout

  Return $SqlCmd.ExecuteNonQuery()
}



Function Get-MssqlData
{
  Param(
    [parameter(Mandatory=$true)][String]$Query,
    [parameter(Mandatory=$true)][String]$Server,
    [parameter(Mandatory=$true)][String]$Id,
    [parameter(Mandatory=$true)][String]$Password,
    [parameter(Mandatory=$true)][String]$DBName,
    [Int32]$Timeout = "30"
  )

  $Conn = New-Object System.Data.SqlClient.SqlConnection
  $Conn.ConnectionString = "Server=" + $Server + ";Database=" + $DBName + ";User ID=" + $Id + ";Password=" + $Password
  $Conn.Open()

  $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
  $SqlCmd.CommandText = $Query
  $SqlCmd.Connection = $Conn
  $SqlCmd.CommandTimeout = $Timeout
 
  $SqlDataAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
  $SqlDataAdapter.SelectCommand = $SqlCmd

  $DataSet = New-Object System.Data.DataSet
  $SqlDataAdapter.Fill( $DataSet )

  Return $DataSet.Tables
}


Query-Mssql 함수는 Insert, Update, Delete 등 결과 레코드가 반환되는 것이 아닌 단순 실행 쿼리를 날릴 때 사용하며, Get-MssqlData 함수는 Select 등 리턴되는 데이터가 있는 쿼리를 날릴 때 사용합니다.

#아래 더보기를 클릭하시면 다소 복잡한 스크립트 설명을 볼 수 있습니다.#

 

이제 PowerShell 에서 MSSQL 데이터도 엑세스 및 수정 할 수 있으니, 좀 더 정교한 스크립트를 만들어 봐야 겠습니다. ^^


<참고 URL>
http://nsjokt.springnote.com/pages/5657751
Posted by 알 수 없는 사용자
:
2010. 7. 26. 19:13
안녕하세요. 엉스데브 입니다.

PowerShell 을 가지고 놀다 보니 Linux + Bash 를 사용할 때 유용하게 썼던 유틸인 wget 을 PowerShell 에서도 쓰고 싶어졌습니다.

구글링을 통해, 어느 외국 유저분께서 만든 PowerShell 에서 wget 처럼 사용 할 수 있는 함수를 찾을 수 있었습니다.
(*링크 : http://huddledmasses.org/wget-2-for-powershell/, by "Joel 'Jaykul' Bennett" )

뭐든 내용을 파악하고 사용 해야죠? 스크립트를 살펴 보겠습니다.
먼저 함수의 이름은 Get-WebFile 로 PowerShell 의 명령어 명명법에 잘 맞는 이름이네요.(동사 + 명사)

System.Net.HttpWebRequest Class 를 사용해서 구현 한 것이네요.
MSDN 에서 해당 Class 를 찾아보니 HTTP, 혹은 HTTPS 요청을 처리할 수 있는 Class 군요.
이런 .NET Class 는 MSDN 에서 검색 해 보면 그 Class 가 어떤 기능과 속성들을 가지고 있는지 알 수 있습니다.
(*링크 : http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx )

함수를 사용 하려면, Profile 에 함수를 추가 해 두면 됩니다.

사용법은 아래와 같습니다.

Get-WebFile { 다운로드 받을 웹 파일 } { 저장 될 파일 명 }
예) Get-WebFile "http://svrstudy.tistory.com" "svrstudy.tistory.com.html"



어디 잘 받아졌는지 내용을 확인 해 볼까요?
cat(Get-Content 명령어의 Alias) 으로 파일을 열어 봅니다. -totalcount 파라미터로 처음 5줄만 보겠습니다.


웹 페이지의 내용이 잘 저장 되어 있네요.

저장하지 않고, -Passthru 파라미터를 줘서 화면에 바로 출력 시킬 수도 있습니다.


-Quiet 파라미터로, 다운로드 진행 상태를 표시하지 않도록 할 수도 있군요.

이 함수를 이용하면 추후 REST 등의 HTTPRequest 로 요청 하는 서비스를 PowerShell 에서도 활용 할 수 있는등,
앞으로 대단히 유용하게 사용 될 것 같습니다.

그러나 아직은 Linux 의 wget 유틸에 비해 여러가지 기능이 부족 하네요.
나중에 시간 되면 제가 wget 유틸 사용시 많이 썼던 기능(HTTP 로그인 기능 지원, FTP 프로토콜 지원 등)은 직접 추가 해야 겠습니다.^^

<참고 URL>
http://huddledmasses.org/wget-2-for-powershell/
Posted by 알 수 없는 사용자
:
2010. 7. 26. 17:40

안녕하세요. 엉스데브 입니다.

Windows 7, Windows 2008 R2 부터 IIS 를 설치 시 PowerShell IIS 관리 모듈이 같이 설치 됩니다. 모듈의 이름은 “WebAdministration” 이며, PowerShell 에서 Import-Module cmdlet 으로 불러들여서 사용 할 수 있습니다.

먼저, WebAdministration 모듈이 존재하는지 확인 합니다.

Get-Module -ListAvailable


해당 모듈을 사용 할 수 있도록 Import 합니다.

Import-Module -Name WebAdministration



“IIS 구성 데이터에 액세스하려면 프로세스에서 높은 상태를 가져야 합니다.” 라는 오류메시지가 나오는 군요. PowerShell 을 관리자 권한으로 실행 시켜야겠네요.

, 스크립트를 실행 할 권한이 없다고도 나오는 군요. 이 부분은 실행 정책을 “RemoteSigned” 로 변경해서 처리 할 수 있습니다.(링크 : PowerShell 자체 인증서 생성과 스크립트 인증 하기)

관리자 권한으로 PowerShell 을 실행하고, 실행 권한도 조정 한 후 다시 Import 했습니다.

별다른 오류 없이 잘 넘어가는 군요.

WebAdministration 모듈이 Import 되었으니, 새로 추가 된 명령어들을 확인 해 봅시다.

Get-Command -Module WebAdministration


여러 명령어가 추가 된 것을 확인 할 수 있습니다.

도움말을 통해 각 cmdlet 을 어떻게 사용 하는지 확인 해 보는 것을 추천 합니다.

, 그럼 먼저 웹사이트를 하나 만들어 볼까요?
웹사이트를 운영하려면, 먼저 해당 웹사이트가 사용 할 ApplicationPool 을 만들어야 합니다. New-WebAppPool 명령어로 만들 수 있습니다.

New-WebAppPool -Name "Test Site"



잘 만들어 졌네요.

이제, 사이트의 내용이 들어갈 홈디렉토리를 만들어 주어야 합니다. “C:\wwwroot\TestSite” 로 만들었습니다.
Force 파라미터를 주면 부모 디렉터리가 존재하지 않을 경우 강제로 만들어 줍니다.

mkdir C:\wwwroot\TestSite -Force

 

 

이제 웹 사이트를 만들어 봅시다. New-Website cmdlet 을 이용 합니다.

New-Website -Name "Test Site" -ApplicationPool "Test Site" -PhysicalPath "C:\wwwroot\TestSite"




이런, 오류가 발생하는군요.
배열 범위가 벗어났다는 오류가 발생하는데, 구글링 결과 기존에 만들어진 사이트가 전혀 없어 ID 값을 자동으로 생성 해 내지 못했기 때문이라고 합니다. ID 값을 1로 강제 지정 하고 다시 시도 합니다.

New-Website -Name "Test Site" -ApplicationPool "Test Site" -PhysicalPath "C:\wwwroot\TestSite" -Id 1



잘 만들어 졌습니다. 자동으로 시작 상태가 되었군요.

WebAdministration
모듈은 IIS: 라는 Provider 도 제공 합니다.
해당 Provider 를 통해 마치 하드디스크의 파일 내용을 탐색 하듯이 탐색 해 볼 수가 있습니다.
IIS:\
의 내용을 살펴 보면, 다음과 같은 내용을 확인 할 수 있습니다.


AppPools
에는 현재 만들어진 모든 ApplicationPool 이 들어있고, Sites 엔 현재 만들어진 모든 사이트가 들어있습니다.



만들어진 아이템(ApplicationPool, 사이트)의 속성을 변경하고 싶다면, Set-ItemProperty cmdlet 을 사용하면 됩니다. PhysicalPath “C:\wwwroot” 로 변경 해 보았습니다.

Set-ItemProperty "IIS:\Sites\Test Site" -Name "physicalPath" -Value "C:\wwwroot"




physical Path 값이 잘 변경 되었네요.

만약, ApplicationPool 을 재생하고 싶다면, Get-Item cmdlet 으로 재생하고자 하는 ApplicationPool 을 선택 한 뒤, .Recycle() 메소드를 호출 하면 됩니다.

(Get-Item "IIS:\AppPools\Test Site").Recycle()


, 해당 ApplicationPool 을 중지 하고 싶다면 Stop() 메소드를, 시작하고 싶다면 Start() 메소드를 사용 할 수 있으며, state 속성을 보면 현재 실행 상태를 확인 할 수 있습니다.

(Get-Item "IIS:\AppPools\Test Site").state
(Get-Item "IIS:\AppPools\Test Site").Start()
(Get-Item "IIS:\AppPools\Test Site").Stop()



ApplicationPool의 시작, 중지, 재시작 등의 작업은 Start-WebAppPool, Stop-WebAppPool, Restart-WebAppPool 등의 cmdlet 을 사용해서도 할 수 있습니다. 자세한 내용은 get-help 를 통해 확인 해 보세요!

이제 다 가지고 놀았으니 정리해야 겠네요 ^^
지금까지 만든 모든 웹사이트와 ApplicationPool 을 삭제했습니다.

Remove-WebAppPool *
Remove-Website *



깔끔히 지워졌네요.

지금까지 WebAdministration
모듈을 간단히 살펴봤는데, 아주 잘 만들어진 것 같습니다.
PowerShell 만으로도 IIS 세팅에 관한 원하는 모든 작업을 할 수 있을 것 같네요.

앞으로 WebAdministration 모듈을 적극 이용해서 사이트 설정 등을 자동화 하면 좋을 것 같습니다.

<참조 문서>
Get-Help about_Modules

<참조 URL>
http://www.winserverhelp.com/2010/07/automating-iis-with-powershell/
http://learn.iis.net/page.aspx/447/managing-iis-with-the-iis-70-powershell-snap-in/

Posted by 알 수 없는 사용자
:
2010. 7. 26. 12:37

Microsoft System Center 제품군에는 뭐가 뭔지 모를 정도의 많은 제품들이 있습니다.

SCRM, SCCP, SCSM, SCCM, SCOM, SCDPM, SCVMM, SCE, SCUP, AGPM ......

이와 같은 각각의 제품들이 모두 나름대로 중요한 기능을 하고 있고 인프라 구축에 필요한 것들이긴 합니다만 모두 설치해 놓고 사용하는 회사들은 많지 않을 것이라고 생각 합니다
. 사전에 준비해야 할것도 많고 Microsoft의 인프라 구성이나 설계, 운영에 대해서 잘 알고 있는 엔지니어도 그리 많지 않습니다. XP와 서버만 알고 있는 사용자에겐 이게 다 뭔소리 인가? 싶겠지만 사용자 모르게 백그라운드에서 운영중인 수 많은 서버들이 존재 하고 있는 것이 사실 입니다.



이 많은 제품들중에중에 오늘부터 당분간
SCCM 이라는 제품에 대해서 알아 보기로 하겠습니다.

SCCM에 대해서 더 자세히 알고 싶다면 TechNet Virtual Labs: System Center (http://technet.microsoft.com/en-us/virtuallabs/bb539977.aspx
)를 이용해 보시기 바랍니다.

SCCM (System Center Configuration Manager) "새로운 소프트웨어 업데이트 관리 도구" 라는 제목으로 Technet Magazine에 소개 되었던 적이 있습니다. (http://technet.microsoft.com/ko-kr/magazine/2007.10.updates.aspx)

이외에도 SCCM은 여러 기능을 제공을 하는데 중요한 기능은 다음과 같습니다.

- 운영체제
/응용프로그램/업데이트 배포

- 하드웨어 소프트웨어 인벤토리 관리
- 소프트웨어 사용 측정
- 원격 컴퓨터 관리
- 스마트 폰 등 디바이스 관리
등 입니다.

System Center 제품들은 달랑 그 제품만 설치해서 사용할 수 없습니다. SCCM도 마찬가지로SCCM만 설치하면 설치 중간에 요구사항 미비로 설치가 완료되지 않습니다. 사전에 어떤 것들이 필요한지 우선 알아 보고 다음 포스팅에는 조금 더 자세히 알아 보고 설치해 보겠습니다.

우선 역할에 따라
- ConfigMgr Site Server
- ConfigMgr Site Database Server
- ConfigMgr Component Server
- ConfigMgr Management Point
- ConfigMgr Distribution Point
이렇게 필요하게 됩니다. 물론 1개의 물리적인 서버 머신에 모두 구성 해도 됩니다.

그리고 Primary Site Server 역할을 위하여 추가로 설치 되어야 할 것들이 많이 있습니다.
- Internet Explorer 5 이상
- .NET Framework 2.0
- Internet Information Service (IIS) 6.0 이상
- Background Intelligent Transfer Service (BITS)
- Web-based Distributed Authoring (WebDAV)
- MMC 3.0
이중에는 Windows Server 2008 R2를 기본 서버로 사용한다면 신경쓰지 않아도 되는 것들도 있습니다. 나중에 하나 하나 알아 보기로 하고 패스 합니다.

이외에 인프라 측면에서 보면 다음 두가지의 필수 요구 사항이 있어야 합니다.
- Microsoft SQL Server 2005 (Std. 또는 Ent.) SP2 이상의 Database (SQL SCCM 이 설치되는 서버에 함께 설치되어 있어도 됩니다.)
- Active Directory

대충 구성도를 그려보면 이렇게 되겠네요. 만만해 보이긴 하죠?

이제 다음 포스팅 부터는 위에 머리 아프게 나열된 여러 필수 요소들을 하나 하나 설치해 보고 SCCM이 어떻게 작동 하고 운영되는지 알아 보겠습니다.
Posted by 알 수 없는 사용자
:
2010. 7. 22. 13:58
안녕하세요. 엉스데브 입니다.

대부분의 프로그래밍 언어와 마찬가지로, PowerShell 스크립트 역시 내부에 주석을 달아 둘 수 있습니다.

주석이란, 프로그램 혹은 스크립트가 실행 될 때 무시되는 부분으로, 주로 스크립트의 흐름이나 각 부분의 역할 등을 설명하는 내용의 문자열로 이루어 집니다.

PowerShell 로 스크립트를 작성시 주석을 넣으려면, #(샵) 문자를 주석 맨 앞에 넣어주면 됩니다.
아래 예제를 살펴 봅시다. 청록색 글씨 부분이 주석입니다.
# show_uptime.ps1 { $Machine }
# 지정 한 서버의 uptime 을 출력합니다.


param([string] $Machine = ".")

# Win32_OperationSystem 오브젝트를 변수에 저장.
$OS = Get-WmiObject Win32_OperatingSystem -ComputerName $Machine

# 시스템 관리용 시간 값을 일반적인 시간 값으로 변경하여 변수에 저장.
$LastBootUpTime = [System.Management.ManagementDateTimeconverter]::ToDateTime($OS.LastBootUpTime)

# 현재 시간을 구함.
$Now = Get-Date

# Uptime 계산.
$UpTime = $Now - $LastBootUpTime

# 각 값을 계산하여 string 형식으로 변환 후 출력
[string]$UpTime.Days + " Days, " + [string]$UpTime.Hours + " Hours, " + [string]$UpTime.Minutes + " Minutes."

만약, 여러 줄의 주석을 넣고자 할 경우에는 <# #> 과 같은 형태로 감싸주면 됩니다. 아래 예제를 참고하세요.
<#
  여러 줄을 주석처리 하고 싶을 때
  이렇게 감싸주면 됩니다.
#>

<# 여러줄이 아니어도 상관은 없습니다. #>

<# 이런식으로도
    주석 처리가 됩니다. #>



스크립트를 작성 도중, 잠시 실행이 되지 않도록 처리 하고 싶은 부분이 있을 때에도 주석은 유용하게 사용 됩니다.
# $Machine = "."
$Machine = "MyServer01"

<#
$OS = Get-WmiObject Win32_OperatingSystem -ComputerName $Machine
$LastBootUpTime = [System.Management.ManagementDateTimeconverter]::ToDateTime($OS.LastBootUpTime)
#>


$LastBootUpTime = [System.Management.ManagementDateTimeconverter]::ToDateTime((Get-WmiObject Win32_OperatingSystem -ComputerName .).LastBootUpTime)

이상 PowerShell 에서 주석을 다는 방법을 알아 보았습니다.

주석은 스크립트의 내용 파악 및 이해를 쉽게 해 주기 때문에
나중에 다른사람이 스크립트를 재사용 하거나 유지 보수 작업을 할 때 크게 도움이 됩니다.
또 아무리 본인이 만든 스크립트라도 6개월, 1년 정도 지나면 파악이 쉽지 않은 경우가 많기 때문에, 본인에게도 크게 도움이 됩니다.

때문에 적절한 주석을 달아 두는 작업은 매우 중요합니다. 귀찮더라도 주석을 잘 달아 둡시다!
Posted by 알 수 없는 사용자
:
2010. 7. 22. 13:26
안녕하세요. 엉스데브 입니다.

PowerShell 에서는 도움말이 필요 할 때 Get-Help 명령어를 사용합니다.

하지만 Linux 환경에 익숙한 저는 자꾸 Get-Help 대신 man 명령어를 입력하게 되더군요.

다행히도 PowerShell은 이런 Unix 형태의 명령어의 일부를 그대로 입력 할 수 있게끔 지원 해 줍니다.
아니, 오히려 자동으로 페이지 단위로 끊어주는 등(more)  Get-Help 보다 더 좋은 기능을 제공 하는군요!

왜, 어떻게 이렇게 실행되는지 궁금합니다.
사실 저는 잘 모르는 것을 사용하는 것에 거부감을 느끼는 사람입니다.
그래서 man 명령어를 실행하면 무슨일이 일어나는지 추적 해 보기로 했습니다.

먼저 man 명령어의 정보를 봅니다.

man 명령어는 help 로 Alias 설정이 되어 있군요.

help 명령어의 정보를 봅니다.

help 명령어는 function 으로 선언되어 있는 명령어 군요.
function 일 경우, Definition 속성을 통해 내용을 확인 할 수 있습니다.
헌데 Definition 컬럼의 값이 "..." 로 표시 되는군요. 내용이 너무 길어서 표시 할 수 없는 경우 입니다.

Definition 값을 확인 해 봅시다.

help function 의 내용을 보니 상당히 복잡하군요..! 자세한 분석은 하지 않겠습니다.
다만 마지막 줄에 보니 Get-Help 명령어를 호출하고 more 를 통해 페이지를 나누어 주는군요!

이것으로 man 명령어를 실행시 PowerShell 이 내부적으로 어떻게 처리하는지 알게되었습니다.

앞으로는 마음 놓고 man 커맨드로 각종 도움말을 봐야 겠습니다. ^^

Posted by 알 수 없는 사용자
:

BLOG main image
Windows Server를 공부 하는 사람들의 팀블로그 by 마성민

카테고리

분류 전체보기 (76)
Windows (2)
Powershell (56)
AD (0)
Exchange (6)
System Center (9)
IIS (0)
SQL (3)
Sharepoint (0)

태그목록

Tistory Cumulus Flash tag cloud by BLUEnLIVE requires Flash Player 9 or better.

Total :
Today : Yesterday :