Можно ли писать скрипты PowerShell с самоизменением?
Можно ли писать скрипты PowerShell с самоизменением?
Предположим, у меня есть скрипт с именем foo.ps1
:
"Write-Host `"Goodbye world`"" | Set-Content "foo.ps1"
Write-Host "Hello world"
Этот скрипт распечатывает Hello world
, Какие приемы можно использовать, чтобы распечатать Goodbye world
?
2 ответа
Решение
Для меня это не имеет смысла, после того, как вы изменили сценарий, вам нужно повторно использовать его для получения новой статистики.
Этот скрипт меняет себя три раза:
Write-Host "Привет, мир" "Пиши-Хост`"Прощай, мир`"" | Сет-контент "foo.ps1",.\ Foo.ps1 "Write-Host `"Действительно ли это полезно?`"" | Сет-контент "foo.ps1",.\ Foo.ps1
и печатает:
Привет, мир Прощай мир Это действительно полезно?
Другой возможностью является написание скрипта, который принимает в качестве входных параметров скриптовые блоки.
Да, вы, однако, я был бы лучший способ сделать то, что вы и для достижения.
C:(...)WindowsPowerShell >.\foo.ps1
Hello world
C:(...)WindowsPowerShell >.\foo.ps1
Goodbye world
C:(...)WindowsPowerShell >