public IEnumerable<PSCertificate> ListCertificates(ListCertificateOptions options)
{
if (options == null)
{
throw new ArgumentNullException("options");
}
// Get the single certificate matching the specified thumbprint
if (!string.IsNullOrWhiteSpace(options.Thumbprint))
{
WriteVerbose(string.Format(Resources.GetCertificateByThumbprint, options.Thumbprint));
CertificateOperations certOperations = options.Context.BatchOMClient.CertificateOperations;
ODATADetailLevel getDetailLevel = new ODATADetailLevel(selectClause: options.Select);
Certificate certificate = certOperations.GetCertificate(options.ThumbprintAlgorithm, options.Thumbprint,
detailLevel: getDetailLevel, additionalBehaviors: options.AdditionalBehaviors);
PSCertificate psCertificate = new PSCertificate(certificate);
return new PSCertificate[] { psCertificate };
}
// List certificates using the specified filter
else
{
string verboseLogString = null;
ODATADetailLevel listDetailLevel = new ODATADetailLevel(selectClause: options.Select);
if (!string.IsNullOrEmpty(options.Filter))
{
verboseLogString = Resources.GetCertificatesByFilter;
listDetailLevel.FilterClause = options.Filter;
}
else
{
verboseLogString = Resources.GetCertificatesNoFilter;
}
WriteVerbose(verboseLogString);
CertificateOperations certOperations = options.Context.BatchOMClient.CertificateOperations;
IPagedEnumerable<Certificate> certificates = certOperations.ListCertificates(listDetailLevel, options.AdditionalBehaviors);
Func<Certificate, PSCertificate> mappingFunction = c => { return new PSCertificate(c); };
return PSPagedEnumerable<PSCertificate, Certificate>.CreateWithMaxCount(
certificates, mappingFunction, options.MaxCount, () => WriteVerbose(string.Format(Resources.MaxCount, options.MaxCount)));
}
}