이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 11695|회답: 1

PowerShell 시작 튜토리얼 - v0.3 버전

[링크 복사]
게시됨 2017. 4. 19. 오후 4:48:30 | | |


---------- 1장 윈도우 스크립팅 역사 --------------


1 스크립트 박쥐의 1세대. win95, win98--------- 시작해서 2008년경에 끝났습니다. 특징: 문자 중심 명령어, 명령줄과 파이프라인 포함.
2세대 스크립트 VBS입니다. 기능: 함수, 값 전달, 호출만 가능합니다.
3 3세대 스크립트 파워셸. 2012년부터 이 명령은 완전히 객체 지향으로 진화했습니다. 예를 들어, 태스크리스트와 get-프로세스는 반복되는 휠 기능으로, 객체지향적입니다. 이전 두 세대의 문자 장점을 물려받았다.



Q: 왜 PowerShell을 배우나요?
A:
선교사는 1년과 5년간 BAT에서 공부하겠다고 답했다. 간단한 문법과 강력한 라이브러리 기능!
파이프라인 양쪽에서 명령어가 있는 객체를 지원하는 전 세계에서 유일한 곳입니다. 즉, 객체지향 명령어 1 | 객체지향 명령어 2

윈도우와 리눅스는 다릅니다:
윈도우의 PowerShell 스크립트에서,
지원 CR, LF, CRLF가 진입하세요. 멀티스레딩과 다중 프로세스 동시성을 지원합니다.
[Text2 소리], "보고하세요, 캡틴, 디스크가 가득 찼습니다"를 삽입하는 것은 쉽습니다.
그래픽 인터페이스 삽입은 쉽습니다. (팝업 화면에서 사용자 이름, 비밀번호, 싱글 셀렉트, 다중 선택 등을 입력하라고 요청할 때) 이것이 바로 리눅스 스크립트에 대한 질투입니다.

PowerShell은 파이썬과 다릅니다:
PowerShell에서 중국어를 사용하기 쉽습니다. 중국어 문자 이름, 변수 이름, 주석. 중국어 단따옴표, 중국어 이중 따옴표.
GBK, UTF8, 유니코드 인코딩을 자동으로 인식합니다. 파이프라인 지원 객체는 파이썬 스크립트들이 부러워하는 부분입니다.



간단한 문법 예시 1: 파워셸 싱글 및 더블 인용 부호의 마법.
단따옴표는 이중 따옴표로 인용할 수 있습니다. 반대도 마찬가지입니다.
단인따옴표와 복인절부호는 @''로 @引用 수 있습니다.
BAT는 작동하지 않았습니다.


선교사 내레이터:
튜토리얼 디자인에 많은 고민을 했습니다. 내가 쓴 역사 부분이 매우 [단순하고 거칠게]였다는 걸 안 읽었어? 역사는 한 획에 의해 전달된다.
하지만 제가 말했으니 말도 안 되는 게 아니라, 학생들이 win7-win2008 이후로 스크립트의 [대상화]가 인기를 끌었다는 점을 분명히 하고 싶습니다. 객체지향 설명의 다음 장으로 이어집니다.
어떤 PS든 입문 튜토리얼에서는 캐릭터 지향과 객체 지향의 차이를 언급해야 합니다. 이 주제를 명령어 라인의 역사에 자연스럽게 끼워 넣는 것이 적절합니다.

---------- 2장 객체지향의 멋진 --------------
객체란 무엇이며, 왜 객체 지향이며, 왜 마이크로소프트는 휠을 강화하는가?

객체지향 예시 1:
질문: 저는 하루에 사과 2.2개를 먹는데, 17일 동안 몇 개의 사과를 먹어야 하나요?
A:
2.2 x 17 크기도 제공됩니다. 또한 모든 스크립팅 언어에서 지원하는 i++를 사용할 수도 있습니다.
($i = 1)에 대해; $i -18; $i++)
{
        $Apple = 2.2 + $Apple
        write-host $i,$Apple
}

--------------------------------------------
질문이 바뀌는 순간, 며칠은 말하지 않고 말해줄게,
저는 하루에 사과 2.2개를 먹는데, 2017년 1월 20일부터 6월 20일까지 사과를 몇 개나 먹나요?
$days = ((get-date '2017-06-20') - (get-date '2017-01-20')).days #值151


저는 하루에 사과 2.2개를 먹는데, 2020년 1월 20일부터 6월 20일까지 몇 개의 사과를 먹나요?
$days = ((get-date '2020-06-20') - (get-date '2020-01-20')).days #值152

($i=(get-date '2020-01-20')에 대해 $i -lt (날짜 '2020-06-20'); $i=$i.adddays(1))
{
        $Apple = 2.2 + $Apple
        write-host $i,$Apple
}

결론: 날짜 객체를 사용하면 날짜, 시간 등을 세는 것이 간단합니다. [for,,i++]는 흔하지만, 숫자가 날짜 타입일 수 있다는 건 생각해본 적이 없어요.

------------------------------------------



객체지향의 장점은 무엇인가요?
객체지향 이전에는 문자열과 정수만 있었습니다.
1 물체가 있습니다.
----- [캐릭터 유형]-----
글리프에는 system.string이 있는데, 이것이 가장 기본적인 것입니다.
System.Text.StringBuilder 메모리, 자주 변경되고 문자열이 크다

----- [숫자 유형]-----
system.int32, system.int64, system.십진수, system.double, System.Numerics.BigInteger 무한 정수.
일반적으로 사용되는 것은 int32, 십진법입니다.

1/3×3이 1인지 0.9999인지는 데이터 타입에 따라 다릅니다.
----- [배열]-----
system.array 배열
system.arraylist 배열은 자주 변경되며, 예를 들어 항상 다시 쓰거나 덧붙이거나 삭제하는 등 이 기능을 사용해야 합니다. 속도는 비교적 빠릅니다.
System.Collections.Generic.HashSet은 배열을 중복 제거합니다. 파이썬의 세트 오브젝트와 같습니다.

-----【형태】-----
명령 출력. 예를 들어, dir, get-process.
2. 스크립트를 작성할 때는 객체와 속성을 사용하여 구성합니다.

----- [기타] -----
해시 테이블, 파일 등.



2는 속성이 있습니다. 속성은 인수이며 문자열보다 작습니다. 속성이 없기 전에, [뇌를 쓰게 하는 규칙적], 즉 [추론 문자열]으로 문자열을 필터링하고 필터링해야 합니다. 능력치가 있으면 필요 없어요.
3 방법이 있습니다. 방법은 프로그램이고, 코드입니다. 직접 다시 쓸 필요는 없어요. 배트는 확실히 좋지 않아요, 절대 안 돼요, 개인적인 글도 있어서 신뢰할 수 없고, 감히 쓰지 마세요.
메서드는 자체 작성된 ps 함수일 수도 있고, ps클래스 내에서 자체 작성된 메서드일 수도 있습니다.
직접 작성한 메서드는 일시적으로 서드파티 클래스에 [병합]될 수 있습니다.
직접 작성한 메서드는 일시적으로 .net 클래스에 [병합]될 수 있습니다.

객체지향의 단점은 무엇인가요?
설교자는 WinXP를 사용하는 사람들에게 PowerShell을 가르치고 있습니다. 그 사람이 PowerShell이 좋지 않고, 오브젝트가 메모리 집약적이라고 했는데, 그 말이 맞습니다.
cmd에서는 dir로 100개의 파일명(문자열)을 반환합니다. PowerShell에서는 dir를 사용해 100개의 파일 객체를 반환하고, Powershell은 많은 메모리를 사용합니다.
하지만 지금은 다릅니다:
1. 불필요한 내용은 변수에 존재해서는 안 됩니다. 또는 사용 직후 즉시 파기하여 메모리 사용량을 줄이세요.
2. 메모리 드롭만으로도 충분하다. CPU 성능이 더 이상 올라갈 수 없기 때문에, 우리는 공간을 시간과 교환하기 위해 필사적으로 메모리를 늘리고 있습니다.
3. 우리는 더 강력한 기능을 원하며, 요즘 객체 지향은 가장 기본적인 것입니다. 객체지향이 아닌 것, 즉 py, php, java, .net, c++가 아닌 것은 무엇인가요?

요약:
1 객체는 문자열보다 크고 메모리 집약적이다.
2. 객체 지향과 더 강력한 함수를 위한 더 많은 방법이 존재합니다.
3개의 속성은 문자열 세분성보다 작아 매우 편리하게 사용한다. [뇌를 태우는 일반 필터] 줄을 피했어요!


=== 뇌를 태우는 정규 인물들을 미친 듯이 사용해 예시를 필터링하고, 박쥐 버전의 핑 기본 게이트웨이 ===
@echo off&setlocal, enabledelayedexpansion
에코는 기본 게이트웨이를 찾고 있어...

/f "usebackq delims=" %%i in ('ipconfig /all') do (
echo %%i|find /i "게이트웨이">nul|| echo %%i|find "default gateway" >nul
만약 "!errorlevel!"이라면 =="0" (
/f "토큰=2 델림스=:" %%a in ("%%i") /f "델림스= " %%m in ("%%a")를 설정하여 ipgate=%%m
)
)

에코 기본 게이트웨이는 !ipgate!
=========== 기본 gateway.ps1에 핑을 보내세요============
$default gateway = (get-netroute -DestinationPrefix 0.0.0.0/0). 넥스트홉
& ping.exe $ 기본 게이트웨이

# 테스트 연결 $ 기본 게이트웨이
=======================






Q: 객체지향이 아무리 좋다 해도, 이 객체들은 어디서 오는 건가요?
A: .net 라이브러리에서 가져왔습니다.


---------- 3장 .NET -------------- 소개


Q: .NET Core에는 몇 개의 버전 브랜치가 있나요?
A:
현재 세 가지 버전이 있습니다.
.NET 2.0 .NET 3.51의 최신 버전
.NET 4.0 .NET 4.70의 최신 버전
.NET Core 1.x 애플 시스템, 리눅스 시스템, 임베디드 시스템을 위한 최신 .NET 1.2 버전입니다.
.NET Core 2.x 애플 시스템, 리눅스 시스템, 임베디드 시스템을 위한 최신 .NET 2.0 버전입니다.



Q: .net에는 몇 개의 기능적 분기가 있나요?
A:
.NET의 데스크톱 브랜치. 윈폼. 데스크톱 윈도우 개발을 위해서요.
사운드 라이브러리
asp.net .NET과 .NET Core에서 사용합니다. 웹 서버 기능 라이브러리. B/S 웹 서버를 열던 데 사용했습니다.
.NET과 .NET Core에서 F#을 사용하세요. 수학 라이브러리, 삼각함수 함수 라이브러리 등을 포함하고 있습니다.
.NET과 .NET 코어에서의 PowerShell. 스크립트 파일과 같은 일반적인 시스템 관리 인터페이스를 포함하고 있습니다.
리눅스
◦Ubuntu 14.04 \ 16.04
◦CentOS/RHEL 7 이상
◦오픈 SUSE 42 이상
◦Arch Linux (archl inux는 버전 번호가 없습니다)
◦LINUX 도커 컨테이너
◦Linux AppImage 컨테이너(휴대용 애플리케이션 단일 바이너리) https://github.com/probonopd/AppImageKit



MAC OS X
◦OS X 10.11


Q: .NET 프로그램(C# 프로그램)은 어떻게 MySQL 서버에 연결되나요?
A:
.NET 언어용 커넥터를 다운로드하려면 mysql 공식 웹사이트에 가세요.
mysql-connector-net-6.9.9-noinstall.zip--->v4.5--->MySql.Data.dll
.net에 MySql.Data 클래스를 추가하고 데이터베이스 인터페이스를 추가하세요.



결론:
WinXP 머신은 먼저 .NET 3.51, Win7과 Win2008 머신을 설치하고, 먼저 .NET 4.62 이상을 설치하세요.

.net은 오랫동안 존재해 왔으며, 자바만큼 .NET을 지원하는 소프트웨어는 많지 않습니다. 모든 .net 지점, 인터페이스(데이터베이스, 위챗 등)를 포함합니다. )
그 DLL, 라이브러리, PowerShell 같은 것들을 호출할 수 있습니다. C#으로 작성된 exe와 정확히 동일합니다.


Q: .NET 분기 인터페이스 외에 PowerShell 자체 라이브러리(모듈)는 무엇인가요?
A:
다음 장을 참고해 주세요

---------- 4장 PowerShell에서 일반적으로 사용되는 내장 라이브러리, 외부 라이브러리, 서드파티 라이브러리 --------------

선교사 도움:
이 장은 논의할 수 없으며, 단지 도서관과 매뉴얼의 목록일 뿐입니다. 이 장을 즐겨찾기로 표시해 주세요. 이 라이브러리들을 살펴보면 PowerShell이 무엇을 할 수 있는지 알게 될 것입니다.



Win2012 매뉴얼 주소: (가장 일반적으로 사용되는 AD 모듈)
https://technet.microsoft.com/zh-cn/library/dn249523(v=wps.630).aspx
AD 사용자 그룹 관리, DHCP, DNS, 프린터, 파일 공유, IIS, 디스크, NIC



교환2016
https://technet.microsoft.com/zh-cn/library/bb124413.aspx
액티브 디렉터리 12         
스팸 방지 및 악성코드 방지 59  
클라이언트 액세스 100
확장 에이전트 4
이메일 주소 및 주소록 37
연방 및 하이브리드 구성  
높은 가용성  
우편 흐름  
우편함  
메일박스 데이터베이스  
메일박스 서버  
이주와 이주  
조직  
허가  
정책 및 준수  
보안  
서버 건강, 모니터링 및 성능  
공유하고 협력하세요  
통합 메시지  
사용자 및 그룹  



SQLServer2016
https://msdn.microsoft.com/zh-cn/library/hh245198.aspx



LYNC2015
https://technet.microsoft.com/zh-CN/library/gg398867.aspx




SharePoint2016
https://technet.microsoft.com/zh-cn/library/ff678226(v=office.16).aspx



Amazon 가상 머신, AWS, Microsoft 가상 머신, Azure, Hyper-V, VMware vSphere, 그리고 엔터프라이즈급 가상 머신 등이 있습니다.


고객:
서비스, 프로세스, 로그, 레지스트리, 파일 디렉토리, 원격 관리. 시간 제한이 있는 작업들.



인터넷:
FTP, 메일, 리눅스 서버 연결을 위한 SSH 클라이언트 플러그인.


문자 메시지:
XML, HTML, CVS, JSON, EXCEL 등입니다.


텍스트 2 음성


그래픽 인터페이스.


마이크로소프트 스크립팅 센터
https://gallery.technet.microsoft.com/scrip{过滤}tcenter/


PowerShell 소프트웨어 소스 공식 웹사이트 --- 공식 PowerShell 라이브러리.
https://www.powershellgallery.com


다른 Niu x 라이브러리들은 모두 깃허브에 있습니다. 또한 선교사들은 PowerShell의 유용한 서드파티 라이브러리인 [Hidden Foot Pavilion]의 [Niu x Magic Weapon]을 정기적으로 출판합니다.


---------- 5장 초보자는 명령어 사용에 도움을 주는 방법을 배워야 합니다--------------


Q: PowerShell 버전을 어떻게 알 수 있나요?
A:
$PSVersionTable



Q: 모듈을 모르는데, 어떻게 찾나요?
A:
get-module -ListAvailable


Q: 명령어의 일부만 알면 어떻게 찾나요?
A:
get-command *서비스*



Q: 명령어는 알지만, 명령어에 어떤 매개변수가 있는지 모르겠습니다. 매개변수를 어떻게 나열하나요?
A:
get-help write-host -Parameter *
show-command 쓰기-호스트


Q: 파라미터는 알고 있지만, 어떤 명령어가 이 파라미터를 가지고 있는지 모르겠습니다. 어떻게 그 명령을 찾나요?
A:
get-command -ParameterName 인코딩



Q: 명령줄에서 명령어에 대한 도움을 어떻게 받을 수 있나요?
A:
도움-도움-데이트 받기

- 명령 예시
- 온라인 매뉴얼




Q: 명령어의 속성 메서드(객체도 모르겠습니다)를 모릅니다. 어떻게 찾나요?
A:
"ABC" | 회원 가입
날짜 가져오기 | 회원 가입



Q: 중국어 .NET 매뉴얼은 어디에 있나요?
A:
MSDN. 가장 기본적인 문자열 속성과 방법은 매뉴얼에 있습니다.
https://msdn.microsoft.com/zh-cn/library/system.string.aspx



---------- 6장 공통 명령 소개 --------------

가장 먼저 배워야 할 명령은 dir입니다
Q: 왜 cmd dir 대신 powershell dir [즉, Get-ChildItem]을 사용하나요?
A:
객체지향, 강력한 메서드, 그리고 다양한 속성을 갖추고 있습니다.
$file = 감독 A:\pscode\temp183\aaa.txt
$file. 본명 #返回全路径属性
$file. 베이스네임 #返回文件名属性
$file. 확장 #返回扩展名属性
$file. 라스트라이트타임 #返回最后写入时间属性



가장 먼저 배워야 할 문법은 배열 문법입니다. $a = @(xxx 명령어)
Q: 때때로 [문자 기반 외부 명령어]를 사용해 반환 값을 행동 단위별로 배열로 나누어야 할 때가 있습니다.
A:
$a = @(ipconfig)
$a[8] #第9行


get-childitem 사용:
PowerShell 3.0 이상에서 매개변수 추가

get-childitem d:\xxx -file #过滤, 출력 파일만
- 디렉터리 필터링, 디렉터리만 출력
- 숨겨진 필터링, 출력만 숨겨져 있습니다


Q: 파일을 열고, 동작별로 세그먼트를 하거나, 배열에 넣으세요?
A:
$a = Get-Content a:\pscode\temp183\aaa.txt -읽기 횟수 0



Q: 파일을 큰 문자열로 열고 전체 변수를 저장하나요?
A:
$a = Get-Content a:\pscode\temp183\aaa.txt -raw


$a,$b,$c = 1,2,3


Q: 백그라운드에서 명령어를 어떻게 실행하나요?
A:
고대에는 cmd /c "명령어"가 있었습니다.
이제 powershell /c "명령" 또는 powershell -c "명령"이 있습니다.
PowerShell -file "Script.ps1" -argument 1 AAAA -parameter 2 1234
start-process -path xxx.exe -ArgumentList '-parameter1 aaaa -parameter2 1234'


Q: 다른 로컬 사용자와 함께 스크립트를 실행하고 싶은데, PowerShell에는 runa가 없습니다. exe와 비슷한 명령어가 있나요?
A:
PowerShell에는 여러 세션이 있습니다.
IP + 포트 + 사용자 이름 + 비밀번호 = 세션 중 하나, 사용자 이름만 바꾸고 비밀번호만 바꾸면 권한이 변경됩니다. 왜냐하면 권한은 사용자에게 묶여 있기 때문입니다.
마찬가지로, 사용자를 바꾸지 않고 n개의 세션만 생성하면 됩니다.
가장 중요한 new-pssession 매개변수는 -Credential 매개변수를 가지고 있으며, 사용자 비밀번호를 입력하는데, 이는 runas와는 다릅니다. EXE도 같은 건가요? SmbSession이 또 뭐가 있나요?
그래서 PowerShell에서 runas를 꼭 사용할 필요는 없다고 생각합니다. exe.
세션과 Credential 명령어만 사용하면 되는 거죠?

매개변수 이름에 [Credential]이 포함된 명령어를 확인하세요:
get-command -ParameterName Credential

명령어 내 [session] 문자를 사용하는 명령어 보기:
get-command *session*


Q: PowerShell을 사용해 이메일을 어떻게 보내나요?
A:
메일 전송 -제목 '제목'
-"당신의 핫메일 계정 @hotmail.com" -"당신의 QQ 이메일 @qq.com" '
-SmtpServer "smtp.live.com" -포트 587 -useSsl -credential "your hotmail account @hotmail.com" '
-첨부파일 $Attachments -BodyAsHTML -이메일 내용 $HTML

메모:
1가지 용도xxx@QQ.com+ 당신의 QQ 비밀번호 + 위 명령어 이메일 전송이 작동하지 않습니다. QQ 비밀번호의 보안을 위해 텐센트는 독립적인 이메일 비밀번호를 요구하기 때문입니다.  
2 기본적으로 QQ 메일박스에서 보내는 것은 불가능합니다. 꺼져 있고, 설정에서 SMTP를 켜야 합니다.
3 PowerShell 3.0 이상은 포트 파라미터만 지원합니다. 윈도우 7의 경우, 먼저 최신 버전의 PS를 설치해야 합니다




Q: win의 CPU, 디스크, 네트워크, IO 등을 모니터링하세요.
A:
성능 모니터 또는
Get-Counter는 로컬 및 원격 컴퓨터 모두에서 성능 카운터 데이터를 가져옵니다.

Q: 어떤 카운터 아이템이 있는지 어떻게 확인할 수 있나요?
A:
모든 내용은 매뉴얼에 나와 있습니다.
주요 용도 범주를 확인해 보세요:
Get-Counter -ListSet * | 정렬-객체 카운터셋 이름 | Format-Table CounterSetName


예를 들어, 이제 디스크 카테고리가 (PhysicalDisk)임을 알게 되었고, 디스크 내 하위 카테고리를 확인해 다음을 사용하세요:
(get-counter -listSet PhysicalDisk). 경로




Q: 로그는 어떻게 볼 수 있나요?
A:
이벤트 뷰어, 또는
get-eventlog



Q: 현악기를 어떻게 연주하나요?
A:
$cmd 1 = 'xxxx'
인보크-익스프레션 $cmd 1


개별 명령어에 대해 많이 배웠으니, 이제 Powershell 스크립트의 실행을 살펴보겠습니다.


---------- 7장 PS1 스크립팅, 디버깅, 그리고 -------------- 실행
스크립트는 명령어 문들의 조합이자 오버레이입니다. 스크립트는 접착제 같아요, 다른 사람을 찾아 연락하고, 차를 조립할 바퀴를 찾아보세요. 바퀴를 만드는 대신, 다른 사람들이 사용할 수 있게 하는 것.



차이니아오가 물었습니다: 대본을 어떻게 쓰나요?
늙은 새가 대답했다:
1 문제의 세부 사항을 명확히 해야 합니다. 예를 들어: 월병을 만드세요.
2 문제 해결 아이디어도 기본적으로 완성되었습니다. 밀가루와 물, 속을 넣고, 스팀을 넣어.
3 어떤 명령어와 변수를 사용해야 하는지. 알갱이 다섯 개를 넣고 틀에 넣고 짜세요.
4 대략적으로 먼저 쓰세요, 대략적으로 쓰세요.
5 디버깅 통과.
6 자세히 쓰세요. 오류 상황과 오류 코드, 즉 오류 메시지를 고려해 보세요. 호환이 쉽지 않은 오류가 발생하기 쉬운 코드를 제거하세요. 성능이 좋지 않은 코드를 다시 작성하세요.
지금까지 좋은 대본은 보기 좋지 않을 수 있지만, 매우 유용할 것입니다.
7 정교하게 만들어졌다. 리팩토링, 재사용 코드 스니펫을 함수로 작성하는 것. 변수 이름을 다시 써서 사람들이 한눈에 이해할 수 있게 하세요. 코드를 잘 포맷하고 들여쓰기를 하세요.


Q: PS1을 작성할 때 어떤 IDE를 사용하나요?
A:
가장 추천하는 방법은 Visual Studio Code와 PowerShell 플러그인을 함께 사용하는 것입니다.
기능: 코드 프롬프트, 자동완성, 코드 서식, 공백 또는 탭 선택 들여쓰기, 파일 인코딩 설정.
FTP-sync라는 플러그인이 있는데, 윈도우의 VSCode에 PS1 스크립트를 작성하고 저장 시 자동으로 리눅스 디렉터리에 동기화해줍니다.



Q: PS1 디버깅에 어떤 도구들이 사용되나요?
A:
가장 추천되는 파워 Gu이 라이프는 기관차를 사용하지 않아요. 영웅이라도 PS 스크립트가 점프해서 오류를 보고합니다!
VScode도 괜찮습니다



Q: 코드 서식을 위해 어떤 도구를 사용하시나요?
A:
들여쓰기해야 할 모든 것은 들여쓰기로 되어 있고, 같은 기호들은 정렬되어 있습니다.

PowerShell ISE + ISE 플러그인 [ISESteroids]

설치:
Install-Module -Name ISESteroids

ISE 진행:
스타트-스테로이드





Q: 코드 색상을 아름답게 만들기 위해 어떤 도구를 사용하나요?
A:
1 위 도구를 사용해 코드를 포맷하세요.
2 PowerShellise + Missionary DIY 색상 매칭 2016 에디션 사용.
3 사진을 찍어. 세계에서 가장 보기 좋고 아름다운 색상의 PowerShell 코드가 만들어집니다.

위에 언급된 모든 IDE는 중국어로 되어 있습니다.




Q: 대본의 이름을 어떻게 지어야 하나요? xxx.ps1
A:
1---2글자로 시작하고 나머지는 중국어 파일 이름을 사용하는 것이 권장됩니다. 즉, [Bf 백업 후 10일 전 files_ .ps1 삭제]
이렇게 하면 먼저 [bf]를 입력한 뒤, 탭 키를 눌러 스크립트 이름을 완성하세요.




Q: PowerShell 스크립트 실행 권한을 어떻게 활성화하나요?
A:
echo 다음 코드는 관리자 권한으로 명령어를 사용하는 cmd 또는 관리자 권한으로 PowerShell에서 실행할 수 있습니다.
PowerShell 원격 원격 모드를 사용할 때는 echo를 사용하세요. 로컬 머신과 원격 머신 모두 관리자 권한으로 실행되어야 합니다.
"C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -명령어 "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
"C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -명령어 "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
& "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -명령어 "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
& "C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -명령어 "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
잠시 멈춤



Q: 기관차(파워 GUI)의 단점은 무엇인가요?
A:
배경색을 설정할 수 없습니다.




Q: vscode의 단점은 무엇인가요?
A:
$와 변수 이름은 같은 색이 아닙니다.
디버깅 기능은 느리고 때로는 교착 상태가 됩니다.




Q: ISE의 단점은 무엇인가요?
A:
인코딩을 저장하거나 변환하는 것을 선택할 수 없습니다.
[공백]으로 들여쓰기, [탭] 둘 다. 다른 텍스트 편집 소프트웨어에서는 들여쓰기가 표시됩니다.




---------- 8장 실제 전투 훈련 --------------
그룹은 이 부분을 스스로 6504748하고 작곡했습니다.

5. 예시 1: 서비스를 켜고 끄기
6. 예시 2: 제어 방화벽 (열기, 닫기, 규칙)
7. 예시 3: 정책 설정 (예시 비밀번호 정책)



---------- 9장 이 추가 선택 과목들에 관심 있으신가요? --------------
PowerShell 스크립트, 명령줄 인수, 값을 전달하는 예시, 변수 구속
http://www.cnblogs.com/piapia/p/5910255.html




PowerShell이 한 번에 하나의 스크립트만 실행하게 하세요 (프로세스 상호 배제 예시)
http://www.cnblogs.com/piapia/p/5647205.html



파워셸 캐릭터 인터페이스, 파워셸 플러스 WPF 인터페이스, 2048 게임
http://www.cnblogs.com/piapia/p/5531945.html


PowerShell의 두 개의 크롤러
http://www.cnblogs.com/piapia/p/5367556.html



PowerShell 스크립트: 랜덤 비밀번호 생성기
http://www.cnblogs.com/piapia/p/5184114.html



PowerShell 재귀 알고리즘의 예시
http://www.cnblogs.com/piapia/archive/2013/01/29/2881011.html



PowerShell 음성 계산기
http://www.cnblogs.com/piapia/archive/2012/10/20/2731506.html



1 모든 EFS 암호화 파일 목록. 2 모든 EFS 암호화 파일 복호화
http://www.cnblogs.com/piapia/p/4702514.html
이 도구는 시스템 관리자와 네트워크 관리자를 위해 작성된 도구입니다.
직원이 퇴사한 후, 그의 디스크는 10,000개의 파일(디렉터리)이 있다고 가정하며, 이 중 3개의 파일 디렉터리는 EFS로 암호화되어 있습니다. 익스플로러에서는 이 세 개의 파일이 초록색입니다.
하지만 (10,000개의 카탈로그)를 하나씩, 초록색이든 아니든 클릭하면 지칠 것입니다.
이 시점에서 네트워크 관리자는 직원의 WIN 계정을 사용하고, 직원의 PC에 로그인한 후 이 스크립트를 사용해 모든 EFS 암호화 파일을 나열합니다.


---------- 10장 질문을 해주세요--------------
신사숙녀 여러분, 보고할 것이 있으면 아무 말 없이 법정을 떠나십시오.



----------11장 리눅스 챕터--------------

미셔너리: Linux 버전의 PowerShell만 설치할 수 있다면, sh 스크립트는 필요 없어요.
해석:
요약하자면, bash는 명령어나 라이브러리가 없는 구문만 가지고 있습니다.
2 Bash는 문법 함수가 1%밖에 없어서 Powershell에서는 구현할 수 없습니다. 이것은 정상입니다. 세상에는 두 잎이 똑같은 경우가 없습니다.
즉, PS1 스크립트만 있으면 되고, sh 같은 건 필요 없어요.
3 bash는 너무 오래됐고, 같은 함수를 사용하며, Powershell도 구현할 수 있고, 예를 들어 10,000개의 빈 포르 같은 시간을 절약할 수도 있습니다. Powershell은 90%의 시간을 절약해야 합니다.
4 /usr/bin/bash 대신 /usr/bin/powershell을 사용하는 법을 배우세요. 다른 리눅스 명령어, 파이프라인, 옛날 쿵푸 등도 bash와 똑같이 사용됩니다.
5 점차 리눅스 명령 대신 객체 지향적이고 간단하며 강력한 PowerShell 명령어와 라이브러리를 사용하세요. ---이것이 일반적인 원칙, 일반적인 개요입니다.


Q: 어떤 버전의 Linux가 PowerShell을 설치할 수 있나요?
A:
◦Ubuntu 14.04 / 16.04
◦CentOS/RHEL 7 이상
◦오픈 SUSE 42 이상
◦Arch Linux (archl inux는 버전 번호가 없습니다)
◦LINUX 도커 컨테이너
◦Linux AppImage 컨테이너(휴대용 애플리케이션 단일 바이너리) https://github.com/probonopd/AppImageKit





Q: 왜 win의 명령줄이 리눅스보다 더 강하다고 말하나요?
A:
1Win의 명령어는 객체지향 PowerShell로 진화했습니다. 리눅스는 아직 작동하지 않습니다. win7에서 win2012r2로, 진화는 끝났습니다.

2 예전에는 유닉스가 많은 리눅스 명령어를 가지고 있고 매우 강력하다는 이야기를 들었습니다. 하지만 이제 말씀드리자면, PowerShell 명령어가 리눅스 명령어보다 최소 열 배는 더 많아요. 어쨌든, 평생 배운 건 아니에요.

3 리눅스는 그래프에 더 의존적이고, 명령어가 너무 적습니다. 그리고 윈 명령은 리눅스 그 이상입니다.
3.1 어떤 리눅스에서든 메일 서버의 명령어가 익스체인지보다 점점 더 완전한가요? 교환보다 더 편리한가요?
3.2 리눅스의 DNS 서버 바인드는 win의 DNS 명령어만큼 편리하지 않습니다. Bind에 IPv4 A 레코드를 도메인 이름에 추가하는 [명령어]가 있나요? 아직 웹 그래픽에 의존하지 않으셨나요?
어떤 사람들은 nsupdate를 사용하라고 합니다. 그건 문자를 만들고 그 텍스트를 실행하는 게 아닙니다. [DNS 존 파일]을 sed로 교체한 다음, [DNS 존]을 다시 불러오는 것의 차이가 무엇인가요?

4 win의 새 버전이나 PowerShell에서는 모두 [command + parameter]입니다. 그리고 리눅스 대부분은 여전히 [sed 텍스트]입니다.
4.1 네트워크 카드에 할당된 IP 주소를 예로 들어보겠습니다.
NMCLI 연결 추가: 이더넷 타입 콘네임 NEW_STATIC ifname eno1234567 ip4 192.168.1.111 GW4 192.168.1.1,
ifcfg-eth0 파일을 sed로 스크래핑하는 것보다 더 편하지 않나요?

5 어떤 언어든 데이터를 처리하며, 스크립팅도 마찬가지입니다. 객체의 도움으로 PowerShell은 awk보다 더 편리합니다. Shenma csv, excel, xml, json
SQL 테이블, NoSQL 테이블. HTML 등등.




Q: PowerShell은 [sed -i "s/what to find for/replace by /g" 파일명]을 어떻게 구현하나요?
A:
@(Get-Content 파일명) -'aaa', 'bbb' 교체 | 셋-콘텐츠 파일 이름 $aaa
즉, 파일을 열고, 교체하고, 저장하는 것입니다.



Q: 왜 점점 줄어드는 사람이 리눅스에서 SED를 사용하고 있나요?
A:
논증 1: AWK는 SED를 대체할 수 있지만, SED는 AWK를 대체할 수 없다.
즉, 단순히 치환을 찾으면 됩니다. AWK는 복잡한 처리를 구현하기 위해 그런 기능을 가지고 있습니다.

논증 2: AWK는 표준 정규 규칙을 사용하며, sed의 정규 역시 sed와 같지만 부분이 다르다.
SED를 배우는 것은 뇌 내에서 서로 맞지 않는 규칙적인 두 세트가 서로 싸우고 있다는 뜻입니다.



Q: 그럼 AWK를 배우는 게 옳은 건가요?
A:
PowerShell을 배우는 것이 AWK를 배우는 것보다 쉽습니다.
PowerShell은 [split and then split], [if and if], where-object, string.substing(), string[-3] 등을 사용합니다.
줄 문제를 층별로 나누어 나가세요. awk 일반 보다는 더 간단해요.




Q: 파이프라인과 AWK를 PowerShell에서 사용할 수 있나요?
A:
PowerShell에서 awk를 호출할 수 있는데, Bash와 똑같이 가능합니다. 옛 무술은 완전히 토리노 스타일입니다.



Q: PowerShell에서 [awk '{print $3}'] 함수를 어떻게 구현하나요?
A:
($line -스플릿 "\s+|\t+") [0] #第一行
($line -스플릿 "\s+|\t+") [2] #第三行       

콘텐츠 받기 /xxx/yyy.txt | foreach-object {$_.split()[2]} #awk '{print $3}'


Q: PowerShell을 사용해 [awk -f a.awk file] 함수를 어떻게 구현하나요?
A:
본질적으로 이것은 파이프를 사용하는 필터링 함수입니다. PowerShell에서는 이를 필터 또는 필터라고 부릅니다.
PowerShell은 명령어 + 파이프 + 필터 조합을 지원합니다. 명령 1 | 필터 1 | 명령 2 | 필터 2 | 필터 3
필터 필터1
{
AWK와 유사한 기능
}





Q: PowerShell에 [xargs]가 있나요?
A:
파이프라인에서 사용되는 파이프 변수는 [$psitem]이며, 별칭은 [$_]입니다.
PowerShell은 xargs 함수를 구현하기 위해 foreach-object와 $_를 사용합니다.





Q: PowerShell에 [<] [<<] 숫자가 있나요?
A:
아니요.
아마도 오른쪽에서 왼쪽으로 [<] 상징은 반인간적 사고일 것이다. PowerShell의 많은 명령어가 좌우로 변경되었습니다.
get-random < (1..100)가 PowerShell에서 합법적이지 않다면, 합법적인 것은 get-random -inputobject (1..100) 또는 1이어야 합니다. 100 |get-random
이상한 명령어 중 1% 미만만이 [<] 심볼에 의존해야 하며, 이는 PowerShell에서 cmd를, PowerShell에서 bash(PowerShell for Linux)를 호출하면 가능합니다.
예를 들어, $a = bash -x "명령어 1 < 명령어 2" #linux
예를 들어, $a = cmd -c "명령어 1 < 명령어 2" #cmd




Q: PowerShell에 expect 명령어가 있나요? PowerShell로 Win에서 리눅스 SSH 서버에 어떻게 연결하나요?
A:
1. 네. 특이하고 부분적인 도어 응답 요구에는 서드파티 모듈이 있습니다.
2 아니요. PowerShell은 expect 명령어를 사용하지 않고 세션을 사용합니다.

Powershell + SSH 클라이언트 라이브러리 + IP + 포트 + 사용자 이름 + 비밀번호를 사용해 연결로 결합하고 명령어를 전송하세요. 코드는 다음과 같습니다:
$connection 1 = New-SSHSession -ComputerName 1.1.1.1 -Port 22 -Credential aaaa #将提示输入密码
$to return = Invoke-SSHCommand -Command {cat /etc/issue} -SSHSession $Connection 1

이 표준 기능들(MongoDB, mysql, ssh, ftp, http, telnet 등)에는 드라이버나 모듈이 있습니다. 추신. .netprogram은 드라이버 연결을 통해 명령을 보내고 데이터를 받습니다.
모듈이나 드라이버를 사용하여 [데이터]를 송수신하는 이점은 다음과 같습니다:
데이터는 .net 객체로 변환되고, 다시 PS 객체로 변환됩니다. 그렇지 않으면 모두 끈일 뿐이고, PS 문파의 [객체지향 무술]은 모두 쓸모없다.


MongoDB를 예로 들면, 모듈이나 드라이버를 사용해 명령을 보낼 때의 장점은 무엇인가요? 누가 말해?
제가 느끼는 이점은 다음과 같습니다:
1 멀티스레딩. 백그라운드 스레드는 실행되며 현재 스레드를 차지하지 않습니다.
2. 언제든지 세션에서 [중간에 분리]하고, 다른 PS 코드와 함수를 실행하며, [언제든지 세션으로 돌아올 수 있습니다]. 스크립트는 작성이 더 유연하고 디버깅도 쉽습니다.
3session은 여러 사용자를 불러오고, 각 사용자가 서로 다른 서버 권한을 가질 수 있습니다.




Q: PowerShell에 runas 명령어가 있나요? PowerShell로 다른 사용자의 명령을 실행하는 방법은 무엇인가요?
A:
아니요.
PowerShell에서는 Linux 네이티브 명령어와 파이프라인 실행이 매우 쉽습니다. 예를 들어:
aaa@127.0.0.1"사용자 AAA 권한으로 실행됨, 명령어 xxx"  
sshpass -p user_password sshaaa@192.168.1.1



Q: SSHD가 있는 리눅스 머신 두 대가 있나요? PowerShell로 명령어를 연결하고 전송하는 방법은?
A:
위 방법 외에도, 새로운 리눅스 세션을 생성하는 방법도 사용할 수 있습니다. (리눅스에서 다른 SSHD로 연결됨)
참고: 이 방법은 /etc/ssh/sshd_config 파일을 편집해야 합니다. 다음 줄을 추가하세요
Subsystem powershell powershell -sshs -NoLogo -NoProfile
그 다음에는 SSHD 서버를 재시작하세요.
자세한 매뉴얼은 여기에서 확인할 수 있습니다:
https://github.com/PowerShell/PowerShell/tree/master/demos/SSHRemoting

명령:
$connect 2 = New-PSSession -HostName 127.0.0.1 -UserName user006 #手动输入密码或用-KeyFilePath option
invoke-command -session $connect 2 -scrip{filter}tBlock {new-item ~/ccc.txt}


요약:
윈도우 클라이언트가 리눅스 서버에 연결되어 있습니다. 현재는 서드파티 모듈이 필요하며, 물론 공식 라이브러리에 있는 모듈이므로 install-module PoshSSH를 사용하세요.
리눅스 클라이언트가 리눅스 서버에 연결되어 있습니다. /etc/ssh/sshd_config 파일을 편집해야 합니다.
Linux 클라이언트가 윈도우 서버에 연결되어 있습니다. 서버에서 서비스를 켜야 합니다. 클라이언트의 서버를 신뢰하세요.
윈도우 클라이언트가 윈도우 서버에 연결되어 있습니다. 서버에서 서비스를 켜야 합니다. 클라이언트의 서버를 신뢰하세요.


Q: PowerShell에 [grep]이 있나요?
A:
select-string 명령어는 PowerShell에서 사용됩니다.
코딩 관점만 보면, select-string=smart, grep=stupid + 는 심각한 결함이 있습니다 :mrgreen:
BOM 헤더가 있을 경우, select-string은 자동으로 파일 인코딩 유형을 인식합니다.
BOM 헤더가 없으면 linux+grep처럼 셸 환경을 변경할 필요도 없고, 특정 코드에 따라 파일을 저장할 필요도 없습니다. 파일 인코딩에 따라 -encoding 매개변수만 지정하면 됩니다.
그리고 grep에는 이 기능이 없는데, 즉 [파일 인코딩 유형을 지정할 수 없음]이라는 심각한 결함이 있습니다.
물론 grep이 쓸모없는 것은 아닙니다. grep은 매개변수가 있고 추가적인 고유 함수가 있지만, select-string은 그렇지 않습니다. 이 점에서 grep이 select-string보다 강합니다.



Q: PowerShell에 [평가]가 있나요?
A:
PowerShell에서 문자열을 실행할 때 Invoke-Expression을 사용하세요.



Q: PowerShell에 꼬리 -f가 있나요? 새로 생성된 파일의 라인을 실시간으로 출력하는 것이 가능합니다.
A:
Get-Content D:\a.txt -꼬리 10 -읽기 횟수 0 -잠시



Q: 작은 키보드를 사용하고 싶고 256색 터미널도 원하는데, xshell은 어떻게 설정해야 하나요?
A:
터미널 --- 터미널 유형 --- [putty-256color] 또는 [export TERM=putty-256color]
터미널 --- 키보드는 기본 또는 리눅스--- 있습니다.

Eterm-256color는
gnome-256color가 작동하지 않습니다
konsole-256color 작동하지 않습니다
퍼티-256컬러
PowerShell Missionary 원본 공유 2017-02-15
RXVT-256COLOR가 작동하지 않습니다
screen-256color가 작동하지 않습니다
ST-256컬러
VTE-256COLOR 작동하지 않습니다
xterm-256color가 작동하지 않습니다
동일한 원칙이 SecureCRT에도 적용됩니다




Q: 쉘과 파이썬 중 어느 쪽이 더 강력한가요?
A:
각 과정은 고유한 강점을 가지고 있으며 서로를 보완할 수 있습니다. 하지만 이 둘은 상호 보완적이지 않습니다. 아래에서 더 자세히 설명하겠습니다.


Q: 왜 Linux 버전의 PowerShell이 운영 및 유지보수 인력이 스크립트를 작성하기에 더 적합한가요? (Linux 버전의 파이썬과 비교)
A:
1 파이썬은 객체 지향 기능을 제공하며, Linux 버전의 PowerShell도 제공됩니다.

2 파이썬에는 명령줄 기능이 없습니다.
2.1 파이썬은 SSH의 기본 터미널이 될 수 없지만, Linux용 PowerShell은 가능합니다. "SSHD가 탑재된 두 대의 리눅스 머신?" 장을 참고하세요. PowerShell로 명령어를 연결하고 전송하는 방법은? 》
2.2 파이썬에서 셸 명령어(awk, grep 등)를 사용하는 것은 매우 번거롭습니다. 많은 py 문법과 코드를 추가해야 합니다. Linux용 PowerShell은 bash처럼 awk 명령어를 실행합니다.

3 파이썬에는 파이프가 없습니다. n 개의 [명령줄 프로그램] 간에 값을 전달하는 것은 매우 번거롭습니다. 많은 py 문법과 코드를 추가해야 합니다. Linux 버전의 PowerShell에는 파이프라인이 있고, awk 명령어 실행은 bash와 동일합니다.

파이썬 4는 버전 2인데, 버전 3은 암과 호환되지 않습니다! 질문입니다. Linux용 PowerShell은 이런 문제가 없습니다.
4.1 이 문제들은 코딩 문제를 포함합니다.

결론:
grep 같은 셸 명령어는 코딩 지원에 적합하지 않으며, 집에서 PowerShell에서 4.1 버전의 코딩 문제만큼 좋지 않습니다. 위에 언급한 2.3점 더해.
리눅스 사용자들은 불편함을 느끼지만, 파이에서 외부 명령을 사용하는 사람은 거의 없습니다. [py command library]와 [shell command]는 죽었고 사실상 서로 보완할 수 없습니다. PS의 리눅스 버전은 다릅니다.




Q: 왜 PowerShell이 shell보다 낫다고 말하나요?
A:
1 PowerShell은 객체 지향이며, 속성은 직접 사용 가능한 데이터를 반환합니다. 이는 문자열 추론이 필요한 문자 스크립팅 언어(bat, shell)보다 훨씬 드문 일입니다.
탈출해야 할 [콘텐츠]가 적은 상태로 태어났다.
2 문자열 검색 치환, PowerShell 내 .NET 클래스에 이스케이프가 필요 없는 메서드가 있습니다. 예를 들어:
[줄]$a = 'abc\\def'
$b = $a.replace('\\', 'when')
#返回: [ABC 변호사]
IP가 정당한지 판단하려면 IPAddress 클래스의 TryParse() 메서드를 사용할 수 있습니다.
요약하자면, 제 제안은 가능한 한 많은 .net 메서드를 사용하거나, 정규식을 적게 사용하거나, 단순한 정규 표현식을 사용하는 것입니다.
3 PowerShell은 [']를 이스케이프 심볼로 사용합니다. [']는 [\]보다 덜 흔히 사용되며 탈출 기호로도 훨씬 덜 사용됩니다.
3.1 데이터베이스 스크립트를 작성할 때 [']의 충돌이 더 많습니다.
예를 들어, ['table']은 ['t]와 충돌하며, ['biao']는 ['b]와 충돌하며, 나중에 ['table']으로 해결했습니다.
4ps의 문자열 검색 및 교체가 가능하며, 일반 엔진을 사용하고, 리눅스와 호환되며, [\]도 이스케이프로 사용합니다.
하지만 특수 문자열 이스케이프 함수 [[Regex]::Escape()]가 있는데, 먼저 이스케이프된 후 찾아 교체되며, 코드는 매우 읽기 쉽습니다.
$Original 에스케이프 앞의 문자열 = '\+\&*|]'
$escaped 문자열 = [정규 표현식]::escape(에스케이프 전에 $original 문자열)
-------------
문자 예시
[줄]$a = 'abc\\def'
$Original 이스케이프 앞 문자열 = '\'
$Escaped 문자열 = [정규 표현식]::Escape($Original 문자열 이전) #[\]--->[\\]
$b = [정규식]::replace($a,$Escaped 문자열, '언제')
$b #返回 [ABC 당당 DEF]
-------------
5 bash와 awk, 각각 자신만의 탈출 방법이 있어요. 이 모든 것이 결합되면, A가 B에게 영향을 미치기 쉽고, A가 B를 삼키게 됩니다.
또한 ['], ["], [\], [*]를 만날 때 문제가 생기기도 쉽습니다.
긴 바지를 두 겹 입는 것과 같아요. 한 겹을 벗기면 다른 겹도 움직이니까, 두 겹의 호환성을 신경 써야 해요.
이것은 암이고 해결하기 어렵습니다.
하지만 이 문제는 어느 정도는 피할 수도 있습니다. 이를 위해서는 껍질을 작성한 사람이 냄새나는 문제를 수정해야 합니다.
[awk 코드를 .awk 파일에 따로 넣으세요, 명령줄에 넣지 마세요]
PowerShell에는 이런 문제가 없고, 명령줄이나 스크립트에 넣으면 아무런 효과가 없습니다.








이전의:.net/C#은 간단한 AOP를 구현하기 위해 속성(Attribute)을 사용합니다
다음:.net/c# 스피디 IP 오픈 포트 스캐너 v2.0 얼티밋 버전
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com