我正在编写一个脚本,从CSV文件中导入计算机列表,然后向这些计算机中的每一台计算机伸出手,提取它们的所有证书信息,并将其导出到一个新的CSV。我的脚本工作得很好,但我无法让它将计算机的名称包含在最终产品中。我已经尝试了我所能想到的一切,包括创建一个新的PSObject,尝试提取env:Computername,并尝试从原始的CSV导出名称,但是没有什么是可行的!这将在单个PC上本地运行。
以下是输入的样子:
服务器
公司名称
Compname2
Compname3
下面是导出:这是虚拟数据:http://i.stack.imgur.com/lSHXK.png
下面是我需要导出的内容:这是虚拟数据,突出显示仅用于:http://i.stack.imgur.com/IPuSt.png
我将复制我的代码在下面,但任何帮助将不胜感激!我在powershell相对较新,一直在自学,所以请原谅代码中的任何错误或冗余。除了在导出中不包括计算机名外,代码已经工作得很好了。
#Import File
$Serverlist = Import-Csv "C:\Servers.csv"
#Find Cert info
Foreach ($Server in $ServerList)
{
Write-Host "$Server"
$Servername = $Server
$Certlist = Get-ChildItem -Recurse Cert: | Select-Object Subject, Issuer, Thumbprint, FriendlyName, NotBefore, NotAfter, Extensions
}
#Export CSV
$Certlist | Export-CSV C:\ServerResults.csv 发布于 2015-10-09 13:51:03
使用add成员可以向管道中的每个对象添加自定义属性。where-object过滤掉那些没有subject属性的对象
$ServerList |
ForEach-Object {
Get-ChildItem -Recurse Cert: | Where-Object Subject -NE $null |
Add-Member Noteproperty -Name Server -Value $_ -PassThru
} | Select-Object Server,Subject, Issuer, Thumbprint, FriendlyName, NotBefore, NotAfter, Extensions |
Export-csv -Path C:\temp\mycsv.csv -NoTypeInformation发布于 2015-10-09 13:37:19
尼基,您不能获得计算机名,因为您只在本地计算机上运行它,您的Get-ChildItem cmdlet工作在cert:上,这是您的本地CERT驱动器,要查看您首先需要的其他计算机以获得远程计算机get文件夹,
您可以使用此函数,然后查看我在脚本中所做的更改/备注,以了解您遗漏的内容。
## Helper Function to Get the Remote CERT PSDrive
function Get-RemoteCert( $ComputerName=$env:computername ){
$ro=[System.Security.Cryptography.X509Certificates.OpenFlags]"ReadOnly"
$lm=[System.Security.Cryptography.X509Certificates.StoreLocation]"LocalMachine"
$store=new-object System.Security.Cryptography.X509Certificates.X509Store("\\$computername\root",$lm)
$store.Open($ro)
$store.Certificates
}
#Import File
$Serverlist = Import-Csv "C:\Servers.csv"
$Output = @()
#Find Cert info
Foreach ($Server in $ServerList)
{
$Certlist = Get-RemoteCert -ComputerName $Server
#$Certlist = Get-ChildItem -Recurse Cert: | Select-Object Subject, Issuer, Thumbprint, FriendlyName, NotBefore, NotAfter, Extensions
Foreach ($cert in $Certlist)
{
$Result = "" | Select Computer,Subject, Issuer, Thumbprint, FriendlyName, NotBefore, NotAfter, Extensions
$Result.Computer = $Server
$Result.Subject = $cert.Subject
$Result.Issuer = $cert.Issuer
$Result.Thumbprint = $cert.Thumbprint
$Result.FriendlyName = $cert.FriendlyName
$Result.NotBefore = $cert.NotBefore
$Result.NotAfter = $cert.NotAfter
$Result.Extensions = $cert.Extensions
$Output += $Result
}
}
#Export CSV
$Output | Export-CSV C:\ServerResults.csv https://stackoverflow.com/questions/33038695
复制相似问题