# PowerShell

[PowerShell] 특정 문자열이 있는 모든 파일 목록 뽑아내기
2가지 방법 참고: 테스트 데이터 테스트를 간편하게 해보고 싶으신 분들을 위해서 테스트 파일 생성법도 알려드립니다!
Invoke-WebRequest Vs Invoke-RestMethod
Powershell에는 HTTP/REST 호출을 수행하기 위한 Invoke-WebRequest 및 Invoke-RestMethod cmdlet이 있다. Invoke-WebRequest 이 cmdlet은 PowerShell 3.0에서 도입되었고 HTTP, HTTPS, FTP 및 FILE 요청을 웹 페이지 또는 웹 서비스로 보내고 응답으로 링크, 이미지 및 기타 HTML 요소 컬렉션을 반환한다. REST API 호출, 웹 호출 및 리소스를 다루는 모든 일반적인 HTTP 동사를 지원하고 응답에는 헤더, 상태 코드 및 응답 내용이 포함된다. Invoke-RestMethod 이 cmdlet도 PowerShell 3.0에서 도입되었고 HTTP 및 HTTPS 요청을 REST(Representational State Transfer) 웹 서비스로 보낸다. Invoke-RestMethod는 일부 자동 변환을 수행하는데 예를 들어 API가 JSON을 반환하는 경우 Invoke-R
Windows Terminal 단축키 및 TIP
📌 단축키 창 분할 세로 창 분할 : alt + shift + + 가로 창 분할 : alt + shift + - 분할창 포커스 이동 : alt + `` 분할창 크기 조정 : alt + shift + `` 분할 창 닫기: ctrl + shift + w 탭 관리 새로운 탭 열기: ctrl + shift + t 탭 닫기: ctrl + shift + w 다른 탭으로 이동: ctrl + tab 모든 탭 닫기(= 종료) : alt + f4 문자열 문자열 검색: ctrl + shift + f 모든 텍스트 선택: ctrl + shift + a 현재 입련한 프롬트 텍스트 전체 선택 : ctrl + a 문자열 복사 : ctrl + c 문자열 붙여넣기 : ctrl +

Windows Terminal, Powershell 설치 및 세팅
저의 개인적인 취향이 들어간 세팅법입니다. 감안해서 봐주시길 바랍니다. 1. Windows Terminal 설치 윈도우 운영체제에서 CLI 툴을 사용할 때는 Window Terminal 사용을 강력히 추천드립니다. Window Terminal 다운로드 페이지로 들어가서 앱을 다운로드 받습니다. 2. PowerShell 설치 Windows PowerShell 를 관리자 권한으로 실행합니다. >[PowerShell 공식 사이트](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powers

PowerShell Prompt 이쁘게 바꾸기 (+ 입출력 인코딩 변경)
불편한 기본 Prompt (Window) PowerShell 을 처음 켰을 때 보이는 working directory 경로는 그 길이가 길어짐에 따라 입력 커서가 지나치게 오른쪽에 치우쳐집니다. 처음에는 참을 만하지만, 점점 개발을 하다보면 이게 상당히 꼴보기 싫습니다. > 출처: https://croccifix.io/configuring-the-powershell-prompt 이런 못생긴(?) prompt 가 아닌 자신만의 Custom Prompt 를 적용하기 위한 방법을 공유하려고 합니다. 지금부터 그 방법을 알아보죠. Prompt 수정 방법 생각보다 방법은 간단합니다. Custom Prompt 내용이 담긴 profile.ps1 이

AWS Lambda에서 PowerShell 사용하기
개발환경 > Dotnet7, AWS Console, MacOS 1. IAM 생성 AWS 웹콘솔 - 역할 - 역햘 생성 AWS 서비스 선택 일반 사용 사례 - Lambda 선택 권한은 AWSLambdaRole 선택 AWS 웹콘솔 - 사용자 - 사용자 생성 AWS Management Console에 대한 사용자 액세스 권한 제공 선택 IAM 사용자를 생성하고 싶음 선택 자동 생성된 암호 선택 직접 정책 연결 체크하고 AWSLambda_FullAccess 콘솔로그인 URL, 사용자 이름, 콘솔 암호는 안전한 곳에 저장한다. 2. 액세스 키 생성 AWS 웹콘솔 - 사용자 리스트에서 생성한 사용자 선택 액세스 키 만들기 클릭 Command Line Interface(CLI) 선택 태그값은 원하는 값 입력 (ex. clilambdaaccess) 생성된 일반키와 비밀키를 안전한 곳에 저장한다. 3. AWS Powershell 모듈 설치 4. A

Powershell 환경에서 발생한 yarn 보안 이슈
얼마전 윈도우 노트북을 하나 구매하였습니다. 여러가지 환경을 세팅해주고 있는데, Powershell을 통해 yarn을 설치하려고 하니 에러가 뜨네요 💣💣 현상 👉 Yarn Install npm을 통해 yarn을 설치했습니다. yarn 명령어를 수행하였는데 아래와 같은 오류가 발생했습니다. 원인 Windows PowerShell의 실행 정책이 "Restricted"로 설정되어 있어 발생하였습니다. 👉 PowerShell 실행정책 참고 : Po
PSCustomObject
PSCustomObject(사용자 지정 개체)를 사용하면 구조화된 데이터를 만들수 있다. PSCustomObject 생성 PowerShell에서 HashTable은 키/값을 가진 컬렉션이다. 이 HashTable 생성 후 출력하면 Name과 Value가 컬럼의 헤더로 출력된다. HashTable을 이용해 PSCustomObject를 만드는 방법은 다음과 같다. 위 PSCustomObject를 출력하면 HashTable과 결과가 다르게 출력되고 Name과 Value라는 컬럼이 없고 키가 컬럼의 헤더로 출력된다. HashTable의 선언돠 동시에 PSCustomObject를 생성할 수도 있다. PSCustomObject 접근 HashTable에서 값에 접근하기 위해서는 키를 제공한다. 하지만 PSCustomObject는 일반 개체처럼 속성에 액세스하고 값을 가지고 오고 속성 이름에는 문자열도 사용할 수 있다. PSCustomObject 속성
HashTable
HashTable HashTable은 키/값의 저장소이다. PowerShell에서 해시테이블을 만들기 위해서는 중괄호를 사용해 @{ } 처럼 정의한다. 해시테이블에 키/값 추가 해시테이블에 키와 값을 추가하기 위한 여러가지 방법이 있다. Add 메서드 이용 해시테이블 생성시 키/값 추가 해시테이블 생성시 인라인 방법으로 키/값 추가 속성명을 이용해 키/값 추가 위 스크립트의 결과를 보면 해시테이블의 값을 추가했는데 추가한 순서대로 해시테이블에 저장되지 않는것을 알 수 있다. 추가 순서대로 해시테이블에 저장하기 위해서는 다음과 같이 한다. 해시테이블 액세스 해시테이블에서 값을 가져오기 위해서는 대괄호를 사용해 조회한다. 일반적으로 해시 테이블은 키 하나를 제공하여 값 하나를 얻는 키/값 쌍으로 간주되지만 PowerShell을 사용하면 여러 값을 가져오는 키 배열을 제공할 수 있다. 해시테이블 반복 해시테이블의 키를 열
Quoting Rules
따옴표는 문자열을 지정하는 데 사용된다. 문자열을 작은따옴표 또는 큰따옴표로 묶을 수 있는데 두개의 사용법의 차이는 다음과 같다. 작은따옴표: 감싸진 문자열은 변화 없이 그대로 출력 큰따옴표: 변수가 실제 값으로 치환된 후 출력 역따옴표 `를 사용하여 큰따옴표를 이스케이프 처리 `(백틱)은 PowerShell에서 이스케이프 문자로 작동한다. 문자열이나 스크립트에서 큰따옴표를 이스케이프 처리하는 데 사용할 수 있다. 또는 작은따옴표를 사용해서 큰따옴표를 이스케이스 할 수 있다. 작은따옴표를 이스케이프하려면 큰따옴표 "" 사용 문자열을 큰따옴표로 묶어 작은따옴표를 이스케이프할 수 있다. 큰따옴표 사용한 Foreach-Object 속성 출력 파이프라인으로 전달된 Array 개체를 Foreach-Object cmdlet을 사용하면 각 개체에 대해 특정 작업을 실행할 수 있다. $_ 를 사용하면 Foreach-Object 내에서 각 개체의 속성에
ExpandProperty
Select-Object PowerShell Select-Object cmdlet은 파일프라인을 통해 개체의 속성을 선택해 사용자 지정 개체를 만들 수 있다. Select-Object 예시 Get-Service cmdlet을 실행하여 시스템의 모든 서비스 목록을 가져오고 출력을 파이프라인으로 전달하고 Select-Object cmdlet으로 하여 각 서비스 개체의 이름 속성만 선택하고 표시한다. 다음은 -first 스위치를 사용해 반환할 개체의 수를 제한한다. ExpandProperty ExpandProperty는 속성을 지정하고 해당 속성의 확장 및 값을 출력한다. 속성이 배열이면 배열의 각 값을 출력한다. 속성이 개체이면 개체의 속성이 확장된다. 지정 속성이 배열인 경우의 ExpandPropery Get-Service cmdlet을 실행하면 시스템의 모든 목록이 배열이고 ExpandProperty를 사용해 Name을 출력하고
Parameter
Powershell Parameter Powershell에서 함수의 parameter를 설정하려면 param 키워드 블록을 사용한다. 위 코드는 parameter $word에 넘겨진 값을 그대로 출력해준다. 즉, 매개변수에 전달된 값이 없을 경우는 빈 문자열을 출력한다. 매개변수의 값을 필수로 전달하기 위해서는 필수 매개변수라는 속성을 지정해 주어야 한다. Parameter 특성 사용 Parameter 특성은 다양한 방식으로 매개변수의 동작을 변경한다. mandatory 속성 Mandatory 속성은 매개변수의 사용을 강제하는 기능이다. 매개변수 없이 함수를 실행하면 값이 입력될 때까지 실행이 중단된다. Position 속성 Posision 속성은 매개변수의 위치를 제어하는 기능이다. ParameterSetName ParameterSetName은 함수 호출시 서로 다른 매개변수를 지정하는 것이다. 즉, 매개변수가 서로 상호

CmdletBinding 특성
cmdlet cmdlet은 Powershell에서 명령을 실행하기 위한 동사-명사로 표현되는 명령어이다. cmdlet은 .net framework로 개발된 명령어이며 .net framework의 클래스 인스턴스로 System.Management.Automation.Cmdlet, System.Management.Automation.PSCmdlet 클래스에서 파생한다. Powershell에서 다음 명령어를 실행하면 기본 제공되는 cmdlet을 확인할 수 있다. Powershell에서 CmdletBinding 특성을 사용하면 이런 cmdlet 기능을 상속하여 고급 기능으로 작성할 수 있다. CmdletBinding 특성 다음은 CmdletBinding 특성에서 사용할 수 있는 구문이다. 단순히 CmdletBinding 특성을 사용하면 cmdlet 기능 및 매개변수에 액세스할 수 있다.  1) get-help Get-Process 2) Help Get-Process 3) Get-Process -? 2. Get-command (명령어 목록) 1) get-command -type Cmdlet // cmdlet 타입의 명령만 볼 수 있음 2) get-help get-service // get-service 명령어의 도움말 3) Get-Module // 사용 가능한 모듈 목록 표시 3. 출력 형식 1) Format-Wide // 기본 형식 출력 1-1) Get-Process | Format-Wide // 2행 출력 1-2) Get-Process | Format-Wide -column 4 // 4행 출력 2) Format-Li

[PostGIS] Powershell 로 postgis/postgis image 기반의 container 설정 및 생성하는 법
참고(1): Window 10 환경에서 powershell 로 명령어를 입력해서 세팅하는 방법입니다. > 참고(2): powershell 은 될 수 있으면 관리자 권한으로 실행시켜주시기 바랍니다! 최초 image, container 생성 위 명령어가 하는 작업은 아래와 같습니다. Desktop 경로(= 컴퓨터 켰을 때의 보이는 화면의 경로)에 임시 폴더 생성(postgis_install) 해당 폴더 경로로 이동 postgis/postgis docker image pull Dockerfile 을 활용할 공간을 생성(= 폴더 생성) 폴더 내로 경로 이동 Dockerfile 생성 및 작성, 내용은 대략 아래와 같음 Locale 이 ko_KR 로 되도록 설정 TZ(= Time Zone) 을 한국의 시간대로 맞춰줍니다. postgis container 에 extension_change.sql 파

postgresql (또는 postgis/postgis) docker image 에 Locale=ko_KR.UTF-8 설정하기
Window 환경에서 작업한 내용임을 감안하시기 바랍니다. > 그리고 여기서는 postgis/postgis 컨테이너를 생성하지만, > postgres 컨테이너로 생성하셔도 똑같이 작업하면 됩니다. Locale 설정 한국어 Locale 설정을 위해서 아래와 같이 Dockerfile 을 생성 및 build 를 해야합니다. Powershell 을 켜고 아래처럼 입력합니다. <!-- docker exec -it OfficalPostis_KO psql -U postgres -c '\dx' (option 이지만, 그냥 하는 걸 추천) 쓸데 없는 extension 지우기 docker exec -it OfficalPostisKO psql -U postgres -c 'DROP EXTENSION IF EXISTS postgistiger_geocoder' (option) raster extension 추가하기 docker exec -it O

Powershell 에서 mvn archetype:generate 명령어 사용시 유의사항
참고: https://github.com/open-archetypes/tycho-eclipse-plugin-archetype/issues/20 >결론 : - 앞에 백틱( \` ) 을 넣어야 합니다. maven 공식 문서 에서는 maven 프로젝트를 빠르게 만드는 법을 알려주는데요, 이 문서에서는 아래와 같은 명령어를 사용하도록 제시합니다. mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false 하지만 이 방식을 powershell 에서 -D 로 준 인자값들이 무시됩
우분투 외부에서 SSH 접속 ([Error] Password denied)
다른 서버에서 접속하여 파일을 주고받고자 할 때, 제 1 서버를 Docker 접속 우분투, 제 2 서버를 ssh를 통한 우분투 접속이라 하자. 이미 컨테이너를 만들었다면 vi /etc/ssh/sshd_config vi를 통해 두가지 설정을 변경해주어야 한다. i를 눌러 -INSERT-가 가능한 상태로 만들고 (1) PermitRootLogin yes (Row:33) (2) PubkeyAuthentication yes (Row:38) esc 후 :wq 입력하여 저장하고 나온다. 제 1 서버 접속 하이퍼바이저 위에서 돌아가는 경우 powershell 터미널을 통해 작업한다. 다음 명령어를 순차적으로 입력해준다. 제 2 서버 접속 mobaxterm 실행 session->ssh를 클릭 ![](https://velog.velcdn.com/images/roadtofuture/post/cc7f2f12-2069-43