2011-04-27 3 views
2

자체 수정 PowerShell 스크립트를 작성할 수 있습니까?자체 수정 PowerShell 스크립트를 작성할 수 있습니까?

"Write-Host `"Goodbye world`"" | Set-Content "foo.ps1" 
Write-Host "Hello world" 

이 스크립트는 Hello world를 출력 :

내가 foo.ps1라는 스크립트가 있다고 가정하자. Goodbye world을 인쇄하려면 어떤 기술을 사용할 수 있습니까?

답변

1

내게는 이해가되지 않습니다. 스크립트를 수정 한 후에는 새 문장을 얻기 위해 다시 점을 찍어야합니다.

 
Write-Host "Hello world" 
"Write-Host `"Goodbye world`"" | Set-Content "foo.ps1" 
. .\foo.ps1 
"Write-Host `"Is really useful?`"" | Set-Content "foo.ps1" 
. .\foo.ps1 

및 인쇄 :

 
Hello World 
Goodbye World 
Is really useful? 

또 다른 가능성은 입력 스크립트 블록을 매개 변수로 받아들이는 스크립트를 작성하는 것입니다

이 스크립트는 자신을 세 번 변경합니다.

+0

내가 제공 한 예제 스크립트는 간단하고 인위적인 것입니다. 자체 수정 코드에는 많은 잠재적 인 용도가 있습니다 (http://stackoverflow.com/questions/516688/what-are-the-uses-of-self-modifying-code). 스크립트에 점을 찍는 아이디어는 내 질문에 대한 하나의 대답입니다. 스크립트가 실행될 때 스크립트를 변경하는 다른 기술이 있으면 궁금합니다. –

+0

자기 수정 스크립트를 요청했습니다. 현재 작업 세션에서 도트 소스보다 새로운 데이터를로드하는 다른 방법은 없습니다. –

+0

Powershell은 실제로 적절한 언어가 아닙니다. 이 [thread] (http://stackoverflow.com/questions/3057487/self-modifying-code)에 관심이있을 수 있습니다. –

-1

네, 그러나 내가 당신과 당신이 성취 할 수있는 더 좋은 방법이 될 것입니다.

C:(...)WindowsPowerShell >.\foo.ps1 
Hello world 
C:(...)WindowsPowerShell >.\foo.ps1 
Goodbye world 
C:(...)WindowsPowerShell > 
+0

명령 줄에서 * 한 번 * 호출 할 내 스크립트를 원합니다. 이를 염두에두고, 기본적으로 내 스크립트 자체를 수정 한 후에 자체 스크립트를 호출하는 것이 좋습니다. –

+0

자체를 삭제할 수도 있습니다 – rerun

관련 문제