using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Management.Automation; using System.Management.Automation.Provider; using Intel.Management.Mei; using Intel.Management.Wsman; namespace Intel.Management.Module.Amt { class AmtDriveInfo : DriveInfo { class ConfigDrive : DriveContainer { WsmanConnection _conn; public ConfigDrive(WsmanConnection conn) : base("Configuration") { _conn = conn; _items = null; } public override ManagedItem[] GetChildItems(bool force) { List list = new List(); if (_items == null) { list.Add(new StorageAdmin(_conn).RootFolder); _items = list.ToArray(); } return _items; } } class RootDrive : DriveContainer { WsmanConnection _conn; public RootDrive(WsmanConnection conn) : base(string.Empty) { _conn = conn; _items = null; } public override ManagedItem[] GetChildItems(bool force) { List list = new List(); if (_items == null) { list.Add(new ConfigDrive(_conn)); list.Add(new StorageManager(_conn).RootFolder); _items = list.ToArray(); } return _items; } } public AmtDriveInfo(PSDriveInfo driveInfo,AmtDriveParameters driveParams) : base(driveInfo) { WsmanConnection conn = new WsmanConnection(); string prefix = "http://"; string port=":16992"; if (driveParams.TLS.IsPresent) { prefix = "https://"; port = ":16993"; } char[] splits = {':'}; string[] hostParts = driveParams.ComputerName.Split(splits); if (hostParts.Length > 1) { if (hostParts[1].Equals("80") || hostParts[1].Equals("443")) { port = string.Empty; } else { port = ":" + hostParts[1]; } } conn.Address = prefix + hostParts[0] + port + "/wsman"; string user = string.Empty; object pass = string.Empty; if (Credential.UserName != null) user = Credential.UserName; if (Credential.Password != null) pass = Credential.Password; conn.SetCredentials(user, pass); _root = new RootDrive(conn); /* List driveList = new List(); //define the admin container StorageAdmin stgAdmin = new StorageAdmin(_conn); ManagedItem[] adminChildren = { stgAdmin.RootFolder }; DriveContainer configContainer = new DriveContainer("Config", adminChildren); driveList.Add(configContainer); driveList.Add(new StorageItem(this)); if (string.Compare(driveInfo.Root,"Admin", true) == 0) { } else if (string.Compare(driveInfo.Root, "Storage", true) == 0) { } else { } _root = new DriveContainer(string.Empty, driveList.ToArray()); //if (Root= //"https://serverhame:16992/wsman"*/ } } }