title: Memory size error when creating virtual machine in PowerShell C# codings
body: <p>When I insert file path through my metro app (by browsing to the folder path), the value that I get (in the database) is the same as the below path whereby there's double slashes. Thus, it always give this error:</p>
  
  <p><em><strong>An exception of type 'System.Management.Automation.ParameterBindingException' occurred in System.Management.Automation.dll but was not handled in user code</em></strong></p>
  
  <p>Here's the code with some dummy values for testing:</p>
  
  <pre><code>public bool InsertNewVm(VirtualMachineDetails addVmDetails)
      {
          bool addVmMsg = true;
          //string vmName = addVmDetails.VmName.ToString();
          addVmDetails.VmName = "NewMedia";
          addVmDetails.VmRam = "512MB";
          addVmDetails.VmHardDisk = "C:\\Users\\Public\\Documents\\Hyper-V\\Virtual hard disks\\Win8 Virtual Machine.vhdx";
          addVmDetails.VmOS = "Windows 8";
          addVmDetails.VmIncSoftware = "Visual Studio 2012";
          addVmDetails.VmNetwork = "Virtual Switch";
          addVmDetails.VmDiploma = "INE";
          addVmDetails.VmYear = "Year 1";
          addVmDetails.VmModule = "New Media";
  
          conn.Open();
  
          if (addVmDetails.VmName != "")
          {
              string checkkVmAdd = "SELECT * FROM VirtualMachine where VMName = '" + addVmDetails.VmName.ToString() + "'";
              SqlCommand cmdValidate = new SqlCommand(checkkVmAdd, conn);
  
              SqlDataReader dr = cmdValidate.ExecuteReader();
  
              while (dr.Read())
              {
                  if (dr["VMName"].ToString() == addVmDetails.VmName.ToString()) 
                  {
                      addVmMsg = false;
                      return addVmMsg;
                  }
              }
              dr.Close();
  
              string insertVm = "INSERT INTO VirtualMachine(VMName, Ram, HardDisk, OS, IncludedSoftware, SwitchName, Diploma, Year, Module) values ('" + addVmDetails.VmName.Trim() +
              "','" + addVmDetails.VmRam.Trim() + "','" + addVmDetails.VmHardDisk.Trim() + "','" + addVmDetails.VmOS.Trim() + "','" + addVmDetails.VmIncSoftware.Trim() + "','" + addVmDetails.VmNetwork.Trim() +
              "','" + addVmDetails.VmDiploma.Trim() + "','" + addVmDetails.VmYear.Trim() + "','" + addVmDetails.VmModule.Trim() + "')";
  
              SqlCommand cmdInsert = new SqlCommand(insertVm, conn);
  
              cmdInsert.ExecuteNonQuery();
  
              PowerShell ps = PowerShell.Create();
              ps.AddCommand("New-VM");
              ps.AddParameter("Name", addVmDetails.VmName.Trim());
              ps.AddParameter("VHDPath", addVmDetails.VmHardDisk.Trim());
              ps.AddParameter("SwitchName", addVmDetails.VmNetwork.Trim());
              ps.AddParameter("MemoryStartupBytes", addVmDetails.VmRam.Trim());
              var result = ps.Invoke();
  
              conn.Close();
              return addVmMsg;
          }
          else
          {
              addVmMsg = false;
          }
          return addVmMsg;
      }
  </code></pre>
  
  <p><strong>EDIT:</strong></p>
  
  <p>It turns out that the error isn't coming from the file path. Error occurs when I want to specify the memory size. When I comment out this line below, virtual machine can be created without error:</p>
  
  <p>ps.AddParameter("MemoryStartupBytes", addVmDetails.VmRam.Trim())</p>
  
  <p>Thus, I'm unsure how exactly to create without error when specifying the memory size. In PowerShell, I have to include MB or GB etc after any numbers that I entered for the memory size as without it, I can't create the virtual machine.</p>
  
  <p>Any help is greatly appreciated. </p>
  
  <p>Thanks.</p>