PowerShellで証明書の有効期限についてユーザーに警告する

最近、職場で許可されているeTokenの証明書の有効期限についてユーザーに通知するタスクが登場しました。

eTokenの証明書は、Windows証明機関を通じて1年間生成されます。 ユーザーがタイムリーにIT部門に来て延長できるように、1週間以内にユーザーに通知する必要がありました。

所有者のメールのアドレスが証明書に記載されていなかったため、タスクは複雑でした。 したがって、このアドレスをHELLから取得する必要がありました。

アラジンの会社は、この目的のために独自のトークン管理システムソフトウェアを提供していますが、そのためには、はいを支払い、通知にのみ使用する必要があります。

このスクリプトを作成するための主要なリソースはWebサイトでした(ちなみに、PowerShellを介して証明機関と連携することについて多くのことが書かれています)。

ADでユーザーのメールアドレスを検索するには、Active Directory用のActiveRoles管理シェルモジュールを使用しました。ADを操作するためのモジュールは、こちらからダウンロードできます。www.quest.com/ powershell / activeroles-server.aspx

問題なくWin7で入手しましたが、XPまたは2003にインストールするにはコンポーネントを配布する必要があります。 詳細については、ダウンロードするリンクと、 ここに記述されているコマンドの説明を参照してください



#

Add-PSSnapin Quest.ActiveRoles.ADManagement



#

$CaView = New-Object -ComObject CertificateAuthority.View

$CaView.OpenConnection("serv\NEWCERTSERV")



# ,

$properties = "RequestID","RequesterName","NotAfter"

$CaView.SetResultColumnCount($properties.Count)

$properties | %{$CAView.SetResultColumn($CAView.GetColumnIndex($False, $_))}



# , 7

$RColumn = $CAView.GetColumnIndex($False, "NotAfter")

$CaView.SetRestriction($RColumn,0x8,0,[datetime]::Now)

$CaView.SetRestriction($RColumn,0x4,0,(Get-Date).AddDays(+7))

# ,

$RColumn = $CAView.GetColumnIndex($False, "Disposition")

$CaView.SetRestriction($RColumn,1,0,20)



#

$Certs=@()

$Row = $CaView.OpenView()

while ($Row.Next() -ne -1) {

$Cert = New-Object psobject

$Column = $Row.EnumCertViewColumn()

while ($Column.Next() -ne -1) {

$current = $Column.GetName()

$Cert | Add-Member -MemberType NoteProperty -Name $($Column.GetName()) -Value $($Column.GetValue(1)) -Force

}

$Certs+=$Cert

$Column.Reset()

}

$Row.Reset()



#

$Body=""

#

$Body_One=""

#

$smtp = New-Object net.mail.smtpclient("mailserv")

#

foreach ($i in $Certs){

$Body_One+="№: "

$Body_One+=$i.RequestID

$Body_One+=", : "

$Body_One+=$i.{Request.RequesterName}

$Body_One+=", : "

$Body_One+=$i.NotAfter

$Body_One+="`n"



# ,

$user_mail = Get-QADUser $i.{Request.RequesterName} -DontUseDefaultIncludedProperties -IncludedProperties 'mail' -SerializeValues

#

$smtp.Send("notice@domain.ru", $user_mail.mail, "eToken, .", $Body_One+" eToken' 666.")



$Body+=$Body_One

$Body_One=""

}

#

If ($Body -ne ""){

$smtp.Send("notice@domain.ru", "adm1@domain.ru", "eToken, .", $Body)

$smtp.Send("notice@domain.ru", " adm1@domain.ru", "eToken, .", $Body)

$smtp.Send("notice@domain.ru , " adm1@domain.ru", "eToken, .", $Body)

}








PowerShellのファイルからスクリプトを実行するには、Set-ExecutionPolicy RemoteSignedコマンドを実行します。



All Articles