2015-02-09 2 views
1

Я работаю над оснасткой PowerShell, я планирую разместить его на IIS в качестве плагина модуля WSMan. Мне интересно, как передать дополнительные параметры из web.config для оснастки?Как передать аргументы в плагин WinRM (PowerShell), размещенный в IIS

Здесь детали:

Web.config файл приложения, которое хост PS оснастки:

<system.webServer> 
    <system.management.wsmanagement.config> 
     <PluginModules> 
     <OperationsPlugins> 
      <Plugin Name="MyPSPlugin" Filename="%windir%\system32\pwrshplugin.dll" SDKVersion="1" XmlRenderingType="text"> 
      <InitializationParameters> 

       <!-- I'd like to declare additional parameter for PS span-in here something like this: --> 
       <Param Name="myData" Value="Test" /> 

       <Param Name="PSVersion" Value="2.0" /> 
       <Param Name="assemblyname" Value="C:\MyServices\PowerShell\Bin\MyPSSnapin.dll" /> 
       <Param Name="pssessionconfigurationtypename" Value="MyCompany.PowerShell.MyPSSessionConfiguration" /> 
      </InitializationParameters> 
      <Resources> 
       <Resource ResourceUri="http://schemas.microsoft.com/powershell/Hosting.PowerShell" SupportsOptions="true"> 
       <Capability Type="Shell" /> 
       </Resource> 
      </Resources> 
      </Plugin> 
     </OperationsPlugins> 
     </PluginModules> 
    </system.management.wsmanagement.config> 
</system.webServer> 

Здесь Реализация PSSessionConfiguration:

namespace MyCompany.PowerShell 
{ 
    public class MyPSSessionConfiguration : PSSessionConfiguration 
    {  
     public override InitialSessionState GetInitialSessionState(PSSenderInfo senderInfo) 
     { 
      // read additional parameter something like this: 
      var myData = sendrerInfo.ApplicationArguments["myData"]; 

      return base.GetInitialSessionState(senderInfo); 
     } 
    } 
} 

ответ

0

Я не знаком с PowerShell разработки плагинов, но в веб-разработке я добавляю ссылку на System.Configuration, а затем используйте ConfigurationManager для чтения в настройках из раздела appsettings web.config в статическом классе с свойствами readonly. Это предотвращает повторное чтение из web.config путем кэширования значений. Можете ли вы применить эту же методику?

web.config

<?xml version="1.0"?> 
<configuration> 
     <appSettings> 
      <add key="MyData" value="Test"/> 
     </appSettings> 
</configuration> 

статический класс

using System; 
using System.Configuration; 
namespace WebTest 
{ 
    public static class CachedSettings 
    { 
     public static string MyData; 
     public static CachedSettings() 
     { 
      MyData = ConfigurationManager.AppSettings["MyData"]; 
     } 
    } 
} 

Затем я могу легко назвать его

string a = CachedSettings.MyData; 
+0

такой же подход уже используется - есть конфигурационный файл для PS snap- В (MyPSSnapin.dll.config). Но я должен удалить файл конфигурации и передать данные через ApplicationArguments. – Victor

Смежные вопросы