잊지 않겠습니다.

'PowerShell'에 해당되는 글 4건

  1. 2009.09.16 WinRm 설정
  2. 2009.07.13 MS SQL Query Script
  3. 2009.07.10 쓸만한 PowerShell Scripts
  4. 2009.06.20 Using PSCredential without User-Prompt

WinRm 설정

OS 자료들 2009.09.16 02:02
windows의 remote command를 사용할 수 있는 너무나 멋진 서비스.

linux에서 ssh를 이용한 command set을 날리는 것을 볼때마다 느끼는 부러움은 이제 없어지는 것인가.. 라는 생각이 든다.
기본적으로 windows 2003 이상부터 WS-Management가 설치되어 있는 경우에 사용 가능하다.

기본적인 컨셉은 기존의 wmi query의 remote와 유사하다는 느낌이 든다. 그렇지만, RPC를 사용하는 것이 아닌, http://를 사용하는 것으로 protocol면이나 사용하는 것에 있어서 매우 편하게 사용가능한 것을 알 수 있다.

먼저, 기본적으로 winrm의 설정이 필요하다.


기본적으로 사용자가 설정할 내용들이 거의 없다. 처음에 windows firewall의 예외 port 설정을 quickconfig가 대신해준다는 점을 제외하고는 winrm s winrm/config @{key:value} 형태로 조작하는 것이나 거의 비슷하다.

일단 기본적인 명령어들은
winrm get, winrm set, winrm invoke로 사용가능한다. invoke의 경우에는 wmi query를 remote로 vb script나 Powershell에서 사용하는 것과 동일하고 너무나 재미있어 보이는 것이 winrm으로 Service를 올린 이후의 작업들이다.

먼저 기본적인 quickconfig를 마친 설정은 다음과 같다.


설정 내용을 보면 webservice 구축이 되어있다는 느낌을 강하게 받는다. IP FIlter부터 Timeout, Max-Connection 숫자, UnencryptAllowed 등 잘 거의 web service를 사용하는 것과 동일하게 사용할 수 있다. 다만 주의 할점이있다면 Service 설정 뿐 아니라, Client에서도 기본 설정을 잡아주어야지만 client를 이용해서 server에 접근 할 수 있다는 점이다.

winrm의 하이라이트. http://를 이용해서 cmd set을 이용해보자~

winrs를 이용해서 ipconfig 명령어를 날린 상태이다. 이를 이용하면 따로 webservice를 올리지 않고, console application으로 작성해서 그 결과를 return시켜줄 수 있는 멋진 환경이 만들어진다. 관리자들 뿐아니라 기본적으로 개발자들도 이 부분에 대한 공부가 좀 더 필요할 것 같다. 생각만하면 무궁무진하게 사용할 수 있는 분야가 많으니까 말이다.

지금 windows 2003에서 사용되고 있는 WS-Management 1.1에서는 단순 remote http/https만을 지원한다. 그렇지만, WS-Management 2.0에서는 더 멋진 것을 지원한다. PowerShell에서 remote computer와의 PS-Session을 이용한 Remote Powershell command를 할 수 있다!

Remote Powershell command를 지원하게 되는 경우에 기존의 Exchange 2007, SCVMM, SCMON 등의 resource를 remote로 호출해서 그 결과를 사용할 수 있다는 뜻이된다. 이 부분은 PowerShell의 Invoke-Command 부분을 좀 더 공부해볼 필요가 있을 것 같다.





저작자 표시 비영리 변경 금지
신고
Posted by xyzlast Y2K

[System.Reflection.Assembly]::LoadWithPartialName("System")
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Reflection.Assembly]::LoadWithPartialName("System.Data")

$fileContexts = [System.IO.File]::ReadAllLines("c:\mailStore.txt")
$connection = New-Object System.Data.SqlClient.SqlConnection("==THIS IS CONNECTION STRING==");

foreach($fileContext in $fileContexts) {
    $samAccount = $fileContext.Replace("name: ", "").Replace("@mailpush.co.kr", "")
       
    $connection.Open()
    $command = New-Object System.Data.SqlClient.SqlCommand;
    $command.Connection = $connection
    $command.CommandText = "SELECT PhoneNumber, Email From Product WHERE LogonName = '" + $samAccount + "'" + " and ProductStateId = 1"
    $reader = $command.ExecuteReader()

    while($reader.Read())
    {
        $reader.GetSqlString(0).ToString() + "`t" + $reader.GetSqlString(1).ToString() >> c:\output1.txt
    }
    $reader.Close()
    $connection.Close()   
}
[System.Windows.Forms.MessageBox]::Show("Complete!")
notepad.exe "c:\output1.txt"


재미있는 것은 .NET쪽 코드랑 별 다를 것이 없는 코드를 내가 작성하고 있다는 것이다. -_-


저작자 표시 비영리 변경 금지
신고
Posted by xyzlast Y2K
RSS Feed Script
([xml](new-object System.Net.WebClient).DownloadString("http://blogs.msdn.com/powershell/rss.aspx")).rss.channel.item | format-table title,link


FAST Windows Form
[void][reflection.assembly]::LoadWithPartialName("System.Windows.Forms")
$form = new-object Windows.Forms.Form
$form.Text = "My First Form"
$button = new-object Windows.Forms.Button $button.text="Push Me!"
$button.Dock="fill"
$button.add_click({$form.close()})
$form.controls.add($button)
$form.Add_Shown({$form.Activate()})
$form.ShowDialog()

:여기서 중요한 코드는 첫줄. Assembly의 동적 Loading이 저렇게 쉽게 가능하다는 것이 가장 멋진 일이다.

ERROR LOG FINDER
dir $env:windir\*.log | select-string -list error | format-table path,linenumber –autosize
저작자 표시 비영리 변경 금지
신고
Posted by xyzlast Y2K
Using Powershell, You cannot use get-credential without some type of user-prompt. 

But! 
I found the method without user-prompt window!!

Here is my code
function Get-PSCredential
{
    param($userName, $password)    
    $secured_password = ConvertTo-SecureString $password -AsPlainText -Force
    New-object Management.Automation.PSCredential($userName, $secured_password)    
}

$cred = Get-PSCredential -userName "Administrator" -password "abcdefghijk"


저작자 표시 비영리 변경 금지
신고
Posted by xyzlast Y2K


티스토리 툴바