2016-09-16 9 views
1

Я уверен, что это было бы возможно, но не может найти ничего полезного. Я написал сценарий сканирования локального компьютера. Чтобы максимально автоматизировать работу, я не полагаюсь на какие-либо данные от пользователя. Скрипт проверяет IP-адрес локального интерфейса и использует модуль отложенных сетевых инструментов для подсчета количества возможных IP-адресов и каждого из них.PowerShell Используйте сторонний модуль без его установки

Проблема в том, что я использую сторонний инструмент, я должен установить его на любую машину, на которой я хочу использовать этот скрипт. Есть ли способ включить этот сторонний модуль с моим скриптом, например, положить их в одну папку и не устанавливать отдельно?

+0

Проверьте эту ссылку и проверьте, соответствует ли она вашим требованиям. Http://windowsitpro.com/blog/powershell-implicit-remoting-never-install-module-again – Nkosi

+0

Спасибо за ответ, но, к сожалению, это не сработает для меня , Мой скрипт будет запущен в средах клиентов, чтобы быстро обнаружить сетевые устройства и т. Д. Поэтому я не могу дистанцироваться от своих компьютеров до наших. – Junaid

+0

Но как насчет того, чтобы иметь это на одном центральном сервере в своей среде и с остальными использовать это. Я знаю, что это похоже на хак, но это может быть жизнеспособным решением. – Nkosi

ответ

2

Это действительно зависит от того, как вы хотите развернуть свой модуль на других машинах. Если вы хотите поделиться им с сетевым ресурсом или распространять почтовый пакет, вы можете включить эти зависимости вместе с вашим модулем. Просто поместите Indented.Common и Indented.NetworkTools в одной директории с определением сценария, например, так:

MyModule/ 
└╴MyModule.psm1 
└╴Indented.Common/ 
└╴IndentedNetworkTools/ 

Затем вы можете загрузить эти модули непосредственно из MyModule.psm1 (без установки их на глобальный путь модулей):

import-module $psscriptroot\Indented.Common\Indented.Common.psm1 
import-module $psscriptroot\Indented.NetworkTools\Indented.NetworkTools.psm1 

И все. Это также будет работать, если у вас есть нормальный .ps1, а не .psm1 модуль.

Возможно, более элегантным способом было бы использовать WMF5 PackageManagement. Объявите Indented.NetworkTools в качестве зависимостей (NestedModules) в MyModule.psd1, затем publish it on PSGallery. Затем вы можете просто сказать Install-Module MyModule на других машинах - это установит MyModule и его зависимости.

Проблема с этим подходом заключается в том, что любые объявленные зависимости должны также быть доступны на PowershellGallery (которые не имеют Indented.* модулей).

+0

Спасибо qbik и nkosi. Я понял это, но я входил в полный путь, но это кажется лучше. Еще раз, спасибо – Junaid