2009-12-18 5 views

답변

1

나는 약간 놀아서이 해결책에왔다 : 서명은 파일의 끝에 추가된다. 나는, 내가 더 이상 필요하지 않은 LINENUMBERS 알고 나머지를 표시하고이 다시 작성 "SIG 번호는 서명 블록 시작"문자열을 검색 :

function remove-signature ($signedFile = "D:\ps10\test.ps1") 
{ 
$filecontent = Get-Content $signedFile 
$filecontent[0..(((Get-Content $signedFile | select-string "SIG # Begin signature block").LineNumber)-2)] | Set-Content $signedFile 
} 

이 작동한다고 생각합니다. 나의 첫 번째 생각은 "SIG # Begin"과 "SIG # End"두 영역 사이의 영역을 선택하는 방법을 찾는 것이었다. 그냥 목적을 배우기 위해서 내가 어떻게 할 수 있었는지에 대해 의견이 분분 할 것입니다.

+0

먼저 Get-Content $ signedFile을 두 번 호출 할 필요가 없습니다. 당신은 배열 인덱스 구문 내에서'$ filecontent'를 사용할 수 있습니다. "두 문자열 사이의 영역을 선택하는 방법을 찾는 것"과 같이 다음과 같이하면됩니다 :'$ isOutsideSig = $ true; $ filecontent | 여기서 {$ wasOutsideSig = $ isOutsideSig; if ($ _. StartsWith ('# SIG #')) {$ isOutsideSig = -not $ isOutsideSig}; $ isOutsideSig 및 $ wasOutsideSig} | Set-Content $ signedFile' –

+0

이것은 디지털 서명이없는 일부 스크립트를 손상 시켰습니다. 주의해서 사용하십시오. – Robin

1

나는 이것이 당신이 원했던 대답이 아닌 것 같지만 도움이 될만한 "Remove-AuthenicodeSignauture"cmdlet이 없다고 확신합니다.

서명하는 것은 내가 아는 한 스크립트에 주석 처리 된 섹션을 추가하는 것입니다. 이 주석 처리 된 섹션을 제거하면 서명이 제거되어야합니다. 그러나, 그것은 당신이 직접 쓰는 것이 필요합니다.

관련 문제