파일 이름 일괄 변경
① 특정 디렉토리 대상
Get-ChildItem -Filter *.png | Rename-Item -NewName { $_.Name -replace 'image',"img"}
|
cs |
해석 : 확장자가 png 파일이라면 "image"라는 이름을 "img"로 모두 바꾼다.
② 모든 하위 디렉토리 대상
Get-ChildItem -r | Rename-Item -NewName { $_.Name -replace '-(\d)\.','-0$1.'}
|
cs |
해석 : 현재 디렉토리에 존재하는 모든 하위 디렉토리를 대상으로
파일 이름중에 -(Dash) 뒤에 숫자가 나오고 .이 있으면 그 숫자 앞에 0을 추가 시킨다.
예시 abcd-1.txt , abcd-2.txt , abcd-3.txt → abcd-01.txt , abcd-02.txt , abcd-03.txt
파일명 변경(순차적으로 변경)
$nr = 1
$Path = 'C:\Users\Administrator\Desktop\*.txt'
Dir -Path $Path | %.txt' -f $nr++)}
|
cs |
- 모든 텍스트 파일의 이름을 다음과 같이 변경한다. { 안녕1.txt , 안녕2.txt ... }
파일 크기가 10KB 미만인 파일들만 가져오기
Get-ChildItem -Path $file_path | Where-Object -FilterScript { $_.Length -lt 10KB }
|
cs |
파일 합치기
① 현재 경로의 모든 텍스트 파일
모든 txt 파일을 통합파일에 합친다. (txt를 합친 후에 변경하는 이유는 *.txt 루핑방지)
|
type *.txt > 통합
ren 통합 통합.txt
|
cs |
② 지정한 파일
$Files = @('C:\abc1234.txt','C:\abc5678.txt')
$Combine_File = 'C:\result.txt'
Get-Content $Files | Out-File $Save_Path -NoClobber -Encoding utf8
# NoClobber - 덮어쓰지 않겠다
|
cs |
다수의 폴더 생성
|
mkdir $(1..10 | %{"dir$_"})
|
cs |
해석 : 폴더 (dir1 ~ dir10) 생성
dir HKCU:, HKLM: -recurse -include PowerShell -ErrorAction SilentlyContinue
|
cs |
레지스트리의 HKCU, HKLM 의 하위폴더(-recurse)에서
Powershell 글자를 포함한(-include) 레지스트리 키를 검색하기..
단 빨간색으로 나타나는 에러사인은 무시하기 (-ErrorAction SilentlyContinue)
① 내용을 찾은뒤 해당 파일에 검색된 내용에 행을 출력한다.
dir -Path . -Include *.txt -Recurse | Select-String "abc"
|
cs |
dir -Path . -Include *.txt -Recurse | %{$tmp = Get-Content $_; $tmp=$tmp -Replace ("nice","OLLEH"); Set-Content $_ $tmp}
|
cs |
1. 현재경로에 "abc"라는 문자가 들어간 텍스트 파일 및 내용을 모두 조회한다.
2. 위 텍스트 파일을 조회하여 nice라는 문자가 들어간 단어는 모두 OLLEH로 변경한다.
② 검색 내용이 존재하는 경우 해당 파일의 경로를 얻는다.
$Path = 'C:\Users\Administrator\Desktop'
gci -r -Path $Path -Filter "*.*" | select-string -Encoding Default "찾는 텍스트"| group path | select name
|
cs |
※ result
C:\Users\Administrator\Desktop\파일1.txt
C:\Users\Administrator\Desktop\파일2.exe
C:\Users\Administrator\Desktop\사진파일.jpg
문자열 맨 앞에 행번호 삽입
$str = @('abc123','cba123','qwe123')
$result = ''
For($i = 0; $i -lt $str.Length; $i++)
{
# increase
$tmp = [String]([int]$i + 1)+'. '
$str[$i] = $str[$i].insert(0,$tmp)
$str[$i] = $str[$i].insert($str[$i].Length,',')
$result += $str[$i] + "`r`n"
} echo $result
|
cs |
※ result
1. abc123,
2. cba123,
3. qwe123,
유니코드 변경
$files = @(Get-ChildItem -Recurse -Filter '*.ps1' -Path $PATH)
foreach ($file in $files)
{
Echo $file.name
(Get-Content $file.FullName) | Set-Content -Encoding utf8 -Path $file.FullName
}
|
cs |
- 확장자가 ps1 파일이면 Encoding을 UTF-8로 변경한다.
해시값 저장
Dir C:\Users\Administrator\Desktop\ -Recurse | Get-FileHash > c:\Hash.csv
|
cs |
- Powershell 6 부터 사용 가능하다.
두 번 개행(엔터)를 한 번 엔터로 변경
$content = $content -replace "`r`n", "," -replace ",," , "`r`n"
|
cs |
확장자 변경
Get-ChildItem -r -i '*.txt' | Rename-Item -NewName {“$($_.BaseName).ps1”}
|
cs |
- 하위 디렉토리에 존재하는 모든 텍스트 파일의 확장자 명을 .ps1으로 바꾸겠다.
파일 정보 확인
get-itemproperty -Path 'Desktop\analy.exe' | Format-list -Property * -Force
|
cs |
IP 대역 조회
1..255 | %
|
cs |
중복파일 확인
$items = Get-ChildItem -File | Get-FileHash
$item_hash = $items |%{ $_.hash}
$uniq_hash = $item_hash | select –unique
$res = Compare-object –referenceobject $uniq_hash –differenceobject $item_hash
$res = $res.InputObject | select -Unique
foreach ( $hashval in $res ) {
$items | Where-Object hash -eq ( $hashval ) | Select Path
}
해쉬로 파일 찾기
Get-ChildItem -File | Get-FileHash | Where-Object hash -eq ( _hashvalue_ ) | Select Path
curl Bruteforce
# Set-ExecutionPolicy RemoteSigned -Force
[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$dic = Get-Content -Path ".\dictionary.txt"
$num = 1
foreach($password in $dic)
{
echo "$num. $password"
curl.exe -k -s "https://abc.com/app/login.do" -d "&password=$password&settingType=D"
# curl.exe -k -X POST -v --cookie "mycookie=7acx3215gg; WHAX=x73f34vbc" -H "Content-Type: application/json; charset=utf-8" -s "https://test.com/api/test" -d '{\"app_version\":\"1.0.0\",\"app_name\":\"test\"}'
# $ curl -X POST http://localhost:8080/content-type/application-json -H 'Content-Type: application/json' --data-raw '{"string": "string"}'
# @를 활용하면 파일의 내용을 전달할 수 있다. -d @test.json
$num+=1
}
기타
1. 가장 많이 묻는 명령어(왠만한거 다 나온다)
http://powershell-guru.com/faq-powershell-in-korean/
'업무 자동화' 카테고리의 다른 글
python 보안뉴스 스크래핑 (0) | 2019.03.03 |
---|---|
Python 정규표현식 - 특수문자 제거 (2) | 2019.03.03 |
브라우저 항상 시크릿모드로 실행 (0) | 2018.12.01 |
검색확장모드 - 끝단에 문자 삽입 (0) | 2018.12.01 |
파워쉘 정규식 (0) | 2018.03.21 |