public psparamdescriptor(psparameter psparam) : base(psparam.Name, null) { this.psparam = psparam; }
private List<psparameter>CheckForParams(Runspace rspace, String scriptcommand) { cancel = false; List<psparameter> parms = null; psparamtype parm = new psparamtype(); Pipeline pline = rspace.CreatePipeline(); String scrpt = "Get-Help "; if (iscommand) { scrpt = "Import-Module \"$PSFramework\"" + Environment.NewLine + scrpt + scriptcommand + " -full"; } else { scrpt += "\"" + scriptcommand + "\" -full"; } pline.Commands.AddScript(scrpt); pline.Commands.Add("Out-String"); Collection<PSObject> rslt = pline.Invoke(); if (rslt != null) { if (rslt[0].ToString().Contains("PARAMETERS")) { String[] lines = rslt[0].ToString().Split(new string[] { Environment.NewLine }, StringSplitOptions.None); if (lines != null) { int idx = 0; bool found = false; do { String line = lines[idx]; if(line == "PARAMETERS") { found = true; } idx++; }while( found == false && idx < lines.Length); if (found) { String line = ""; do { line = lines[idx]; if (line.Trim() != "" && line.Trim().Substring(0, 1) == "-") { psparameter prm = new psparameter(); String param = line.Trim().Substring(1, line.Trim().Length - 1); String[] paramparts = param.Split(' '); prm.Name = paramparts[0].Trim(); if (paramparts.Length == 2) { prm.Type = GetTypeFromString(paramparts[1]); } else { prm.Type = typeof(int); } idx++; line = lines[idx]; prm.Description = line.Trim(); idx += 2; line = lines[idx]; if (line.Contains("true")) { prm.Category = "Required"; } else { prm.Category = "Optional"; } idx += 2; line = lines[idx]; if (line.Contains("Default value")) { String defval = line.Replace("Default value", "").Trim(); if (defval != "") { if (defval.ToLower() == "true" || defval.ToLower() == "false") { prm.DefaultValue = bool.Parse(defval); } else { prm.DefaultValue = defval; } } } parm.Properties.Add(prm); } idx++; }while(line.Substring(0,1) == " " && idx < lines.Length); } } } } pline.Stop(); pline.Dispose(); pline = null; GC.Collect(); if (parm.Properties.Count > 0) { Interface.frmParams frm = new Interface.frmParams(); frm.SetParameters(parm); if (frm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { parms = parm.Properties; } else { cancel = true; } } return parms; }