cmd에서 powershell을 실행합니다. 일정에 따라 PowerShell 스크립트 실행

행정에는 항상 창의성의 여지가 있습니다. 자동화를 하시겠습니까? 일상적인 작업? 제발! 정기적으로 활동을 확인해야 합니까? 괜찮아요! 일부 거대한 보고서를 처리하고 관련 데이터만 표시하고 싶습니까? 그것도 가능합니다. 이러한 모든 작업과 기타 여러 작업은 스크립트를 사용하여 가장 잘 해결되며 Windows의 경우 PowerShell이 ​​최적의 선택입니다.

PowerShell은 무엇이며 왜 좋은가요?

UNIX 및 Linux 사용자, 그리고 어떤 시점에서는 macOS 사용자도 Bash를 항상 사용하는 데 익숙합니다. Bash는 약간 구식이지만 단 몇 줄만으로 놀라운 작업을 수행할 수 있는 보편적이고 강력한 도구입니다. cron에 새 스크립트를 등록하면 완료됩니다. 해당 스크립트는 이미 컴퓨터나 서버에서 실행 중이며 조용히 유용한 작업을 수행합니다.

Windows로 돌아가서(때로는 Windows 없이는 할 수 없음) .bat 스크립트가 훌륭하지만 항상 사용자를 구하지는 않는다는 것을 이해합니다. 해당 기능은 매우 제한적입니다. 그리고 여전히 PowerShell이 ​​무언가를 선택하고 구성해야 하는 알 수 없는 것이라고 생각한다면 성급하게 결론을 내리지 마십시오. 살펴보면 전혀 나쁘지 않습니다.

Windows PowerShell은 셸( 명령줄) 및 스크립팅 언어. 2003년에 처음 공개되었습니다(당시 Monad라고 함). PowerShell 2.0은 Windows 7 및 Windows Server 2008 R2와 함께 출시되었으며 그 이후로 Windows의 표준 기능이었습니다. Windows XP SP3에도 포함되어 있었습니다. PowerShell은 .NET Framework를 기반으로 구축되고 통합됩니다. PowerShell은 COM, WMI 및 ADSI에 액세스할 수 있으며 물론 콘솔 명령도 실행할 수 있습니다.

일반적으로 posh는 다음과 강한 유대 관계를 맺고 있습니다. 마이크로소프트 제품, 어느 하나 액티브 디렉토리또는 메일 서버교환. 이를 통해 서버 장비에 연결하지 않고도 콘솔을 통해 액세스하고 명령을 실행할 수 있습니다.

이전에 PowerShell에 관심이 없었다면 두 번째 버전이 있을 가능성이 높습니다. 최소한 세 번째 버전으로 업그레이드하는 것이 좋습니다. 훨씬 더 많은 기능과 기능이 포함되어 있습니다. 유용한 팁. 자세히 설명하지 않더라도 PowerShell 2.0에는 약 12개의 모듈과 약 350개의 명령이 포함되어 있으며 PowerShell 3.0에는 이미 70개 이상의 모듈에서 약 2,300개의 cmdlet이 포함되어 있습니다. “해커”는 Windows 10의 최신 PowerShell 버전 5가 어떻게 다른지에 대해서도 썼습니다.

개발 환경 및 도구 선택

이제 코드를 작성하는 것이 가장 편리한 위치를 알아 보겠습니다. 물론 Notepad, Notepad++ 또는 Sublime에서도 가능합니다. 그러나 이 경우 이는 편집자의 가장 현명한 선택이 아닙니다. 포함된 .


이것은 편집자조차도 아니지만 거의 본격적인 개발 환경입니다. cmdlet과 해당 매개 변수, 변수, 유틸리티 등의 목록을 볼 수 있는 IntelliSense 기능이 있습니다. 스니펫이 지원되며 다양한 추가 기능을 통해 기능 세트를 확장할 수 있습니다. 명령 창도 매우 유용합니다. 여기에서 시각적 모드로 명령을 작성할 수 있습니다. 모듈을 선택하고 원하는 cmdlet을 찾아 필요한 매개변수를 설정합니다. 결과 명령은 콘솔에 복사되거나 즉시 실행될 수 있습니다. 일반적으로 관리자를 위한 일종의 디자이너입니다. 물론 구문 강조, 디버거 등도 있습니다.

그러나 PowerShell ISE에는 가치 있는 경쟁자도 있습니다. 그들 중 하나 - .

PowerGUI는 PowerShell의 시각적 확장입니다. 필요한 cmdlet을 선택하기 전에 고유한 스크립트를 쉽게 작성할 수 있습니다. 문제를 해결하는 데 필요한 것을 선택하고 스크립트를 얻을 때까지 코드의 일부를 끌어서 놓습니다. PowerGUI의 주요 기능 중 하나는 사용자 커뮤니티에서 게시하고 무료로 액세스할 수 있는 미리 만들어진 스크립트인 Power Pack입니다. 사용자 추가와 같은 간단한 명령과 스위치 및 가상 머신 관리와 같은 복잡한 명령이 있습니다. 이들 모두는 필요에 따라 쉽게 보완하고 수정할 수 있습니다.


Sapien 회사는 하나의 프로젝트를 공동 개발하도록 설계된 보다 발전된 환경입니다. 큰 금액참가자들. Visual Studio를 사용해 본 적이 있다면 유사점을 눈치채셨을 것입니다. PowerShell Studio의 유용한 기능으로는 리본 패널, 원격 디버깅 지원, 실행 파일에 스크립트를 포함할 수 있는 컴파일러 기능 등이 있습니다. 지원이 있습니다 다른 버전파워셸.


Windows PowerShell ISE용 스크립트 브라우저도 언급할 가치가 있습니다. 이것은 개발 환경은 아니지만 Microsoft에서 개발한 매우 흥미로운 도구입니다. 스크립트 브라우저는 자신만의 코드를 작성하기 위한 샘플로 사용할 수 있는 미리 만들어진 스크립트 데이터베이스에 대한 액세스를 제공합니다. 이는 작성한 코드를 분석하고 개선 방법을 제안할 수도 있습니다.


몇 가지 유용한 트릭

편집기를 파악한 후 코드 작성을 시작할 수 있습니다. PowerShell은 복잡한 언어가 아니므로 금방 익숙해질 수 있을 것입니다. 여기에 있는 명령을 cmdlet이라고 하며 각 명령은 두 부분으로 구성됩니다. 먼저 Get, Set, Add, Invoke, Remove와 같은 작업이 옵니다. 그런 다음 서비스, VM, AzureAccount, DHCPServerSetting 등 작업의 대상이 무엇인지 나타냅니다. 각 부분은 하이픈으로 서로 구분됩니다. 예를 들어 get-process로 밝혀졌습니다. 그건 그렇고, 유용한 명령, 프로세스 목록을 표시합니다. 말하자면, 쓴다면

가져오기 - BadTh 처리 *

우리는 다음과 같은 것을 보게 될 것입니다:

처리 NPM(K) PM(K) WS(K) VM(M) CPU(s) ID ProcessName

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

28 4 - 210844 - 201128 - 163 25.67 2792 불량스레드

이제 고정된 프로세스를 종료할 수 있습니다.

좀 더 복잡한 논리를 사용하더라도 재귀적으로 볼 수 있습니다.

당신은 또한 할 수 있습니다

그런데 옵션 창의 각 필드에 대해 계정또는 데이터에 액세스하고 읽을 수 있는 컴퓨터입니다. 이렇게 하면 전체 섹션을 만들 수 있습니다. 예를 들어 다음은 다음에 대한 데이터를 기반으로 한 쿼리입니다. 전화 번호:

가져오기 - AdUser - 필터 * - 속성 OfficePhone | FT 사무실전화, UserPrincipalName

PowerShell과 박쥐

때로는 구식 방법을 사용하거나 다음을 사용하여 문제를 해결할 수 있습니다. 파워셸 도움말. 게으르지 말고 PS를 사용하는 것이 좋습니다. 이렇게 하면 PS를 더 빨리 배우고 더 복잡한 상황에서 사용할 수 있기 때문입니다. 또한 점점 더 우아하고 일관성 있는 구문을 이해하게 될 것입니다. 다음은 이전에 작업을 수행한 방법과 PowerShell을 사용하여 수행할 수 있는 방법에 대한 몇 가지 예입니다.

다음 명령줄은 10초 지연 후 컴퓨터를 재부팅합니다.

다음은 bat을 통해 dnscache 서비스(또는 기타 서비스)를 다시 시작하는 방법입니다.

sc 중지 dnscache

sc 시작 dnscache

PowerShell에서 프로그램 실행

PowerShell에서 실행 파일(프로그램 또는 명령줄 유틸리티)을 실행하는 작업은 매우 자주 발생합니다. PowerShell은 이에 대한 몇 가지 옵션을 제공합니다. 다양한 방법으로, 이 기사의 뒷부분에서 고려할 것입니다. 가장 간단한 것부터 시작해 보겠습니다.

직접 출시

PowerShell에서 실행 파일을 실행하는 가장 쉬운 방법은 파일이 있는 디렉터리로 이동하여 직접 실행하는 것입니다. 예를 들어, 인사말을 표시하고 다음 명령을 사용하여 실행하는 간단한 프로그램을 살펴보겠습니다.

위치 설정 ″C:\Program Files″
.\Hello.exe

원하는 디렉터리에 있더라도 실행 파일의 상대 경로를 지정해야 한다는 점에 유의하세요. 환경 변수(경로)에 나열된 디렉터리의 파일은 예외입니다. 예를 들어, Windows\System32 디렉터리에 있는 다양한 내장 프로그램 및 유틸리티(메모장, 계산, 핑 등)는 경로를 지정하지 않고도 실행할 수 있습니다.

운영자 &

실행 파일의 전체 경로를 지정해야 하는 경우 연산자를 사용할 수 있습니다. & (통화 교환 원). 따옴표로 묶인 텍스트 문자열을 단일 명령으로 실행할 수 있습니다. 예를 들어:

& 'C:\Program Files\Hello.exe'

& 연산자는 전달되는 명령을 구문 분석하지 않으므로 해당 매개변수를 해석할 수 없습니다. 따라서 추가 매개변수\인수도 따옴표로 묶인 텍스트로 전달됩니다. 예를 들어, 이전 프로그램을 가져와서 원하는 텍스트를 인수로 받아들이도록 약간 수정해 보겠습니다.

& ′C:\Program Files\Hello.exe′ ′안녕하세요, 세계′

원하는 경우 쉼표로 구분된 여러 인수를 지정할 수 있습니다.

& ′C:\Program Files\Hello.exe′ ′안녕하세요,′, ′세계′

편의를 위해 명령과 인수를 변수에 배치할 수 있습니다.

$exe = 'C:\Program Files\Hello.exe'
$arg1 = '안녕하세요'
$arg2 = '세계'
& $exe $arg1 $arg2

인수가 많으면 다음 구성을 사용하여 인수를 결합할 수 있습니다.

$exe = 'C:\Program Files\Hello.exe'
$allargs = @('안녕하세요,','세계')
& $exe $allargs

호출 표현식

Invoke-Expression cmdlet은 & 연산자와 거의 동일한 방식으로 작동합니다. 즉, 텍스트 문자열을 가져와서 명령으로 실행합니다. 예를 들어:

Invoke-Expression -Command 'C:\Windows\Hello.exe'

그러나 한 가지 큰 단점이 있습니다. 즉 공간 작업이 불가능하다는 것입니다. 예를 들어 다음 명령을 실행하면 오류가 발생합니다.

Invoke-Expression -Command 'C:\Program Files\Hello.exe'

이 기능은 cmdlet 사용을 매우 불편하게 만듭니다. 필요한 경우 다음과 같은 추가 따옴표를 사용하면 이러한 오류를 피할 수 있습니다.

Invoke-Expression -Command ″C:\′Program Files′\Hello.exe″

시작 프로세스

Start-Process cmdlet은 다음 메서드를 사용하여 지정된 파일을 프로세스로 시작합니다. 시작.NET 클래스 프로세스. 예를 들어:

시작 프로세스 -FilePath 'C:\Program Files\Hello.exe'

기본적으로 프로세스는 별도의 창에서 실행되며 프로세스가 완료되면 닫힙니다. 매개변수를 사용하여 이 동작을 변경할 수 있으므로 현재 창에서 다음 명령이 실행됩니다.

시작 프로세스 -FilePath 'C:\Program Files\Hello.exe' -NoNewWindow -Wait

Start-Process를 사용하면 프로세스에 추가 인수를 전달할 수도 있습니다.

시작-프로세스 -FilePath ′C:\Program Files\Hello.exe′ -ArgumentList ′Hello, world′ -NoNewWindow -Wait

기본적으로 cmdlet은 아무 것도 반환하지 않지만 -PassThru 매개 변수를 사용하여 강제로 프로세스 개체를 반환하도록 할 수 있습니다. 이 객체를 변수에 배치하는 것은 매우 편리합니다.

$process = 시작-프로세스 -FilePath ′C:\Program Files\Hello.exe′ -Wait -PassThru

그러면 상태와 같은 많은 유용한 정보를 배울 수 있습니다.

$process.HasExited

$process.ExitTime

또는 실행 코드:

$process.ExitCode

.그물

원칙적으로 .NET Process 클래스는 Start-Process cmdlet 없이 직접 사용할 수 있습니다. 예를 들어 다음 명령을 사용하여 프로세스를 시작할 수 있습니다.

::시작('C:\Program Files\Hello.exe')

이 방법은 상당히 불편하고 번거롭지만(제 생각에는) 사용이 좀 더 유연합니다. 예를 들어 현재 창에서 프로그램을 실행하고 인수를 전달한 후 실행 결과를 가져옵니다.

$process = 새 개체 -TypeName System.Diagnostics.Process
$process.StartInfo.FileName = ″C:\Program Files\Hello.exe″
$process.StartInfo.Arguments = ″안녕하세요, 세계″
$process.StartInfo.RedirectStandardOutput = $true
$process.StartInfo.UseShellExecute = $false
$프로세스.시작()
$process.WaitForExit()

$process.StandatdOutput.ReadToEnd()

WMI

프로그램 실행을 포함하여 WMI를 사용하면 거의 모든 작업을 수행할 수 있습니다. 이 방법은 이에 매우 적합합니다. 만들다 WMI 클래스 Win32_Process.이 방법은 로컬 또는 원격 컴퓨터 RPC를 통해. 예를 들어, 다음에서 프로그램을 실행하려면 로컬 컴퓨터다음 명령을 사용할 수 있습니다.

()″Win32_Process″).Create('C:\Program Files\Hello.exe')

원격 컴퓨터에서 실행하려면 명령은 다음과 같습니다.

()″\\원격컴퓨터\루트\cimv2:Win32_Process″).Create('C:\Program Files\Hello.exe')

또는 Invoke-WmiMethod cmdlet을 사용할 수 있습니다.

Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList ″C:\Program Files\Hello.exe″

또는 Invoke-CimMethod cmdlet을 사용합니다.

Invoke-CimMethod -ClassName Win32_Process -MethodName Create -Arguments @(CommandLine=″C:\Program Files\Hello.exe″)

WMI는 별도의 창에서 프로세스를 실행하고 프로세스 ID(ProcessID)와 실행 결과(ReturnValue)가 포함된 개체를 반환합니다. ReturnValue는 다음 값을 사용할 수 있습니다.

0 — 성공적인 완료
2 -접근 불가
3 — 권한 부족
8 —알 수 없는 실패
9 - 경로를 찾을 수 없습니다
21 - 잘못된 매개 변수

호출 명령

Invoke-Command cmdlet은 WinRM을 사용하여 로컬 또는 원격 컴퓨터에서 명령을 실행할 수 있습니다. 예를 들어 로컬 컴퓨터에서 프로그램을 실행하려면 다음 명령을 사용합니다.

Invoke-Command -ScriptBlock(″C:\′Program Files′\Hello.exe″)

필요한 경우 프로그램에 인수를 전달할 수 있습니다.

Invoke-Command -ScriptBlock (C:\′Program Files′\Hello.exe ″Hello,world″)

Invoke-Command는 공백에 그다지 친숙하지 않으므로 오류를 방지하려면 따옴표를 사용하여 창의성을 발휘해야 합니다. 그러나 예를 들어 cmdlet을 & 연산자와 결합하면 이러한 문제를 피할 수 있습니다.

Invoke-Command -ScriptBlock (& ​​​​′C:\Program Files\Hello.exe′)

Invoke-Command는 주로 다음 용도로 사용됩니다. 리모콘, 주요 장점은 여러 컴퓨터에서 동시에 실행할 수 있다는 것입니다. 예를 들어:

Invoke-Command -ScriptBlock (″C:\′Program Files′\Hello.exe″) -컴퓨터 이름 SRV1,SRV2,SRV3

$scriptblock = (″C:\′Program Files′\Hello.exe″)
$컴퓨터 = @('SRV1','SRV2','SRV3')
Invoke-Command -ScriptBlock $scriptblock -ComputerName $Computers

기본적으로 cmdlet은 프로그램 실행 결과를 반환하며, 배경(매개변수 -AsJob), Job 객체를 반환합니다.

Invoke-Command -ScriptBlock (C:\′Program Files′\Hello.exe) -ComputerName localhost -AsJob -JobName Hello

호출 항목

Invoke-Item cmdlet은 파일에 기본 작업을 적용하도록 설계되었습니다. 따라서 다음 명령을 사용하여 실행 파일을 실행할 수 있습니다.

Invoke-Item -Path ″C:\Program Files\Hello.exe″

그러나 특정 유형의 파일을 열려면 Invoke-Item을 사용하는 것이 가장 편리합니다. 예를 들어, 다음은 텍스트 파일을 여는 방법입니다.

Invoke-Item -Path ″C:\Files\test.txt″

그리고 그게 다야 텍스트 파일폴더 내:

Invoke-Item -Path ″C:\Files\*.txt″

명령

결론적으로 PowerShell에서 프로그램을 시작하는 또 다른 방법은 cmd 셸을 사용하는 것입니다. 이 방법은 매우 "간접적"이지만 그럼에도 불구하고 작동합니다. 다음 명령은 cmd의 새 인스턴스를 시작하고 그 인스턴스에서 실행됩니다. 지정된 프로그램, cmd를 종료하고 결과를 반환합니다.

cmd /c ″C:\Program Files\Hello.exe″

PoSh는 프로그램을 시작하는 다양한 방법을 제공합니다. 그리고 그들 각각은 특정 상황에 좋습니다.

그런데 이 기사는 PowerShell: Deep Dive and Best Practice를 기반으로 작성되었습니다. 나는 그것을 읽는 것이 좋습니다. 거기에는 여전히 흥미로운 것들이 많이 있습니다.

스크립트를 실행하는 방법에는 여러 가지가 있으며 주요 방법은 다음과 같습니다.

  1. 파워셸 실행그 안에 스크립트를 실행합니다(예: C:\Scripts\test.ps1과 같이 파일 경로와 파일 이름을 입력하거나 cd C:\Scripts 명령을 사용하여 스크립트 폴더로 이동하여 실행합니다). 명령을 사용하여.\test.ps1) 쉘은 다양한 방법으로 찾고 실행할 수 있습니다. 한 가지 방법은 시작 메뉴를 이용하는 것입니다. Windows 7의 경우 "모든 프로그램" - "보조프로그램" - "Windows PowerShell"로 이동하여 "Windows PowerShell" 셸을 실행해야 합니다. Windows 10의 경우 문자 "W"가 있는 그룹을 찾아야 하며 그 안에 "Windows PowerShell"이 있습니다.
  2. "Windows PowerShell ISE" 실행프로그램은 PowerShell 자체와 함께 기본적으로 사용할 수 있는 PowerShell 스크립트를 편집하고 디버그할 수 있는 개발 환경입니다. Windows PowerShell ISE를 시작한 후에는 "열기" 버튼을 클릭하거나 파일 - 열기 메뉴로 이동하여 원하는 스크립트를 선택한 다음 F5 또는 "스크립트 실행" 버튼을 누르기만 하면 됩니다. Windows PowerShell ISE는 다음과 같은 위치에서 찾을 수 있습니다. PowerShell 셸 - 시작 메뉴에 있습니다.
  3. 표준 명령줄 실행그리고 거기에 적어주세요:
    파워셸 -파일<имя_скрипта> (예: powershell -file myscript.ps1)

이전에 PowerShell 스크립트를 실행한 적이 없다면 다음 메시지가 표시될 가능성이 높습니다. 파일을 다운로드할 수 없습니다<имя_скрипта>, 이 시스템에서는 스크립트 실행이 금지되어 있기 때문입니다. 자세한 내용을 보려면 "get-help about_signing"을 입력하세요. 이는 보안상의 이유와 우발적인 실행을 방지하기 위한 것입니다. 악성코드, 모든 스크립트는 디지털 서명되어야 합니다.

서명되지 않은 PowerShell 스크립트 실행을 허용하는 방법은 무엇입니까?

1. 파워셸에서, 스크립트를 실행하기 전에 현재 셸 세션에 대해 서명되지 않은 스크립트의 실행을 허용하는 명령을 실행합니다.

Set-ExecutionPolicy RemoteSigned -Scope 프로세스

2. 시작 시 표준 명령줄에서-executionpolicy 매개변수를 사용합니다. 즉, 다음과 같이 스크립트를 실행하십시오.

<имя_скрипта>

두 방법 모두 현재 세션에 대해서만 정책을 설정하는 반면, 레지스트리에 작성된 PowerShell 스크립트를 실행하기 위한 보안 정책은 변경되지 않고 동일하게 유지됩니다. 스크립트 실행 보안 정책을 "영구"로 변경하려면 다음 방법을 사용하십시오.

3. 영원히 출시 허용: 관리자 권한으로 PowerShell을 시작한 후 다음 명령을 실행합니다.

Set-ExecutionPolicy RemoteSigned

메모:인터넷에서 스크립트를 다운로드한 경우 실행 확인 요청을 피하려면 RemoteSigned 대신 Bypass를 사용해야 합니다. 완전 종료모든 요청 및 경고.

백그라운드에서 PowerShell 스크립트를 어떻게 실행하나요?

이렇게 하려면 Normal, Minimized, Maximized 및 Hidden 값을 사용할 수 있는 시작 매개변수 -WindowStyle을 사용하면 됩니다. 따라서 서명되지 않은 스크립트를 백그라운드에서 실행하려면 다음 명령을 실행해야 합니다.

powershell -executionpolicy RemoteSigned -WindowStyle Hidden -file<имя_скрипта>

원하는 경우 -NonInteractive를 추가하여 스크립트에서 질문을 하지 않도록 할 수도 있습니다. 따라서 스크립트는 사용자가 눈치 채지 못한 채 실행됩니다. 이 방법을 사용할 때는 주의하세요.

매개변수를 사용하여 PowerShell 스크립트 실행

실제 실행은 일반 프로그램이나 매개변수가 있는 bat 파일을 실행하는 것처럼 수행되어야 합니다. 예를 들어, 명령줄에서 매개변수를 사용하여 스크립트를 실행하려면 다음 명령을 작성할 수 있습니다.

powershell -executionpolicy RemoteSigned -파일<имя_скрипта>param1 param2 "다른 텍스트 매개변수"

스크립트 자체에서 다음과 같은 매개변수를 얻을 수 있습니다.

매개변수($var1, $var2, $var3) 에코 $var1, $var2, $var3

PowerShell ISE에서는 명령 창을 사용하여 동일한 방식으로 매개 변수가 포함된 스크립트를 실행할 수 있습니다.

바로가기를 사용하여 PowerShell 스크립트를 어떻게 실행하나요?

이 작업은 두 가지 방법으로 수행할 수 있습니다.

  1. 스크립트를 실행하기 위한 명령을 작성할 bat/cmd 파일을 만듭니다(위의 매개변수를 읽었습니다).
  2. c:\Windows\System32\WindowsPowerShell\v 폴더에서 찾을 수 있는 PowerShell에 대한 바로 가기를 만듭니다.<версия>\ 그리고 "개체" 필드의 바로가기 속성에 필요한 매개변수를 추가합니다.

따라서 예를 들어 사용자가 로그인할 때 powershell 스크립트를 실행하려면 2번 항목에 설명된 대로 바로가기를 만들어 시작 화면에 배치하면 됩니다. 또한 위의 방법 중 하나를 사용하여 바로가기를 만들면 관리자 또는 다른 사용자로서 스크립트를 일반 프로그램으로 쉽게 실행할 수 있습니다.

PowerShell 스크립팅 언어 - 상당히 강력한 도구다양한 문제를 해결하기 위해 사용하지만 좋은 일뿐만 아니라 해를 끼치는 일에도 사용될 수 있으니 현명하게 사용하세요;)

안녕하세요 여러분, 오늘은 Windows에서 PowerShell 스크립트를 실행하는 방법을 알려드리고 싶습니다. 상황을 상상해 보십시오. Active Directory의 정보 표시를 크게 단순화하는 스크립트를 작성하고 Powershell 스냅인을 열고 스크립트 경로를 입력하고 Enter 키를 누르면 오류가 발생합니다.

파일을 다운로드할 수 없습니다<путь к вашему файлу>, 이 시스템에서는 스크립트 실행이 금지되어 있기 때문입니다. 자세한 내용을 보려면 "get-help about_signing"을 입력하세요.

해결 방법을 살펴 보겠습니다.

PowerShell에는 실행이 허용되는 코드 유형을 결정하는 다양한 실행 모드가 있습니다. 이는 모두 HKLM에 있는 레지스트리 키에 의해 제어됩니다. 4 개가 있습니다 다른 모드처형:

제한된(제한됨): 기본 실행 정책은 스크립트 실행을 허용하지 않고 대화형 명령 실행만 허용합니다.

모두 서명됨(모두 서명됨): 모든 스크립트를 실행할 수 있습니다. 사실, 모든 스크립트와 구성 파일은 신뢰할 수 있는 게시자의 서명을 받아야 합니다. 이 모드에서는 게시자의 신뢰 확인을 받은 후 서명된(그러나 악의적인) 스크립트를 실행할 위험에 노출됩니다.

삭제됨 서명됨(원격 서명): 로컬 스크립트는 서명 없이 작동합니다. 다운로드한 모든 스크립트는 디지털 서명이 되어야 합니다.

제한 없는(제한 없음): 다음과 같은 통신 애플리케이션에서 수신된 모든 스크립트 및 구성 파일 마이크로소프트 아웃룩, 인터넷 익스플로러, Outlook Express 및 Windows Messenger는 파일이 인터넷에서 오는 것임을 확인한 후에 작동합니다. 없음 디지털 서명필수는 아닙니다. 이 모드는 서명되지 않은 악성 스크립트를 실행할 위험에 노출됩니다.

기본적으로 PowerShell은 제한 모드를 사용합니다. 이 모드에서 PowerShell은 대화형 셸로만 작동합니다. 스크립트 실행을 허용하지 않으며 신뢰하는 게시자가 서명한 구성 파일만 로드합니다.

Powershell 스크립트 실행 허용

직접 만든 스크립트를 실행하려면 다음 명령을 사용하여 신뢰할 수 없는 스크립트가 실행되도록 허용해야 합니다. Set-ExecutionPolicy 원격 서명됨및 확인(주의!!! 이 명령을 실행하려면 관리자 권한으로 PowerShell을 실행해야 합니다). 그런 다음 스크립트를 다시 실행할 수 있습니다.

메시지가 표시되면 Y를 눌러 스크립트 실행을 허용합니다. 이러한 조작 후에는 스크립트를 실행할 수 있습니다.

PowerShell에는 실행이 허용되는 코드 유형을 결정하는 다양한 실행 모드가 있습니다. 이는 모두 HKLM에 있는 레지스트리 키에 의해 제어됩니다. 4가지 실행 모드가 있습니다:

제한된(제한됨): 기본 실행 정책은 스크립트 실행을 허용하지 않고 대화형 명령 실행만 허용합니다.

모두 서명됨(모두 서명됨): 모든 스크립트를 실행할 수 있습니다. 사실, 모든 스크립트와 구성 파일은 신뢰할 수 있는 게시자의 서명을 받아야 합니다. 이 모드에서는 게시자의 신뢰 확인을 받은 후 서명된(그러나 악의적인) 스크립트를 실행할 위험에 노출됩니다.

삭제됨 서명됨(원격 서명): 로컬 스크립트는 서명 없이 작동합니다. 다운로드한 모든 스크립트는 디지털 서명이 되어야 합니다.

제한 없는(제한 없음): Microsoft Outlook, Internet Explorer, Outlook Express 및 Windows Messenger와 같은 통신 응용 프로그램에서 받은 모든 스크립트 및 구성 파일은 해당 파일이 인터넷에서 온 것임을 사용자가 이해한 후에 작동합니다. 디지털 서명이 필요하지 않습니다. 이 모드는 서명되지 않은 악성 스크립트를 실행할 위험에 노출됩니다.

기본적으로 PowerShell은 제한 모드를 사용합니다. 이 모드에서 PowerShell은 대화형 셸로만 작동합니다. 스크립트 실행을 허용하지 않으며 신뢰하는 게시자가 서명한 구성 파일만 로드합니다.

성가신 빨간색 오류가 발생하는 경우 대부분의 경우 서명되지 않은 스크립트를 실행하려고 하기 때문입니다. 제일 안전한 방법으로이 문제에 대한 해결 방법은 실행 정책을 무제한으로 변경하고 스크립트를 실행한 후 제한된 정책으로 돌아가는 것입니다.

실행 정책을 무제한으로 변경하려면 관리 PowerShell에서 다음 명령을 실행합니다.

Set-ExecutionPolicy 무제한

확인 요청이 표시됩니다. 엔터 키를 치시오.

이제 다운로드한 스크립트를 실행할 수 있습니다. 그러나 심각한 위험에 처하게 되므로 스크립트 실행이 완료되면 실행 정책을 다시 제한 모드로 되돌리십시오. 다음 명령을 사용하여 이 작업을 수행할 수 있습니다.

Set-ExecutionPolicy 제한됨

다시 한 번 확인 요청이 표시됩니다. 엔터 키를 치시오.

그게 다야! 행운을 빕니다!

공유하다