使用powershell格式化CSV文件输出
我编写了以下代码,将证书详细信息存储在csv文件中。它可以工作,但在csv文件的每一行中,开头的符号使用powershell格式化CSV文件输出,powershell,csv,Powershell,Csv,我编写了以下代码,将证书详细信息存储在csv文件中。它可以工作,但在csv文件的每一行中,开头的符号@{和结尾的符号}都会被写入。在包含标题的第一列中,符号=也会被写入。因此,我不知道如何在没有这些符号的情况下填充我的csv文件 这是我写的代码 $StartDate = Get-Date $CertPath = 'Cert:\LocalMachine\' $CertsDetail = Get-ChildItem -Path $CertPath -Recurse | Where-Obje
@{
和结尾的符号}
都会被写入。在包含标题的第一列中,符号=
也会被写入。因此,我不知道如何在没有这些符号的情况下填充我的csv文件
这是我写的代码
$StartDate = Get-Date
$CertPath = 'Cert:\LocalMachine\'
$CertsDetail = Get-ChildItem -Path $CertPath -Recurse | Where-Object {$_.PsIsContainer -ne $true } | ForEach-Object {
$DaysLeft = (New-TimeSpan -Start $StartDate -End $_.NotAfter).Days
If ($DaysLeft -lt 30) {
$Under30 = $true
$Text = "The Certificate is but valid about to expire"
}
Else {
$Under30 = $false
}
If ($DaysLeft -lt 1) {
$Expired = $true
#$Not_Expired = $false
$Text = "The Certificate is expired"
}
Else {
$Expired = $false
#$Not_Expired = $true
$Text = "The Certificate is still valid and not going soon to expire"
}
[pscustomobject]@{Text=$Text;`
Subject = $_.Subject;`
ExpireDate = $_.NotAfter;`
DaysRemaining = $DaysLeft;`
Under30Days = $Under30;`
Expired = $Expired;`
#Not_Expired = $Not_Expired
}
}
$obj = [PSCustomObject] @{
'Example Header 1' = $null
'Example Header 2' = $null
'Example Header 3' = $null
'Example Header 4' = $null
'Example Header 5' = $null
'Example Header 6' = $null
$obj | Add-Content -Path 'C:\Users\hanna\Desktop\certificate.csv'
$CertsDetail | Add-Content -Path 'C:\Users\hanna\Desktop\certificate.csv'
试着这样做:
$StartDate = Get-Date
$CertPath = 'Cert:\LocalMachine\'
$CertsDetail = Get-ChildItem -Path $CertPath -Recurse |
Where-Object { $_.PsIsContainer -ne $true } | ForEach-Object {
$DaysLeft = (New-TimeSpan -Start $StartDate -End $_.NotAfter).Days
if ($DaysLeft -lt 1) {
$Under30 = $true
$Expired = $true
$Text = "The Certificate is expired"
}
elseif ($DaysLeft -lt 30) {
$Under30 = $true
$Expired = $false
$Text = "The Certificate is but valid about to expire"
}
else {
$Under30 = $false
$Expired = $false
$Text = "The Certificate is still valid and not going soon to expire"
}
[PSCustomObject]@{
Text = $Text
Subject = $_.Subject
ExpireDate = $_.NotAfter
DaysRemaining = $DaysLeft
Under30Days = $Under30
Expired = $Expired
}
}
$CertsDetail | Export-Csv -Path 'C:\Users\hanna\Desktop\certificate.csv'
$obj
的作用是什么?[1]删除整个$obj
部分&以$obj | Add Content
开头的行。[2] 将$CertsDetail |
行更改为使用导出CSV
而不是添加内容
。[3] 阅读获取帮助导出CSV
中的帮助。。。[咧嘴笑]它可以工作,但仍然有两件事:1->#键入System.Management.Automation.PSCustomObject出现在文件的头部2->以隐藏格式写入的过期日期(######)我还想知道如何使列的大小与内容相匹配,以摆脱#TYPE System.Management.Automation.PSCustomObject
只需将-NoTypeInformation
添加到导出Csv
中,如下所示:导出Csv-Path“C:\Users\hanna\Desktop\certificate.csv”-NoTypeInformation
如果调整列的大小(假设您在Excel中查看csv),是否允许您查看过期日期?