would this work? this creates an array with certs info as hashtable. you
can manipulate it as you want.
$Certificates = Get-ChildItem -Path cert:\LocalMachine\My
$g=@()
If ($Certificates.Count -gt 0)
{ForEach ($Certificate in $Certificates)
{
$strDaysToExpire = (New-TimeSpan -End ([DateTime]$Certificate.NotAfter))
$g += @{
strSubjectName = $Certificate.SubjectName
strIssuerName = $Certificate.IssuerName
strValidFrom = $Certificate.NotBefore
strValidTo = $Certificate.NotAfter
strDaysToExpire = $($strDaysToExpire.days)
}
}
}
$g
On Wed, Jun 11, 2014 at 5:09 PM, Robertson, Casey <
[email protected]> wrote:
> Stepped away from SCCM for a while but used to leverage VBscripts all
> the time to query various things and drop them into WMI. Now that I’m back
> in the SCCM world I’d like to do this again but with PowerShell. Having a
> devil of a time. I found Sherry and Matthew’s script here:
>
>
>
> http://www.sccm-tools.com/tools/vbscript/vbscript-certificates.html
>
>
>
> I wanted to convert it to Powershell but I’m striking out on the initial
> array. This is the code in VBScript:
>
>
>
> Store.Open CAPICOM_LOCAL_MACHINE_STORE, "MY" ,CAPICOM_STORE_OPEN_READ_ONLY
>
> Set Certificates = Store.Certificates
>
>
>
> If Certificates.Count >0 Then
>
> For Each Certificate in Certificates
>
> g=g+1
>
> strSubjectName(g) = Certificate.SubjectName
>
> strIssuerName(g) = Certificate.IssuerName
>
> strValidFrom(g) = Certificate.ValidFromDate
>
> strValidTo(g) = Certificate.ValidToDate
>
> strDaysToExpire(g) = DateDiff("d",now(),Certificate.ValidToDate)
>
>
>
>
>
> This is how I’m trying to do it in Powershell but I keep getting an error
> about “Cannot index into a null array”. Any help? Sorry for being a poor
> scripter J
>
>
>
> $Certificates = *Get-ChildItem* *-Path* cert:\LocalMachine\My
>
>
>
> If ($Certificates.Count -gt 0)
>
> {ForEach ($Certificate in $Certificates)
>
> {
>
> $g++
>
> $strSubjectName[$g] = $Certificate.SubjectName
>
> $strIssuerName[$g] = $Certificate.IssuerName
>
> $strValidFrom[$g] = $Certificate.NotBefore
>
> $strValidTo[$g] = $Certificate.NotAfter
>
> $strDaysToExpire[$g] = *New-TimeSpan* *-End* ([DateTime]
> $Certificate.NotAfter)
>
> $strDaysToExpire[$g] = $($strDaysToExpire.days)
>
>
>
> }
>
> }
>
>
>
> Script probably has other issues too but one step at a time
>
>
>
> Thanks
>
> Casey
>
>