본문 바로가기

programming language/powershell39

Windows 10 오피스허브 삭제 Powershell 스크립트 Windows 10 을 사용하면서 기본적으로 설치된 프로그램 중에 오피스허브가 있는데 평소에는 그렇지 않지만 Autohotkey 를 사용하면서 오피스허브와 단축키가 뭔가 충돌이 나는 느낌을 많이 받았습니다. 개인적으로 필요도 없는 프로그램이 설치가 돼서 귀찮더군요. 그래서 어떻게 삭제를 해야 되는지 검색을 해보니, 아래 주소에서 답을 찾을 수가 있었습니다. https://morethanpatches.com/2021/04/30/remove-office-hub-from-windows-10/ Powershell 을 사용하여 아래와 같이 명령어 한줄을 쳐 주면 오피스허브가 삭제됩니다. Get-AppxPackage -Name Microsoft.MicrosoftOfficeHub | Remove-AppxPackage.. 2021. 9. 12.
Powershell 특정 만든이가 만든 예약 작업 삭제하는 방법 $a = Get-ScheduledTask | Where-Object {$_.Author -like "*AuthorName*" } # 특정 만든이의 작업 찾기 foreach ($c in $a) { echo $c.TaskName # TaskName 확인 Unregister-ScheduledTask -TaskName $c.TaskName -Confirm:$False# 스케줄 삭제 } 2021. 8. 26.
Powershell 날짜 간격 계산 실험 데이터 등을 정리하는 경우 프로그램적으로 경과한 날짜를 계산하는 경우가 종종 있습니다. 이런 경우 네이버나 다음 등에서 “날짜 계산기”로 검색을 해보면~ https://search.naver.com/search.naver?where=nexearch&query=%EB%82%A0%EC%A7%9C+%EA%B3%84%EC%82%B0%EA%B8%B0 http://search.daum.net/search?w=tot&&q=%EB%82%A0%EC%A7%9C+%EA%B3%84%EC%82%B0%EA%B8%B0 아래와 같이 각종 날짜를 계산 할 수 있는 도구가 나오게 됩니다. 그런데 이런 계산기들은 웹을 사용하는 방식이기 때문에 자동화도 쉽지 않고~ 굳이 웹을 사용하지 않더라도 윈도우 자체적인 툴을 사용하여 날짜를 계.. 2020. 1. 14.
Powershell 대소문자 찍기 Alphabet-Upper, Alphabet-Lower 정확히 어떤 때라고 말씀드리기는 어렵지만 코딩을 하다 보니 가끔씩 알파벳 인덱스가 필요한 경우가 종종 있었습니다. 그래서 오늘은 Powershell 을 사용하여 알파벳 대소문자를 찍는 방법에 대해서 소개를 해 보려고 합니다. 아시는 바와 같이 알파벳 대문자 A는 아스키코드로 65고~ 소문자 a는 97 부터 시작을 하게 됩니다. A부터 Z까지 전체 알파벳은 26 개 이므로 시작하는 숫자로 부터 26개를 찍어주면 될 것입니다. 코드는 아래와 같고~ Powershell 에서 실행해 보면 아래와 같이 알파벳 대소문자가 찍히는 것을 확인할 수 있습니다. 2019. 10. 15.
Powershell switch case regular expression 사용 Windows Powershell 사용시 regular expression 을 사용하면 텍스트 처리시 정말 다양한 것들을 자동화 할 수가 있습니다. Powershell regular expression 관련하여 검색을 하다 보니, 아래 주소에서 Powershell regular expression 관련 좋은 글을 발견 할 수 있었습니다. https://powershellexplained.com/2017-07-31-Powershell-regex-regular-expression/#regex-matches 그 중에서 Powershell 에서만 사용할 수 있는 굉장히 특이한 사용법에 대해서 소개하려 합니다. 보통의 다른 언어에서 switch case 를 사용하는 경우 정확하게 매칭이 되는 경우에만 사용됩니다... 2019. 7. 14.
Windows 7 Powershell version update Windows 를 사용하면서 많은 사람들이 Powershell 이라는 툴이 있는지 조차도 모르는 것 같더군요. 계속해서 말씀을 드리지만 Windows 에서 Powershell 을 사용하면 정말 다양한 작업들을 자동화 할 수가 있고~ 그만큼 생산성 향상 되는 것을 느끼실 수가 있을 겁니다. 저는 집에서 Windows 7 PC 한대와 Windows 10 PC 를 한대 사용하고 있는데~ Windows 7 PC Powershell 에서 아래와 같이 타이핑 해서 버전을 확인해 보니~ 2.0 버전이었습니다. $PSVersionTable 그래서 Windows 7 Powershell 을 업데이트 하는 방법에 대해서 검색을 해 보니 오늘 아래 주소에서 확인할 수가 있었습니다. https://www.microsoft.co.. 2019. 4. 29.
Powershell 스크립트 실행 시간 측정 Windows 환경에서 Powershell 을 사용하면 정말 다양한 PC 작업들을 자동 할 수 있습니다. 저는 업무를 비롯해 집에서 영화나 음악 파일 관리를 할 때도 Powershell 스크립트를 자주 사용합니다.그런데 오래 걸리는 작업이 있다면 Powershell 스크립트가 실행되는 시간을 알고 싶은 경우가 종종 있습니다. 그래서 오늘은 Powershell 다른 스크립트 실행 시간을 측정하는 방법에 대해서 소개하려 합니다.코드는 아래와 같이 굉장히 간단하고 측정하고자하는 스크립트 위아래에 Get-Date commandlets 을 넣어서 그 차이를 계산 하는 방법입니다. 위 Powershell 코드에서 시간 차이를 담고 있는 $timeSpan 변수를 찍어 보면 아래와 같이 다양한 시간 간격에 대해서 표시.. 2019. 4. 22.
Powershell string to Ascii Code 개발을 하면서 소프트웨어 버전과 같은 특수한 목적으로 Ascii Code 를 많이들 사용하곤 합니다. 오늘은 Powershell 을 이용하여 Ascii Code 를 알아내는 방법에 대해서 소개하려 합니다 Powershell 에서 문자열을 char 배열로 바꾸기 위해서 ToCharArray() 멤버 함수를 사용합니다. 전체 코드는 아래와 같고~ 위 코드에서 {0:X2} 부분은 두 자리 헥사값을 얻기 위한 과정이고~ [byte][char] 는 Ascii Code 를 얻기 위한 과정입니다. 세 번째 줄은 해도 되고 안 되지만 얻어진 헥사값의 순서를 뒤집기 위한 과정입니다. 다른 스크립트 언어도 그렇지만 Windows 환경에서 Powershell 은 정말 다양한 기능이 있는 것 같고~ Powershell 을 사.. 2019. 4. 17.
Powershell Tuple 사용 방법 System.Tuple .NET Framework class Powershell 을 사용하여 빌드 스크립트를 만들다 보니 쌍을 이루는 구조체를 만들어야 하는 경우가 종종 있었습니다. 그래서 Powershell struct 를 찾아보다가 Python 에서 사용하는것 처럼 tuple 을 사용 하는게 편하겠다는 생각이 들어서 검색을 해 봤습니다. Powershell 에서 역시 Python 과 마찬가지로 tuple 타입을 사용할 수 있었고 아래 포스팅에서 그 사용법을 알 수가 있었습니다. https://devblogs.microsoft.com/scripting/using-a-tuple-in-powershell/ 간단하게 정리하면 아래와 같이 [System.Tuple] 이라고 써주고 정의하면 되는 것이었습니다. [System.Tuple]::Create("Flintstone.. 2019. 4. 8.
Windows Powershell 탐색기에서 미리보기 설정하기 많은 분들이 많이 사용하고 있을 것 같은데~ Windows 탐색기에는 미리보기 기능이 있습니다. 파일을 열기 전에 미리 보기를 해서 자신이 원하는 파일을 확인하는 방법이죠. 굉장히 많은 파일 내에서 자신이 원하는 컨텐츠가 들어 있는 파일을 눈으로 확인하고 찾고 싶을 때 꼭 필요한 기능이라고 할 수 있습니다. 텍스트 파일을 비롯해서 이미지, 마이크로소프트 오피스 파일등 다양한 파일 형식에 대해서 미리 보기를 할 수가 있는데~ 이상하게 Windows Powershell 파일에 대해서는 미리 보기가 되지 않더군요. 그래서 검색을 조금 해보니 저와 같은 의구심을 가지고 있는 사람들이 많이 있었고 해결 방법 역시도 있었습니다. Powershell 관련 파일 확장자는 ps1, psm1, psd1 이렇게 세 개인데~.. 2019. 3. 25.
Powershell xml parsing Powershell 에서 XML 파일을 파싱하는 경우 아래와 같이 두가지 방법을 사용할 수 있습니다. 첫번째는 System.Xml.XmlDocument 타입을 사용하는 방법이고 두번째는 Select-Xml commandlets 을 사용하는 방법입니다. 1. System.Xml.XmlDocument 을 사용하는 방법 [xml]$cn = Get-Content "XML_PATH" $links = $cn.SelectNodes('//linkedResources/link') 2. Select-Xml 을 사용하는 방법 $links2 = Select-Xml -path "XML_PATH" -XPath '//linkedResources/link' | Select-Object -ExpandProperty Node Selec.. 2019. 1. 30.
Powershell 을 사용하여 레지스트리 값 변경하기 아래 포스팅에서 소개한 바와 같이 Windows 10 을 사용하면서 다양한 레지스트리의 값을 수정해야 하는 경우가 종종 있었습니다. http://iamaman.tistory.com/2610 http://iamaman.tistory.com/2591 이런 경우에 보통 regedit 명령을 통해 레지스트리 편집기를 실행하고 일일이 해당 키를 찾은 후에 값을 변경해 줘야 했습니다. 그런데 이런 방법은 사람이 일일이 확인하는 것이기 때문에 실수의 여지가 있고~ 변경해야 할 레지스트리가 많은 경우에는 불편한 것이 사실입니다. 레지스트리 변경 작업이 많다면 Powershell 을 통해서 자동화 하는게 좋을 것입니다. Powershell 을 통해 레지스트리를 변경하기 위해서는 관리자권한으로 파워쉘을 실행해야 합니다. .. 2018. 10. 7.
Powershell 을 사용하여 COM(Component Object Model) 에서 사용가능한 함수 및 속성 알아내는 방법 기존에 저는 파이썬에서 selenium 을 사용하여 제가 필요한 웹관련 자동화를 해 왔습니다. 제 블로그에 일주일에 한 번씩 올라가는 로또 관련한 포스팅이나 매일 하고 있는 종목 검색 포스팅 등은 파이썬을 사용하여 Tistory Open API 로 포스팅이 되고 있습니다. 최근에 아래 포스팅에서 Autohotkey 에서 selenium 사용에 대해 소개 한 적이 있었는데, 파이썬에서 사용하던 method 이름과 조금 다르더군요. http://iamaman.tistory.com/2021 그래서 오늘은 COM 객체 사용시 사용 가능한 함수 및 속성을 알아내는 방법에 대해서 소개하려합니다. 현재 자신의 컴퓨터에서 사용 가능한 COM 객체를 알고 싶은 분들은 아래 주소의 글을 참조해 보시기 바랍니다. http:.. 2018. 5. 7.
Powershell 을 사용하여 낮은 해상도 드라마 지우기 Windows 에서 파일을 관리 하는 경우 Powershell 을 사용하면 매우 편리합니다. 대부분의 파일 작업은 반복되는 작업인 경우가 많습니다. 이런 작업들을 Powershell 스크립트로 한번 작성 해 놓고 반복해서 사용한다면 매우 편리 할 것입니다.요즘 많은 분들이 컴퓨터를 사용하여 드라마를 다운로드 받아서 볼 텐데 동일한 드라마에 대한 여러 해상도의 파일을 다운로드 받는 경우가 종종 있습니다. 이런 경우 저는 낮은 해상도의 파일은 지웁니다. 아래는 중복된 파일이 있는 경우의 예입니다. E06 회차의 드라마에 대해 1080p, 720p 의 드라마가 중복되는 것을 확인 할 수 있습니다. 이런 경우 저는 높은 해상도의 파일은 남겨 놓고 낮은 해상도의 파일은 지웁니다.[tvN] 나의 아저씨.E06.18.. 2018. 4. 30.
Powershell 에서 C# 으로 만들어진 DLL 사용하기 이전 포스팅에서 C# 으로 만들어진 DLL 을 Autohotkey 에서 사용하는 방법에 대해 알아 봤는데요. http://iamaman.tistory.com/2042오늘은 C# 으로 만들어진 DLL을 Powershell 에서 사용하는 방법에 대해 알아보려 합니다. 예제를 위한 C# 코드는 아래와 같습니다. 위 포스팅에서의 예제와 다른 점이라면 static 함수가 있다는 겁니다. -test.cs- using System;namespace myDLL{public class Calculator{public static int Sub(int a, int b){return a - b;}public int Add(int a, int b){return a + b;}public int increase(int var){.. 2017. 12. 28.
Powershell utf8 with/without BOM 파일 저장 아래 포스팅에서 Find and Replace tool 에 대해 소개한 적이 있습니다. http://iamaman.tistory.com/1579 폴더내의 텍스트들에 대해 찾기 바꾸기를 편리하게 할 수 있는 프로그램인데 코드 수저이 많이 사용하곤 합니다. 그런데 최근에 UTF8 파일에 대해 Find and Replace tool 을 적용하는 과정에서 약간의 문제가 있었습니다. utf8 without BOM 으로 되어 있는 파일이었는데 Find and Replace tool 을 사용하여 파일을 변경하니 엉망으로 변하더군요. 다행히 백업 본이 있어서 복구 할 수 있었지만 백업본이 없었다면 정말 큰 문제가 발생할 번 했습니다. utf8 without BOM 으로 된 파일들이 많아서 일일이 변경하기엔 문제가 있다.. 2017. 7. 27.
Powershell v5.0 설치 Powershell 사용시 ConvertFrom-String 이라는 명령어가 있습니다. ConvertFrom-String 은 String 열로부터 규격 화된 객체를 얻어 내는 명령어 입니다. 현재 제 Windows 는 윈도우 7 이고 기본으로 들어 있는 Powershell 은 2.0 버전이더군요. Powershell 버전은 아래 명령어를 통해 확인 할 수 있습니다. PS C:\> $host.version ConvertFrom-String 은 v5.0 이상에 들어있는 것 같습니다. 그래서 아래 주소에서 v5.0 버전을 다운로드 받았습니다. https://www.microsoft.com/en-us/download/details.aspx?id=50395 제 컴퓨터는 Windows 7 64 비트라서 다운로드 버.. 2017. 2. 19.
Powershell 지난 주 이전의 파일 지우기 Powershell을 사용하여 파일 관리를 하면 여러모로 편리한 것들이 많이 있습니다. 오늘은 지지난주 이전의 특정 파일들을 지우는 스크립트를 작성해 볼까 합니다. 저는 특정 메모들을 다음과 같이 D:\MEMO_JKD.txt 라는 형태로 저장하곤 합니다. 그리고 하루에 한번씩 이 MEMO.txt 파일을 날짜를 붙여서 20170210_MEMO.txt 와 같이 백업해 놓습니다. 시간이 지나면 지날 수록 해당 메모 파일들은 양이 계속 늘어 나겠죠. 그래서 이주 정도가 지난 메모 파일은 지우곤 합니다. 이러한 경우 다음과 같이 Powershell 스크립트를 작성해서 사용 할 수 있습니다. $dayofweek = [int](Get-Date).DayOfWeek $weekAgoDate=(Get-Date).AddDay.. 2017. 2. 18.
Powershell 사용하여 Symbolic link 를 만드는 방법 보통 Symbolic link 를 만드는 경우 mklink 라는 명령어를 사용하곤 한다. 하지만 Powershell 에서는 mklink 명령어를 사용 할 수 없다. Powershell 사용하여 Symbolic link 를 만드는 방법은 아래 모듈을 사용한다. http://zduck.com/2013/mklink-powershell-module/ 아래와 같이 사용 할 수 있다. New-Symlink 링크 대상 2017. 2. 10.
Powershell 에서 문자에 대한 ascii 값 확인 A~Z 리스트 구하기 Powershell 에서 다음과 같이 char에 대한 ascii 값을 확인 할 수 있습니다. PS C:\Users\kdjang> [byte][char]'a' 97 PS C:\Users\kdjang> [byte][char]'z' 122 PS C:\Users\kdjang> [byte][char]'A' 65 PS C:\Users\kdjang> [byte][char]'Z' 90 위 값을 사용하면 a~z, A~Z 에 대란 리스트를 간단하게 만들 수 있겠죠~ $UpperAlph=@() 65..90|foreach-object{$UpperAlph+=[char]$_} $UpperAlph $LowerAlph=@() 97..122|foreach-object{$LowerAlph+=[char]$_} $LowerAlph 2016. 10. 18.
Powershell 빈폴더 삭제 script Windows 에서 폴더 및 파일 관리시 비어 있는 폴더를 삭제 하고 싶은 경우가 있습니다. 그래서 저는 간단하게 빈폴더를 삭제하는 Powershell script 를 만들어서 사용하곤 합니다. 아래 소개한 powershell profile 에 작성해서 사용하면 조금더 편리하게 사용 할 수 있습니다. http://iamaman.tistory.com/1017 스크립트는 아래와 같습니다. 그냥 하위 폴더는 그냥 두고 현재 폴더만 확인하고 싶은 경우와 빈 폴더만 확인하고 싶은 경우를 위해 recurse 와 Delete 를 옵션으로 줬습니다. function emptyFolderFind { param ( $folder, [Switch]$Recurse, [Switch]$Delete ) if($Recurse) { .. 2016. 10. 17.
Powershell 에서 Outlook 으로 메일 보내기 오늘은 아래 포스팅에 이어서 powershell 을 이용하여 아웃룩에서 메일 보내는 방법에 대해 알아보려 합니다. http://iamaman.tistory.com/1638 보통 회사에서 Microsoft Office 를 많이들 사용 하실 겁니다. Powershell 에서는 Com Object 를 사용 할 수 있고~ Com object 를 사용하면 MS office 제품군에 대한 자동화가 가능 합니다. 따라서 outlook 도 자동화가 됩니다. 아래와 같이 간단하게 메일을 보낼 수 있습니다. $textv =@" 메일 테스트 메일 잘 가나요? "@ $subject = "서버의 업데이트가 안 되었습니다." $obj = New-Object -ComObject Outlook.Application $newMail .. 2016. 3. 6.
Powershell 를 활용한 Network Drive 찾기 Powershell 를 사용하여 드라이브를 다룰 때 Network Drive 를 다뤄야 하는 경우가 있습니다. 오늘은 Network Drive 가 특정 문자로 Mapping 이 되어 있을 때 ProviderName 을 찾는 방법에 대해 간단히 소개해 보려 합니다. Powershell 에서 특정 드라이브의 형태를 알고 싶을 때는 Get-WmiObject Win32_LogicalDisk 라는 명령어를 사용합니다. https://msdn.microsoft.com/en-us/library/windows/desktop/aa394173(v=vs.85).aspx 위 주소의 Win32_LogicalDisk 에 대한 매뉴얼을 확인 하시면 네트워크 드라이브는 DriveType 값이 4 라는 것을 확인 할 수 있습니다. 일.. 2016. 2. 16.
Powershell 매월 X 째 주 Y요일 찾기 일을 진행한다 보면 매월 X 째 주 Y요일에 어떤 일을 처리해야 하는 경우가 있습니다. 이런 스케줄을 처리 할 때 당연히 이에 대해 계산하는 함수 등이 필요 할 겁니다. 오늘은 Powershell 을 사용하여 위에 얘기한 매월 X 째 주 Y요일을 찾아볼까 합니다. 고맙게도 아래 주소에 Powershell을 사용하여 매월 X 째 주 Y요일을 찾는 Get-WeekDayInMonth 라는 함수가 작성되 있더군요. http://blog.tyang.org/2012/09/03/powershell-function-get-weekdayinmonth/ Function Get-WeekDayInMonth ([int]$Month, [int]$year, [int]$WeekNumber, [int]$WeekDay) { $First.. 2016. 1. 19.
Powershell 에서 exe 실행 시 끝날 때 까지 기다리게 하기 Powershell 에서 다른 프로세스 실행시 일반 적인 경우 프로그램 실행 후에 powershell 의 다음 라인을 실행하게 됩니다. 하지만 경우에 따라서는 실행된 프로그램이 끝나고 powershell 의 다음 라인이 실행되어야 하는 경우가 있습니다. 이런 경우에는 다음과 같이 처리 하면 됩니다. | Out-NullOr Start-Process -Wait 첫번째 방법 보다는 Start-Process 를 사용하는 게 더 정석적인 방법으로 보이네요. 2016. 1. 4.
Powershell, Depth 에 따른 아이템 검색 Powershell 의 Get-ChildItem 을 사용하여 파일 또는 폴더의 리스트를 얻을 때 해당 폴더 하위의 끝까지 검색을 하고자 할때는 –recurse 라는 옵션을 사용합니다. 그런데 특정 depth 까지만 검색을 하고자 하는 경우 \* 와 같은 키워드를 사용하기도 하지만 Get-ChildItemToDepth 라는 함수가 아래 주소에 있어서 소개하고자 합니다. http://www.indented.co.uk/2010/01/22/limit-recursion-depth-with-get-childitem/ 코드는 다음과 같습니다. 특정 폴더 이하의 D:\ 의 2 depth 까지 검색하는 방법은 다음과 같습니다. get-childitemtodepth -Path "D:\*" -ToDepth 2 2015. 8. 5.
Powershell 을 이용한 소스코드 라인 수 세기 리눅스 등에서는 wc –ㅣ 명령을 통해 라인수를 세지만 Powershell 에서는 아래 명령으로 동일한 명령이 가능하다. 아래 명령은 현재 폴더 하위의 C 소스코드 및 헤더 파일의 라인수를 세는 스크립트이다. Get-ChildItem .\* -Include *.c, *.h -Recurse | Get-Content | Measure-Object –Line Measure-Object –Line 명령은 자동으로 공백을 제외하고 라인수를 세서 결과를 내 준다. 다음과 같이 profile.ps1 파일에 함수의 형태로 구성해서 사용하는게 편할 것이다. function sourceLineCH { Get-ChildItem .\* -Include *.c, *.h -Recurse | Get-Content | Measure.. 2015. 5. 19.
Powershell 에서 7z명령어 사용하기 Powershell 에서 7z 을 사용할 때 7z.exe 명령어를 사용하면 정상적으로 동작을 하지 않는다. 따라서 다음과 같이 Powershell Profile 에 alias 을 설정하여 사용한다. powershell profile 파일의 위치에 대한 확인 방법은 아래 글을 참조한다. http://iamaman.tistory.com/1017 나는 보통 powershell 에서 아래 명령어를 통해 profile 을 설정한다. 아래 명령어를 실행해서 profile 이 없다면 새로 만들겠냐는 메시지가 나온다. notepad $profile.CurrentUserAllHosts powershell profile 에 다음과 같이 설정한다. 아래 명령어는 sz 라는 alias 로 만든 것이다. set-alias sz.. 2015. 5. 5.
효율적인 Powershell 코딩을 위한 Powershell IDE, Powershell Plus 윈도우 Powershell 코딩을 하면서 약간 아쉬웠던 부분이 바로 IDE 인데요 윈도우에는 Powershell 과 Powershell IDE 가 있는데 윈도우 Powershell IDE 의 경우엔 코딩을 하기에 약간 불편한 감이 있더군요. Auto Complete 기능이나 자동 Formatting 과 같은 기능들이 아쉬운 부분이었습니다. 보통 저는 윈도우에서 Powershell 코딩을 할대는 Notepad++ 와 같은 에디터들을 사용하곤 했는데~ Notepad++의 Plugin들도 약간씩 아쉬운 감이 있더군요. 그래서 인터넷을 검색해 봤습니다. Powershell IDE 프로그램 중에 Freeware 인 프로그램을 찾아보니 Powershell Plus가 나오더군요. Powershell Plus 는 아래.. 2014. 4. 10.
Powershell 현재 스크립트 파일의 디렉터리 Powershell 에서 현재 스크립트 파일의 디렉터리의 path 를 구하는 방법은 아래 코드와 같다. function Get-ScriptDirectory { $Invocation = (Get-Variable MyInvocation -Scope 1).Value Split-Path $Invocation.MyCommand.Path } Get-ScriptDirectory 함수를 profile 함수 등에 저장해 놓고 사용하거나 해당 스크립트의 상단에 정의해 놓고 사용 가능하다. 다음과 같이 사용하면 현재 Powershell 스크리브 파일의 path 가 나온다. function Get-ScriptDirectory { $Invocation = (Get-Variable MyInvocation -Scope 1).Val.. 2014. 1. 20.