首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell包括导出-csv中的import-csv数据。

Powershell包括导出-csv中的import-csv数据。
EN

Stack Overflow用户
提问于 2015-10-09 12:46:36
回答 2查看 2K关注 0票数 0

我正在编写一个脚本,从CSV文件中导入计算机列表,然后向这些计算机中的每一台计算机伸出手,提取它们的所有证书信息,并将其导出到一个新的CSV。我的脚本工作得很好,但我无法让它将计算机的名称包含在最终产品中。我已经尝试了我所能想到的一切,包括创建一个新的PSObject,尝试提取env:Computername,并尝试从原始的CSV导出名称,但是没有什么是可行的!这将在单个PC上本地运行。

以下是输入的样子:

服务器

公司名称

Compname2

Compname3

下面是导出:这是虚拟数据:http://i.stack.imgur.com/lSHXK.png

下面是我需要导出的内容:这是虚拟数据,突出显示仅用于:http://i.stack.imgur.com/IPuSt.png

我将复制我的代码在下面,但任何帮助将不胜感激!我在powershell相对较新,一直在自学,所以请原谅代码中的任何错误或冗余。除了在导出中不包括计算机名外,代码已经工作得很好了。

代码语言:javascript
复制
    #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 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-09 13:51:03

使用add成员可以向管道中的每个对象添加自定义属性。where-object过滤掉那些没有subject属性的对象

代码语言:javascript
复制
$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
票数 1
EN

Stack Overflow用户

发布于 2015-10-09 13:37:19

尼基,您不能获得计算机名,因为您只在本地计算机上运行它,您的Get-ChildItem cmdlet工作在cert:上,这是您的本地CERT驱动器,要查看您首先需要的其他计算机以获得远程计算机get文件夹,

您可以使用此函数,然后查看我在脚本中所做的更改/备注,以了解您遗漏的内容。

代码语言:javascript
复制
    ## 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 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33038695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档