2016-09-12 4 views
1

Я пишу некоторые командлеты PowerShell на C# для доступа к нашим производственным серверам и отчета о состоянии IIS/Service.Имя компьютера с сайта ServerManager и ApplicationPool

ServiceController класс имеет свойство MachineName, но ни Site, ни ApplicationPool классы это.

Как бы я хотел возвратить имя компьютера вместе с этими объектами (то есть Get-Service | select MachineName,Status,DisplayName)? Я рассматривал возможность расширения классов, но они запечатаны, и я не хочу тратить время на внедрение this solution.

У кого-нибудь, у кого больше навыков написания командлетов, есть идея, как я могу легко это сделать?

ответ

0

Я просто написал небольшую обертку для классов, которые я хотел. Это не идеально, но это также не так важно, чтобы проводить время.

public class MyApplicationPool 
{ 
    public MyApplicationPool(ApplicationPool appPool, string machineName) 
    { 
     Name = appPool.Name; 
     MachineName = machineName; 
     State = appPool.State; 
     Cpu = appPool.Cpu; 
     QueueLength = appPool.QueueLength; 

     ApplicationPool = appPool; 
    } 

    public string MachineName { get; } 
    public string Name { get; } 
    public ObjectState State { get; } 
    public long QueueLength { get; } 
    public ApplicationPoolCpu Cpu { get; } 

    public ObjectState Start() 
    { 
     return ApplicationPool.Start(); 
    } 

    public ObjectState Stop() 
    { 
     return ApplicationPool.Stop(); 
    } 

    public ObjectState Recycle() 
    { 
     return ApplicationPool.Recycle(); 
    } 

    private ApplicationPool ApplicationPool { get; } 
} 
1

Вы можете использовать собственное выражение с помощью командлета Select, чтобы добавить настраиваемое свойство к возвращаемому им объекту.

$mn = $env:COMPUTERNAME 
Get-Service | Select @{Expression={$mn};Label="MachineName"},Status,DisplayName 

Для получения дополнительной информации о пользовательской экспрессии увидеть эту link.

+0

Спасибо, это полезный совет для PowerShell. Любая идея, как это сделать на C#? Я могу попытаться использовать динамический объект. – hsimah

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