Когда вы пишете функцию Powershell, как долго она сохраняется в памяти? - PullRequest
0 голосов
/ 27 июня 2019

Когда вы пишете функцию Powershell, как долго она сохраняется в памяти. Итак, я разработал пользовательскую функцию и запустил ее, чтобы создать функцию, остается ли эта функция на моем компьютере постоянно, поэтому все, что мне нужно сделать, это вызвать функцию? Если я включил и выключил машину и перезагрузил ее, могу ли я вызвать функцию и т. Д. Нужно ли другому пользователю сначала запускать функцию, прежде чем он сможет ее использовать?

Ответы [ 2 ]

1 голос
/ 27 июня 2019

Функции Powershell сохраняются как сам сеанс powershell, поэтому, когда вы определяете функцию в консоли, вы все равно можете вызывать ее во время работы этой консоли, и после ее закрытия вам придется снова определить функцию.

Однако в системе Powershell есть определенные сценарии, которые запускаются при каждом запуске сеанса Powershell, эти сценарии называются профилями Powershell.

Так что в вашем случае, если вы поместите функцию в профиль Powershell, это будетопределяется непосредственно при открытии сеанса Powershell, и он будет определен навсегда.

Посмотрите здесь, чтобы увидеть профиль powershell

Этот код поместит вашу функцию в профиль:

New-Item -Type Directory -Path "$home/Documents/WindowsPowerShell"
"<Your Function Here>" | Out-File -Force -FilePath $profile.CurrentUserAllHosts

Теперь, когда вы открываете новую консоль Powershell (или запускается любой процесс powershell), ваша функция будет загружаться (даже после перезагрузки системы).

Если у вас есть PowerShellфайл (.ps1), который содержит много функций, вы можете просто скопировать его содержимое в $ Profile.CurrentUserAllHosts, или поместите этот код в $ Profile.CurrentUserAllHosts для импорта вашего файла при запуске Powershell.

Import-Module "<Your File (.ps1) Path Here>"

Обновление

Я забыл сказать, что вы должныизмените политику конфиденциальности Powershell на неограниченную, в противном случае вы получите сообщение об ошибке, в котором запущен скрипт в этой системе.

1 голос
/ 27 июня 2019

Функция существует только в сеансе, где выполняется ее код.Как только вы закроете процесс Powershell, он исчезнет.Но вы можете просто загрузить определение функции снова, и оно вернулось.Если вы хотите иметь функцию в каждом доступном сеансе powershell, создайте модуль и добавьте его в свой userprofile ( вот как ).

function foo {write-host "I am alife"}
foo
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...