Как вы можете запустить скрипт powershell, если вы не знаете, из какого места будет запускаться? - PullRequest
0 голосов
/ 16 января 2020

Я новичок в powershell, так что, может быть, я чего-то не понимаю.

Я пишу инструмент в powershell, и этот инструмент работает в c: \ Users \ Documents \ WindowsPowerShell \ Modules.

Что мне нужно, так это возможность скопировать инструмент на USB-накопитель и запустить его с USB-накопителя.

Как запустить инструмент, если его нет в среде PSModulePath переменный путь?

Или как добавить USB-флешку, добавленную в путь PSModulePath?

Ответы [ 2 ]

0 голосов
/ 17 января 2020

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

#find local directory 
$LocalDir = Split-Path $MyInvocation.MyCommand.Path -Parent

#prove correct directory found.
Write-Host "Starting module load: $($MyInvocation.MyCommand) in directory = $LocalDir"
#load modules
Import-Module $LocalDir/Module –Force

#call first function
firstfunction

Я не мог заставить $PSScriptRoot работать, но * Код 1005 * имеет преимущество в том, что он также работает в ISE. Затем я поместил зависимые модули в каталоги под сценарием .ps1.

0 голосов
/ 16 января 2020

Если вы хотите, чтобы ваш скрипт был переносимым, вам также придется носить с собой зависимый модуль. Однако в своем сценарии вы можете убедиться, что добавили полный путь к родительскому каталогу модуля на USB-накопителе в PSModulePath в качестве переменной среды уровня процесса:

$portableModuleDirectory = [System.IO.DirectoryInfo]'./relative/path/to/dependent/module'
$env:PSModulePath += ";$(Split-Path -Parent $portableModuleDirectory.FullName)"
Import-Module ModuleName

Однако это громоздко чтобы сделать. Лучшим решением здесь будет разместить свой собственный внутренний канал Nuget до pu sh вашего пакета, чтобы вы могли установить модуль на любую машину, на которой он вам нужен, из вашей сети, если вы не можете загрузить его в галерею c PowerShell .

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