我们正在讨论为我们的分布式系统开发改进的管理基础架构.我们使用COM,Web服务和.NET组件.由于我们基于Microsoft Windows Server XP/2003,我猜,我们基本上有两个选择:
为什么我们会选择Powershell而不是WMI?
当 USB 设备与Win32_DeviceChangeEvent连接时我可以捕获
但只允许查看 3 个属性
class Win32_DeviceChangeEvent : __ExtrinsicEvent
{
uint8 SECURITY_DESCRIPTOR[];
uint64 TIME_CREATED;
uint16 EventType;
};
Run Code Online (Sandbox Code Playgroud)
但我不明白如何获取有关该设备的所有信息。具体来说,它的端口和集线器、VirtualHubAdress Name等。
public enum EventType
{
Inserted = 2,
Removed = 3
}
public static void RegisterUsbDeviceNotification()
{
var watcher = new ManagementEventWatcher();
var query = new WqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 2");
//watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
watcher.EventArrived += (s, e) =>
{
//here is im need to get info about this device
EventType eventType …Run Code Online (Sandbox Code Playgroud) 对此系统管理问题的后续跟进:
由于我可能不会得到很多关于serverfault的反馈,我会在这里尝试一下.
我主要关心的是反映我必须管理的数据库,服务和任务/工作之间的依赖关系.
除了考虑Powershell之外,我甚至考虑过使用MSBuild,因为它允许建模依赖关系并重用配置目标.
换句话说: 我应该使用什么技术来开发灵活的解决方案,使我能够以正确的顺序停止机器D上的服务A,B和C,并在取下数据库X时禁用机器F上的任务E?
...当我取下数据库Y时,我想重新使用该部件来停止服务B和C.