我正在用C#编写一些PowerShell cmdlet来访问我们的生产服务器并报告IIS /服务状态。
ServiceController
类具有MachineName
属性,但Site
和ApplicationPool
类都没有。
如何将计算机名称与这些对象一起返回(即Get-Service | select MachineName,Status,DisplayName
)?我考虑过延长课程,但是他们是密封的,我不希望花时间实施this solution。
有没有更多写cmdlet技能的人知道我如何轻松完成这项工作?
答案 0 :(得分:1)
您可以将自定义表达式与Select
cmdlet一起使用,以将自定义属性添加到其返回的对象中。
$mn = $env:COMPUTERNAME
Get-Service | Select @{Expression={$mn};Label="MachineName"},Status,DisplayName
有关自定义表达式的详细信息,请参阅此link。
答案 1 :(得分: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; }
}