private void ProcessInstallHelper(string[] pkgNames, VersionRange pkgVersion, bool pkgPrerelease, string[] pkgRepository, PSCredential pkgCredential, InstallPkgParams reqResourceParams) { var inputNameToInstall = Utils.ProcessNameWildcards(pkgNames, out string[] errorMsgs, out bool nameContainsWildcard); if (nameContainsWildcard) { WriteError(new ErrorRecord( new PSInvalidOperationException("Name with wildcards is not supported for Install-PSResource cmdlet"), "NameContainsWildcard", ErrorCategory.InvalidArgument, this)); return; } foreach (string error in errorMsgs) { WriteError(new ErrorRecord( new PSInvalidOperationException(error), "ErrorFilteringNamesForUnsupportedWildcards", ErrorCategory.InvalidArgument, this)); } // this catches the case where Name wasn't passed in as null or empty, // but after filtering out unsupported wildcard names there are no elements left in namesToInstall if (inputNameToInstall.Length == 0) { return; } if (!ShouldProcess(string.Format("package to install: '{0}'", String.Join(", ", inputNameToInstall)))) { WriteVerbose(string.Format("Install operation cancelled by user for packages: {0}", String.Join(", ", inputNameToInstall))); return; } var installedPkgs = _installHelper.InstallPackages( names: pkgNames, versionRange: pkgVersion, prerelease: pkgPrerelease, repository: pkgRepository, acceptLicense: AcceptLicense, quiet: Quiet, reinstall: Reinstall, force: false, trustRepository: TrustRepository, noClobber: NoClobber, credential: pkgCredential, asNupkg: false, includeXML: true, skipDependencyCheck: SkipDependencyCheck, savePkg: false, pathsToInstallPkg: _pathsToInstallPkg); if (PassThru) { foreach (PSResourceInfo pkg in installedPkgs) { WriteObject(pkg); } } }
private void RequiredResourceHelper(Hashtable reqResourceHash) { var pkgNames = reqResourceHash.Keys; foreach (string pkgName in pkgNames) { var pkgParamInfo = reqResourceHash[pkgName]; // Format should now be a hashtable, whether the original input format was json or hashtable if (!(pkgParamInfo is Hashtable pkgInstallInfo)) { return; } InstallPkgParams pkgParams = new InstallPkgParams(); var pkgParamNames = pkgInstallInfo.Keys; PSCredential pkgCredential = Credential; foreach (string paramName in pkgParamNames) { if (string.Equals(paramName, "credential", StringComparison.InvariantCultureIgnoreCase)) { WriteVerbose("Credential specified for required resource"); pkgCredential = pkgInstallInfo[paramName] as PSCredential; } pkgParams.SetProperty(paramName, pkgInstallInfo[paramName] as string, out ErrorRecord IncorrectVersionFormat); if (IncorrectVersionFormat != null) { ThrowTerminatingError(IncorrectVersionFormat); } } if (pkgParams.Scope == ScopeType.AllUsers) { _pathsToInstallPkg = Utils.GetAllInstallationPaths(this, pkgParams.Scope); } VersionRange pkgVersion; // If no Version specified, install latest version for the package. // Otherwise validate Version can be parsed out successfully. if (pkgInstallInfo["version"] == null || string.IsNullOrWhiteSpace(pkgInstallInfo["version"].ToString())) { pkgVersion = VersionRange.All; } else if (!Utils.TryParseVersionOrVersionRange(pkgInstallInfo["version"].ToString(), out pkgVersion)) { var exMessage = "Argument for Version parameter is not in the proper format."; var ex = new ArgumentException(exMessage); var IncorrectVersionFormat = new ErrorRecord(ex, "IncorrectVersionFormat", ErrorCategory.InvalidArgument, null); ThrowTerminatingError(IncorrectVersionFormat); } ProcessInstallHelper( pkgNames: new string[] { pkgName }, pkgVersion: pkgVersion, pkgPrerelease: pkgParams.Prerelease, pkgRepository: new string[] { pkgParams.Repository }, pkgCredential: pkgCredential, reqResourceParams: pkgParams); } }