/// <summary> /// Import and get the information of a Powershell module /// </summary> /// <param name="cmdlet"></param> /// <param name="filename"></param> /// <param name="moduleName">Optionally provide a module name in the very unlikely case when it cannot be set from the filename</param> /// <returns></returns> public static PSModuleInfo ImportModule(this PSCmdlet cmdlet, string filename, string moduleName = null) { var mf = cmdlet.ResolvePath(filename); if (!File.Exists(mf)) { throw new FileNotFoundException($"Module file {mf} was not found."); } moduleName ??= Path.GetFileNameWithoutExtension(mf); var currdir = cmdlet.SessionState.Path.CurrentFileSystemLocation.Path; cmdlet.Run($"Set-Location {Path.GetDirectoryName(mf)}"); cmdlet.Run($"Import-Module {mf}"); PSModuleInfo res = null; foreach (var psObject in cmdlet.Run($"Get-Module {moduleName}")) { res = psObject.BaseObject as PSModuleInfo; } cmdlet.Run($"Set-Location {currdir}"); if (res != null) { return(res); } throw new ItemNotFoundException($"Get-Module operation for {moduleName} yielded no results."); }
/// <summary> /// Remove a module /// </summary> /// <param name="cmdlet"></param> /// <param name="moduleName"></param> public static void RemoveModule(this PSCmdlet cmdlet, string moduleName) { cmdlet.Run($"Remove-Module {moduleName}"); }