Как импортировать новый командлет powershell? - PullRequest
5 голосов
/ 24 января 2012

Я только что загрузил командлет Register-TemporaryEvent из http://poshcode.org/2205 и поместил его в каталог своего профиля powershell рядом со сценарием $profile.

Как создать новую команду Register-TemporaryEventчто будет связано с этим сценарием?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 25 января 2012

Вы можете получить содержимое файла сценария, заключить его в функцию и вызвать код для создания функции.

$sb = Get-Content .\script.ps1 | Out-String
Invoke-Expression "function Register-TemporaryEvent {`n $sb `n} "
2 голосов
/ 24 января 2012

С помощью PowerShell вы можете выполнять сценарии в виде команд, если они помещены в каталоги, содержащиеся в переменной окружения 'PATH'. Чтобы увидеть, какие каталоги находятся в пути, вы можете использовать:

$env:Path -split ';'| sort

Вы можете изменить путь навсегда из Системных свойств Windows, чтобы включить местоположение ваших сценариев, или вы можете временно изменить путь из своего профиля или сценария. В вашем конкретном случае вы можете добавить в свой профиль следующее, чтобы добавить каталог профиля в путь:

$ScriptRoot = Split-Path $SCRIPT:MyInvocation.MyCommand.Path

if(($env:Path -split ';') -notcontains $ScriptRoot) {
    $env:Path += ';' + $ScriptRoot
}

Затем вы можете запустить команду как:

PS >$timer = New-Object Timers.Timer
PS >Register-TemporaryEvent $timer Disposed { [Console]::Beep(100,100) }

Примечание. После завершения вкладки она завершится как Register-TemporaryEvent.ps1, но вы можете удалить «.ps1», и он все равно будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...