Ответ 1
Общий код в Powershell
Вы можете просто поместить код, который хотите включить в другой файл PS1, а затем "dot source", чтобы этот файл включал его в текущую область:
. D:\script_common\MyCode.ps1
Это все, что нужно.
Использование модуля
Вместо этого вы можете использовать модуль, который может быть включен с помощью командлета Import-Module
. Возможно, вы использовали это для работы с такими вещами, как Active Directory, где вы могли бы сделать что-то вроде этого:
Import-Module ActiveDirectory
В этом случае вам нужно только имя модуля, потому что оно находится в специальном каталоге.
Чтобы написать свои собственные модули в Powershell, вы называете модуль расширением .psm1
. Как правило, вы не делаете бесплатный плавающий код в одном из них; вы записываете функции, которые затем доступны для кода, который импортирует модуль.
Чтобы импортировать модуль script из любого места, используйте полный путь:
Import-Module D:\script_common\MyModule.psm1
Пути модулей
Когда вы создаете свои собственные модули, вы можете сохранить их в любом старом месте, а затем обратиться к ним по их полному пути (как указано выше). Есть также несколько местоположений, которые Powershell ищет для модулей:
-
$PSHome\Modules
(% Windir%\System32\WindowsPowerShell\v1.0\Modules) - Зарезервировано для модулей, поставляемых с Windows. Не помещайте вещи здесь. -
$Home\Documents\WindowsPowerShell\Modules
(% UserProfile%\Documents\WindowsPowerShell\Modules) - % ProgramFiles%\WindowsPowerShell\Modules - это не упоминается в ссылке и, по-видимому, больше используется для модулей конфигурации желаемого состояния (возможно, потому, что это относится ко всей системе).
Это значения по умолчанию, но Powershell использует собственную переменную среды, называемую PSModulePath
, чтобы определить, где искать, и, подобно PATH
, вы можете добавить свою собственную папку к этой переменной.
Это позволяет вам хранить свои модули в своем собственном месте. Просмотрите ссылку для получения дополнительной информации о том, как структурировать ваши папки и как делать имена.
Таким образом, если вы сохраняете модули и "сторонние" модули в одном и том же месте, это зависит от сторонних материалов. Он может устанавливать свои собственные модули в своем собственном месте и изменять путь, или он может просто позволить вам размещать их там, где вы хотите.
Создание папки Temp
Вы можете использовать переменные среды TEMP
или TMP
, чтобы получить путь к папке temp. Чтобы получить их в Powershell, используйте $env:TEMP
или $env:TMP
.
Вам нужно будет создать уникальное имя создаваемой папки. Один из способов сделать это может заключаться в использовании GUID:
$dirName = [System.Guid]::NewGuid().ToString()
New-Item -Path "$($env:TEMP)\$dirName"