Powershell – Remoting EnableCompatibilityHttpListener

원격지의 서버에 Powershell Remote를 활성화 시키는 작업중 해당 네트워크가 80번 포트를 제외한 거의 모든 포트가 윈도우즈 방화벽이 아닌 네트워크 상에서 막혀 있었다. 즉 Default port 인 5985 / 5986 을 사용 할 수 없어 원격 접속이 불가능한 경우 였다. 이때 포트를 직접 80번으로 바꾸어 주었는데 WSMan:localhostServiceEnableCompatibilityHttpListener 를 활성화 시키면 자동으로 80번 포트가 추가로 사용 가능…

Read More

Powershell – 원격 접속을 위한 Credential 만들기

원격 접속을 위해 Enter-PSSession 또는 Invoke-Command 를 수행 할 때 -Credential 파라메터가 필요하다. 사용자 이름만 적으면 자동으로 대화 상자가 뜨면서 입력 할 수 있다. Enter-PSSession -ComputerName [대상] -Credential [대상의 사용자] 직접 Password 를 입력 할 수 없고 대화상자가 뜨는 이유는 -Credential 파라메터에 PSCredential 타입의 개체가 필요한데 이것을 만드는데 사용되는 SecureString 개체가 대화상자를 통해서만 만들수 있다…

Read More

Powershell – Remoting (원격 접속)

원격지에 있는 Powershell 에 접속이 가능하다 정확히는 Session 을 만들수 있는데 이 Session을 이용하여 원격지에 있는 Powershell 과 상호작용이 가능한것이다. 자주쓰게 되는 기능인데 물어보는 분들이 많아 정리 해 둔다. 자세한 규칙이나 프로토콜, 원리등을 설명하면 20페이지정도 문서가 나올꺼 같지만 여기선 필요한 과정들에 대한 설명만 기록한다. 바쁜사람들은 아래를 보고 따라하자. A 가 B 에 원격 접속 하고…

Read More

.NET – WPF JumpList

JumpList 란 Windows 7 부터 지원 되는 기능으로 작업 표시줄에 등록된 아이콘을 마우스 오른쪽 버튼을 누를때 표시 되는 메뉴이다. Internet Explorer, 탐색기, Windows Media Player 등에서 지원 되고 있고 최근의 많은 프로그램들도 지원 하고 있는 기능이다. JumpList 메뉴를 보면 항목들이 Category로 나뉘어져 있는데, 일반적으로 다음과 같이 나뉜다. 자주 사용하는 항목 Category 최근에 사용한 항목 Category…

Read More

.NET – Command Queue 구현

즐겨쓰는 Command Queue 방식. Polling 하는 Thread를 따로 두지 않는다. Command Interface interface IExecutable { void Execute(); } Command Executer /// /// The executer with queue. /// internal class ExecuterWithQueue { /// /// The is executing. /// private bool isExecuting; /// /// The queue. /// private ConcurrentQueue queue; /// /// Gets Queue. /// private ConcurrentQueue…

Read More

Powershell – Ping-MultipleTarget

ICMP 패킷을 이용하여 Ping 결과를 bool 로 리턴하는 Function을 작성하고, 이를 이용하여 지정된 범위 의 모든 주소에 Ping을 시도하여 Host들의 상태를 확인 한다. param ( [Parameter(Mandatory=$true)] $BaseIp, $Start = 1, $End = 255, $Timeout = 100 ) Function Ping-Target { param ( [Parameter(Mandatory=$true)] [string]$HostNameOrAddress, [int]$Timeout = 100 ) $pingObject = New-Object System.Net.NetworkInformation.Ping $pingReply = $pingObject.Send($HostNameOrAddress,…

Read More

Powershell – Resize Powershell Window size

Powershell 창을 사용 할 때 가끔 폭이 너무 작아 불편 할 때가 있다. Height는 창을 늘리면 늘어 나지만 Width는 특정 크기 이상 최대화를 해도 늘어 나지 않는다. Property가 많은 개체를 열어 보거나 긴 text line을 봐야 하는 경우 갑갑 하기도 하다. 이때는 $Host.UI.RawUI.WindowSize 값을 조절 해 줌으로써 넓은 화면을 사용 할 수 있다. 단 변경할때…

Read More

Powershell – Invoke-BatchCommand

일반 cmd 에서 잘 수행되던 명령이 Powershell 에서 똑같이 입력 했을 때 오류가 나는 경우가 있다. 대부분 특수문자가 있을때 Powershell이 특수 문자를 특정 연산자로 인식하면서 의도하지 않은 동작이 일어나는 경우 이다. 예를 들어 svn Dump file을 load하는 경우 다음과 같은 명령을 사용한다. svnadmin load C:svntest < .test.Dump cmd 에서는 잘 실행되지만 Powershell 에서는 다음과 같은...

Read More

Powershell – Parameter Attribute

Powershell Cmdlet, Function을 이용 하다 보면 명령 뒤의 Parameter를 필수 적으로 입력을 요구 할 때가 있다. 또 명령어 뒤에 -[parameter명] 을 붙히지 않고 공백으로 구분하여 입력 하면 자동으로 순서대로 Parameter를 인식 하는데 이런 동작들은 Cmdlet, Function 내부에 진입 하기 전에 Parameter Attribute 에 의해서 조절 된다. 즉 꼭 필요로 하는 Parameter를 Cmdlet 안에서 $null 체크를…

Read More

Powershell – Resize Image Files

Powershell 로 이미지 파일을 Resize 해 보자. Parameter는 입력 파일 경로, 출력 파일 경로 그리고 Width, Height 사이즈만 있으면 된다. System.Drawing을 사용하였는데 기본적으로 Load 되어 있는 Assembly가 아니므로 Load 해 줘야 한다. 아래는 여러가지 방법중 하나 이다. .Net 을 사용한 Image Resize 코드들을 찾아 보면 여러 가지 방법이 있으니 다른 방법도 Powershell로 다시 써보면 재미…

Read More