2010. 8. 18. 17:58
안녕하세요. 엉스데브 입니다.

리눅스 시스템을 관리 할 때 편하게 사용했던 명령 중에 findgrep 명령이 있었습니다.
여러개의 폴더 및 하위 폴더의 파일을 대상으로 찾고자 하는 문자열을 포함한 파일을 찾아주는 기능을 하는 명령 입니다.
PowerShell 에서도 이 명령을 사용하고 싶어져서, 만들어 보았습니다.

function Search-FileByContentString
{
  param
  (
    [String]$SearchString,
    [String]$TargetDirectory,
    [String]$IncludeExtension = 'txt;asp;aspx;config;xml',
    [Int32]$SkipFileSize = 5MB
  )
 
 $directory = Get-ChildItem($TargetDirectory) -ErrorAction SilentlyContinue

  if($directory -eq $null)
  {
    return $null
  }

  foreach($item in $directory)
  {
    switch($item.GetType().ToString())
    {
      # 파일 일때
      'System.IO.FileInfo'
      {
        if (!($IncludeExtension.Split(';') -eq $item.Extension.Replace('.','')))
        {
          break
        }

        if($item.Length -gt $SkipFileSize)
        {
          break
        }
       
        $Lines = @(Get-Content($item.FullName))

        for($index = 0; $index -lt $Lines.Count; $index++)
        {
          if( $Lines[$index].Contains($SearchString))
          {
            Write-Host $item.FullName"("($index + 1)"): "$Lines[$index]
          }
        }

        break
      }

      # 디렉토리 일때
      'System.IO.DirectoryInfo'
      {
        Search-FilebyContentString -SearchString $SearchString -TargetDirectory $item.FullName -IncludeExtension $IncludeExtension -ExcludeExtension $ExcludeExtension -SkipFileSize $SkipFileSize
        break
      }

      # 다른 종류 일때
      default
      {
        Write-Host "Error:(" + $item.GetType().ToString() + ")"
        break
      }
    }
  }
}

실행 결과:



<참고 URL>
http://thelazyadmin.com/blogs/thelazyadmin/archive/2007/05/09/powershell-dyi-commands-using-functions.aspx
Posted by 알 수 없는 사용자
:
2010. 8. 18. 17:02
안녕하세요. 엉스데브 입니다.

PowerShell 을 사용해 FTP 사이트를 만들다 보니, FTP 로그인 정보로 사용할 사용자 계정추가가 필요 해 졌습니다.
해서 간단하게 로컬 컴퓨터의 사용자를 추가 및 삭제 할 수 있는 함수를 만들어 보았습니다.

*아래 함수들은 반드시 PowerShell 이 관리자 권한으로 실행 되었을 때에만 권한 문제 없이 실행 됩니다.

# 새 로컬 사용자 추가.
function New-LocalUser
{
  param
  (
    [parameter(Mandatory=$true)]$Name,
    [parameter(Mandatory=$true)]$Password
  )

  $LocalUser = Get-WmiObject Win32_useraccount -Computer $env:computerName -Filter "LocalAccount=True" | Where-Object -Filter {$_.Name -eq $Name}

  if($LocalUser -eq $null)
  {
    $LocalComputer = [adsi]"WinNT://$env:computerName"
    $LocalUser = $LocalComputer.Create("User", $Name)
    $LocalUser.SetPassword($Password)
    $LocalUser.SetInfo()
  }
}

# 로컬 사용자 삭제.
function Remove-LocalUser
{
  param
  (
    [parameter(Mandatory=$true)]$Name   
  )

  $LocalComputer = [adsi]"WinNT://$env:computerName"

  $LocalComputer.Delete("user",$Name) 
}

# 로컬 사용자 목록 가져오기.
function Get-LocalUser
{
  param
  (
    $Name
  )

  if($Name -eq $null)
  {
    Get-WmiObject Win32_useraccount -Computer $env:computerName -Filter "LocalAccount=True"
  }
  else
  {
    Get-WmiObject Win32_useraccount -Computer $env:computerName -Filter "LocalAccount=True" | Where-Object -Filter {$_.Name -eq $Name}
  } 
}

아래 더보기 버튼을 누르시면, 간단한 해설을 보실 수 있습니다.


<참고 URL>
http://stackoverflow.com/questions/383390/create-local-user-with-powershell-windows-vista
http://powershell.com/cs/media/p/2327.aspx
Posted by 알 수 없는 사용자
:
2010. 8. 18. 16:24

안녕하세요 exterminate 입니다.

이번 포스팅은 powershell로 ms-sql을 사용하는 편 입니다.

사실 ms-sql을 사용하면서 작업을 하려고 하다 보면 부하가 있으면 gui환경에서는 너무느려서 짜증나고 쿼리분석기를 쓰자니 쿼리문도 어

렵고 해서 짜증이 솟구치는 적이 한두번이 아니였습니다. my-sql에서 사용하는 모든쿼리문이 적용되지는 않으나 콘솔 환경에서 사용할 수
있는 점이 기존의 gui환경에서 ms-sql을 사용하였을때 보다는 많이 거부감은 없을것 같다.

먼저 데이타베이스를 파워쉘로 접속하는 2가지 방법입니다.

첫번째는 ms-sql에서 해당 db의 오른쪽 클릭을하면 PowerShell 시작이라고 있습니다.



두번째 방법은 PowerShell에서 sqlps를 이용하여 접속하는 방법입니다.
sqlps는 Windows PowerShell 환경을 만든 다음 SQL Server 스냅인을 로드하고 등록하는 유틸리티입니다.
실행 하면 다음과 같이 SQLSERVER로 접속이 되게 됩니다.
데이타 베이스의 경로는 다음과 같습니다.
SQLSERVER:\SQL\MyComputer\DEFAULT\Databases\AdventureWorks2008R2 이며
MYComputer 부분은 hostname 이며 AdventureWorks2008R2은 데이타베이스 명입니다.

그러면 제가 구성해놓은 테스트 db인 sungjin 으로 접속해보겠습니다.

hostname부분은 모두 가려놓았습니다.
보시면 sungjin이라는 db에 접속한것을 확인하실수 있습니다.
여기서 ls로 하위 폴더를 보시면..


해당 db의 구성을 확인할수 있습니다... 목록을 보니..User..Views...Table이 눈에 들어오네요

그러면 Table로 이동해보겠습니다.

sungjin 데이타베이스의 구성된 테이블 목록을 확인할수 있습니다.
또한 여기서 테이블을 여러가지 쿼리문으로 실행해본 결과 입니다.
Invoke-Sqlcmd 을 이용하여 쿼리문을 실행할수 있으며 Invoke-Sqlcmd 는 sqlcmd유틸리티를 이용하여 실행할 수도 있는 쿼리문 및 스크립트를 실행할 수 있습니다.
Invoke-Sqlcmd에 대한 자세한 설명을 아래 경로를 참조해주시기 바랍니다.
http://msdn.microsoft.com/ko-kr/library/cc281720.aspx
쿼리문을 실행하기 위해선 -query를 붙여주셔야 합니다.


테이블을 검색하실땐 스키마.테이블명 으로 조회해야 합니다.
위의 boardId , boardName, fileUpload,reply 는 해당 테이블의 열 이름 입니다.
board라는 테이블에 대하여 조건을 넣어 특정행을 삭제하고 select로 출력해보는 쿼리문 이였습니다.

위와 같이 쿼리문이 실행되게 되며 테이블폴더로 이동한후 하위폴더를 확인해보도록 하겠습니다.
Columns폴더로 이동한후 출력해보면 해당 테이블의 열 이름을 확인할수 있다.


이 처럼 Powershell로 ms-sql을 사용하면 콘솔 모드 에서 사용할수 있기 때문에 편리하며

또한 폴더로 이동하면서 해당 db의 대한 정보를 확인할 수 있다는 점이 매우 편리 한것 같다.

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

Powershell 시스템 백업  (0) 2010.08.04
Powershell 로 프로세스 관리를 해보자!  (0) 2010.07.20
Posted by 알 수 없는 사용자
:
2010. 8. 18. 10:56

5회에 걸쳐서 SCCM 2007 설치를 위한 사전 작업에 대해서 알아 봤습니다.

메인은 아직 시작도 안했는데 사전 준비 작업이 너무 길었습니다만… SCCM의 특성상 필요한 요소들이 많이 있기 때문에 어쩔 수 없었습니다.

SCCM 이란?
SCCM 설치 실패 시나리오.
SCCM 설치 전 작업 1 (AD 스키마 확장/컨테이너 권한 부여)
SCCM 설치 전 작업 2 (WSUS / IIS 역할 추가)
SCCM 설치 전 작업 3 (BITS)
SCCM 설치 전 작업 4 (WebDAV)
SCCM 설치 전 작업 5 (Framework 3.5.1/SQL/원격차등압축)


설치 전 작업 1 ~ 5까지 잘 따라 했다면 이제 검증(?) 단계를 거쳐보겠습니다.


SCCM 설치 미디어를 넣습니다. 자동으로 SCCM 2007 Start 메뉴가 실행이 되면 Run the prerequisite checker 를 클릭 합니다.

Primary site 관련 정보를 입력하고 OK를 클릭하면 점검을 시작 합니다.

이상이 없으면 그림과 같이 Success 라고 나옵니다.

이상이 있으면 설치 실패 시나리오에 있는 그림과 같이 에러나 경고가 발생을 하고 SCCM을 설치 할 수 없습니다. 


오류나 경고 메시지를 보고 원인을 찾아서 해결해야 합니다. 하지만 위 과정을 빼먹지 않고 모두 정상적으로 처리 했다면 이상이 없을 겁니다.

이상이 없으면 이제 SCCM(System Center Configuration Manager) 2007 설치를 진행 하겠습니다.

본격적인 설치는 다음 포스팅부터. ^.^

SCCM 설치 과정은 사내에 SCCM 도입을 위한 작업중 1/4 쯤 위치에 온 것이라고 보면 됩니다. SCCM 설치가 끝나면 해야 할 일들이 A급 해일처럼 몰려 올지도 모릅니다. 물론 몰려올 해일에 대해서는 포스팅을 하지 않을 수도 있습니다. 요즘 포스팅 하는 일이 부쩍 귀찮아 졌기 때문에… (댓글이 없어서가 절대 절대 절대 아닙니다. 서버 제품군들은 원래 덧글이 없다고 위로 하면 되기 때문에…)

 

이 포스팅의 내용은 Windows Server 2008 R2, SCCM 2007 SP2, Microsoft SQL 2008 R2 
환경에서 작성 되었습니다.


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 :