sourcecode

PowerShell로 파일 차단 해제?

copyscript 2023. 10. 16. 22:01
반응형

PowerShell로 파일 차단 해제?

저는 Win2K8 R2에서 PowerShell이 파일 차단을 해제하도록 노력하고 있습니다.

구문에 대한 포인터를 가지고 있는 사람이 있습니까?

PowerShell v3를 사용하는 경우 cmdlet을 사용할 수 있습니다.


"차단" 부분은 단순히 파일의 대체 데이터 스트림으로, "Zone"이라고 불립니다.식별자".입력 리디렉션을 사용하여 CMD에 표시할 수 있습니다(CMD에서 스트림으로 이동하는 다른 방법은 없음).

H:\Downloads> more < test.exe:Zone.Identifier
[ZoneTransfer]
ZoneId=3

당신은 그것들을 찾을 수 있습니다.dir /rWindows Vista 이상의 경우:

2009-10-24  12:18        54.538.056 test.exe
                                 24 test.exe:Zone.Identifier:$DATA

또한 CMD에서는 출력 리디렉션을 사용하여 다음과 같이 덮어쓰기를 통해 쉽게 제거할 수 있습니다.

echo.>myDownloadedFile.exe:Zone.Identifier

ADS를 완전히 제거하는 것과 완전히 같지는 않지만 탐색기는 더 이상 불평하지 않습니다.

PowerShell 내에서 ADS를 처리하는 기본 지원은 없는 것 같습니다(여기 PowerShell Guy 블로그에 언급됨).이 기사에는 PowerShell에서 이러한 기능을 활용하는 방법에 대한 정보도 나와 있습니다.하지만 단순히 cmd라고 부를 수 있습니다.

cmd /c "echo.>test.exe:Zone.Identifier"

그것은 PowerShell에서도 작동합니다.

또 다른 옵션은 마크 루시노비치의 유틸리티로 파일의 ADS를 검사하고 삭제할 수 있습니다. 그래서

streams -d myDownloadedFile.exe

효과도 있습니다.

PoshCode 모듈에는 Set-DownloadFlag 및 Remove-DownloadFlag 기능이 포함되어 있으며, 이 기능은 공지된 대로 작동합니다.:) 저는 방금 그 작품을 자체 스크립트 기고문 http://poshcode.org/1430 에 넣었습니다.Add-Type(http://poshcode.org/720 대신 New-Type 기능을 사용하면 PowerShell 1에서도 작동합니다.

모든 어린이(정확한 인용 포함)에 대한 구역 정보(수용된 답변에서 영감을 얻은)를 제거하는 하나의 라이너.

get-childitem -rec | % { cmd /c "echo.>""$($_.FullName)"":Zone.Identifier" }

질문에 엄격하게 답하는 것이 아니라 다음 번에 이 문제를 생각해 낼 때 이미 해결책이 있는지 확인하고 싶습니다 :).

PS. PS 2.0에서 작동

이와 같은 포럼에 게시하는 것은 처음이며 이것은 오래된 주제일 수 있지만 여기 당신이 찾고 있는 것이 있습니다.

get-item -Path "path to file(s)" -Stream "Zone.Identifier" -ErrorAction "SilentlyContinue"

차단된 파일만 나열합니다.

Unblock-File -Path "Path to blocked file(s)"

이렇게 하면 차단이 해제됩니다.

하위 폴더 재귀적(>= PowerShell v3) 폴더 차단을 해제하려면 Get-ChildItem(gci) 명령을 사용합니다.

Get-ChildItem "C:\Temp\" -recurse | Unblock-File

C:\Temp시작 폴더입니다.

Streams를 사용하여 대체 파일 스트림을 제거합니다. 게시물 보기: http://www.paraesthesia.com/archive/2010/05/19/unblocking-multiple-files-at-once.aspx

하여 Win32 를하였습니다를 하였습니다.Zone.IdentifierWindows에서 파일을 차단할지 여부를 결정하는 데 사용하는 NTFS 대체 데이터 스트림.

수 에 이 NET은 대체 데이터 스트림에 액세스할 수 없기 때문에 이 기능은 플랫폼 호출이라는 기술을 사용하여 네이티브 Win32 API를 호출합니다.하므로 파일 은 PowerShell부 System.IO.FileInfo함수에 대한 개체입니다.또한 이 기능은 외부 의존성이 없으며 단순히 콘텐츠를 삭제하는 것이 아니라 실제로 대체 데이터 스트림을 삭제합니다.

http://andyarismendi.blogspot.com/2012/02/unblocking-files-with-powershell.html

적절한 파워셸 cmdlet을 사용하여 이 작업을 수행하는 것으로 보이는 답변을 아직 보지 못했습니다.

여기서 zone.identifier를 포함하는 현재 폴더에서 DLL을 찾을 수 있습니다.

Get-Item -Path .\*.dll -stream * | where {$_.Stream -eq "Zone.Identifier" }

여기서는 다른 스트림에 손상을 줄 수 있는 위의 일부 답변과는 달리 원하지 않는 스트림만 zap합니다.

Remove-Item  -Path .\*.dll -stream Zone.Identifier

서버에 Powershell > v3($PSVersionTable)이 없는 경우.PS 버전.메이저-게 3).그렇다면 오래된 신뢰할 수 있는 DOS를 사용합니다.

for /f "tokens=*" %f in ('dir /b *.*') do echo.>"%f":Zone.Identifier 

PowerShell 3.0 이상 버전을 사용하는 경우 파일 속성 창에 차단 해제 버튼이 없더라도 차단 해제 파일 PowerShell cmdlet을 사용하면 이 문제를 해결할 수 있습니다.

차단 해제-파일 cmdlet을 사용하면 인터넷에서 다운로드한 파일을 열 수 있습니다.인터넷에서 다운로드한 윈도우즈 PowerShell 스크립트 파일의 차단을 해제하여 윈도우즈 PowerShell 실행 정책이 RemoteSigned인 경우에도 실행할 수 있습니다.기본적으로 이러한 파일은 신뢰할 수 없는 파일로부터 컴퓨터를 보호하기 위해 차단됩니다.

powerShell 창을 열고 아래 구문을 따라가면 됩니다.구문에 대한 자세한 내용을 보려면 여기로 이동하십시오.

예:

unblock-file -path C:\Downloads\MyFileName.chm

PowerShell 스크린샷으로 파일 차단 해제

경고: 보안되지 않은 파일의 차단을 해제하지 마십시오.

같습니다. @Mike 의에 것입니다. 공간이 있으면 작동하지 않습니다.$_.FullName예: "C:)\와 같이 을 수행해야 \Program Files")이므로 다음을 수행해야 합니다.

get-childitem -rec | % { cmd /c "echo.>""$($_.FullName)"":Zone.Identifier" }

다음과 같이 차단된 파일을 검색할 수 있습니다.

get-item * -stream zone*

그런 다음 파일 차단을 해제하려면 해당 파일을 제거하는 파이프링하거나 zone.identifier 스트림을 삭제하는 "rm" 파이프링합니다.

get-item * -stream zone* | Remove-Item

재귀적 검색을 원하는 경우:

get-childitem -recurse | get-item -stream zone*

이 말은?

set-executionpolicy remotesigned

이렇게 하면 로컬 스크립트가 서명되지 않은 상태에서 로컬 스크립트를 실행하고, 서명된 경우 원격 스크립트를 실행할 수 있습니다.자세한 정보는 여기에서 확인할 수 있습니다.

언급URL : https://stackoverflow.com/questions/1617509/unblock-a-file-with-powershell

반응형