Exchange 2010에서 New-MailContact를 사용하여 연락처를 한꺼번에 여러개 생성하기


1) 다음과 같이 C:\customers.csv라는 파일을 생성한다.
Name, Email, OUPath
Yongshik Lee, jesuswithme@gmail.com, powershell.kr/customers/Samsung
Pyeonghwa Lee, peace@hotmail.com, powershell.kr/customers/LG
** 사전에 AD에서 Customers OU 아래에 각각 Samsung, LG OU를 생성해두어야 한다.

2) 다음과 같이 CreateContacts,ps1 파일을 생성하여 실행한다.
Import-CSV C:\customers.csv | ForEach-Object {
New-MailContact -ExternalEmailAddress $_.Email -Name $_.Name -OrganizationalUnit $_.OUpath
}

** 여기서 알 수 있듯이 무엇보다도 csv 파일을 잘 만든 것이 중요하다.
** 일단 기본적인 정보를 가지고 만든 후, 나머지 속성들은 나중에 수정해 넣으면 된다.

 

 

Advertisements

Exchange Server에서 사용자 계정과 그에 대한 사서함을 한꺼번에 만들기


1) 메모장 및 엑셀 프로그램으로 csv 파일 생성
** 제일 위줄을 잘 적어야 한다
name, surname, givenname, samaccountname, city
yslee, lee, yongshik, yslee, seoul
peace, lee, pyeonghwa, peace, seoul
comforter, lee, lowoon, comforter, seoul

** name, samaccountname는 필수 항목. 이 항목은 Get-ADuser -Identity administrator | Get-Member 로 속성(property)를 확인한 것이다. 그리고 반드시 도움말 Help new-aduser를 확인한다.
** 만들 csv 파일을 확인하기 위해 import-csv c:\userlist.csv

2) csv 파일을 이용하여 한꺼번에 AD 계정 생성하기
import-csv c:\userlist.csv | new-aduser
** Active Directory Module for Windows Powershell에서 작업

3) 생성한 계정을 lab OU로 이동한다.
4) 암호 재설정하기
Get-ADuser -Filter * -Searchbase “ou=lab, dc=powershell, dc=kr” |
Set-ADAccountPassword -Reset -NewPassword (Read-Host -Promt “Your password” -AsSecureString)

** 암호는 Pa$$w0rd로 입력한다.

5) 계정 Enable 하기
Get-ADuser -Filter * -Searchbase “ou=lab, dc=powershell, dc=kr” | Enable-ADAccount

6) 한꺼번에 여러개의 사서함 만들기
Get-User -OrganizationalUnit “lab” | Enable-Mailbox -Database “Accounting”
** Exchange Management Shell에서 작업

Param()을 이용하여 Exchange Server에서 사용자 사서함을 쉽게 생성하기


Exchange Management Shell에서 사용자 사서함을 만드는 방법은 크게 두 가지가 있다.

1) Active Directory에 이미 사용자 계정이 만들어져 있는 경우, 그 계정을 이용해서 각각의 사서함을 만들어 주는 경우

2) 처음부터 직원들의 이메일을 받을 수 있는 사서함을 만들면서 AD에 로그온 하는 계정도 만드는 경우

여기서 먼저 Active Directory에 있는 기존 사용자를 이용하여 사서함을 한꺼번에 여러 개를 만들어 보자

– Get-User -OrganizationalUnit Marketing
– Get-User -OrganizationalUnit Marketing | Enable-Mailbox -Database “Mailbox Database 1”
이렇게 만드는 것이 제일 쉽고 일반적인 방법이다. 이렇게 하면 Marketing OU에 소속된 모든 사용자에게 사서함을 배정하여 줄 수 있다.

좀더 간단한 방법을 사용한다면… 위의 내용을 스크립트로 만들어서 활용하면 더욱 쉽고도 잘 활용할 수 있다.
스크립트 내용은 다음과 같다.
Param (
$OU
)
Get-User -OrganizationalUnit $OU | Enable-Mailbox -Database “Mailbox Database 1”

이렇게 한 후 스크립트 내용을 CreatingMailboxForExistingUsers.ps1로 저장하여 다음과 같이 실행하면 된다.
.\CreatingMailboxForExistingUsers.ps1 Sales
.\CreatingMailboxForExistingUsers.ps1 -OU “HR”
.

이제는 사서함을 만들면서 AD에 사용자 계정도 만들어 보자.

New-Mailbox -Name jesuswithme -Password (Read-Host -Prompt “Your Password” -AsSecureString) -UserPrincipalName jesuswithme@powershell.kr -Database “Mailbox Database 1” -ResetPasswordOnNextLogon $true

이렇게 만들어 보니 너무 어렵다. 앞으로 새로운 사원이 들어 올 때만다 이렇게 만들면 너무 어려우니 스크립트 파일을 이용해보자.

Param (
  $name,
  $upn
)
New-Mailbox -Name $name -Password (Read-Host -Prompt “Your Password” -AsSecureString) -UserPrincipalName $upn -Database “Mailbox Database 1” -ResetPasswordOnNextLogon $true

이렇게 한 후 스크립트 내용을 CreatingMailboxWithNewUsers.ps1로 저장하여 다음과 같이 실행하면 된다.
.\CreatingMailboxWithNewUsers.ps1 aduser1 aduser1@powershell.kr
.\CreatingMailboxWithNewUsers.ps1  -Name aduser2 -Upn aduser2@powershell.kr

Windows 8의 WordPress.com의 App에서 처음으로 글을 쓴다


Windows 8의 WordPress.com 앱을 사용하여 작업을 하고 있다.
일단 편집하는 창이 화면 전체를 사용하니 좀 어색하다.
그리고 Windows 8을 사용하기 때문에 UI를 익히는데 시간이 좀 걸리지만,
새로운 것을 배울 수 있다는 기쁨이 있다.
글을 쓰면서 직접 사진을 찍어서 올릴 수도 있구나.

Workgroup 및 other domain 환경에서 Powershell을 사용하여 원격으로 접속하기 위한 설정


  • Powershell 원격 관리는 매우 유용한 기능이다. 이것을 구현하기 위해서는 Domain 환경이 구축되어야 한다.
  • 그런데 현업에서는 Workgroup에 속한 컴퓨터에 접속하거나 다른 도메인에 속한 컴퓨터를 원격으로 관리해야 할 일이 존재한다.
  • 그래서 동일한 도메인에 존재하지 않는 원격 컴퓨터를 원격으로 접속하여 관리하기 위해서는 다음과 같이 작업한다.
    • Powershell 콘솔 프로그램을 반드시 관리자 권한으로 실행한다
    • 관리를 당하는 원격 서버에서의 설정:
      Enable-PSRemoting -Force
      방화벽 끄기
      (원격 서버에서 방화벽을 끄지 않으면 접속이 안 된다. 이 문제는 해결해야 한다.)
      원격 컴퓨터가 Windows XP라고 하면 SecPol.msc에서 다음 설정도 해야 한다.
       


    • 원격으로 접속하는 클라이언트 컴퓨터에서의 설정:
      Set-Item WSMan:\localhost\client\trustedhosts * -Force
    • 만약 접속할 원격 컴퓨터를 특정하게 지정하고 싶다면

      Set-Item WSMan:\localhost\client\trustedhosts -Value PC1, PC2
      Set-Item WSMan:\localhost\client\trustedhosts -Value 10.10.0.10
      Set-Item WSMan:\localhost\client\trustedhosts -Value *.powershell.kr

  • 이제 클라이언트에서 원격 서버에 접속해 본다.
    Enter-Pssession -CompuerName RemoteServer1 -Credential RemoteServer1\administrator
  • 아래와 같이 실습을 하면 성공함. 접속하는 로컬 컴퓨터는 jesuswithme-pc이고 원격 컴퓨터는 win2008R2SP1이다.         


     
     


Background에서 Powershell Job(작업) 실행하기


  • Powershell console에서 작업을 하면, 즉 여러 가지 cmdlet를 실행하거나 스크립트 파일(.ps1)을 실행할 때는 Interactively, Synchronously하게 처리된다. 즉, 이것은 한 명령어를 실행한 후 다음 명령어를 실행하려면 첫 번째 명령어의 결과가 화면에 나타난 후 그 다음 명령어를 실행할 수 있다는 것이다.
  • 문제는 그 다음 명령어를 실행하려고 하는데 첫 번째 명령어가 아직 계속 진행 중이라면 문제가 발생하게 되는 것이다.
  • 이것을 해결하려면 첫 번째, 또 다른 Powershell console 프로그램을 실행해서 처리하면 된다. 그러면 부가적으로 메모리와 CPU를 더 사용하게 된다. 그래서 두 번째 방법이 있다. 그것을 바로 Background에서 작업을 실행하게 하는 것이다.
  • Background에서 작업을 할 때는 -AsJob이라는 매개변수를 이용하거나 Start-Job이라는 cmdlet를 이용하는 방법이 있다.
  • -AsJob은 Parameter이기 때문에 모든 cmdlet에서 사용할 수 없다. 하지만 간단하게 사용할 수 있는 장점이 있다.
    • Gwmi -computername pc1, pc2 -Class cim_datafile
      (이렇게 하면 시간이 많이 걸린다)
    • Gwmi -computername pc1, pc2 -Class cim_datafile -AsJob
      (이렇게 하면 백그라운드로 작업이 되므로 다른 명령어를 실행할 수 있다.)
    • 작업이 진행중인지 끝났는지 확인하려면 Get-Job으로 확인할 수 있다.
       
  • Start-Job의 장점은 다음과 같다.
    • 모든 cmdlet에 사용할 수 있다.
      Start-Job -Scriptblock {Get-Process -Computername PC1, PC2}
    • Powershell Script 파일도 background로 작업을 할 수 있다.
      Start-Job -FilePath c:\myscript.ps1
    • 현재 로그온한 사용자가 아닌 다른 사용자 계정으로 실행할 수 있다.
      Start-Job -Scriptblock {Get-Eventlog -Logname system} -Credential Contoso\user01
    • Job name을 사용자가 명기할 수 있다. -AsJob은 Default로 Job name이 붙는다.
      Start-Job -Name WinRmTask -Scriptblock {get-process winrm}        
  • 백그라운드로 작업한 내용을 보기 위해서는 다음과 같이 한다.
    • Get-Job으로 Job 현황을 본다.
    • Receive-Job -Id 1 -Keep로 첫 번째 Job 내용을 본다. 여기서 -Keep을 사용한 이유는 이것을 사용하지 않으면 한 번만 내용을 볼 수 있기 때문이다.