我在CentOS上使用以下脚本来获取文件扩展名和文件名,而没有扩展名和完整文件名,并且在Windows上运行良好,但是当我在ubuntu上使用它时却无法正常工作,并且显示了很多错误:
方法调用失败,因为[System.IO.DirectoryInfo]不包含 方法名为“ LastIndexOf”。
方法调用失败,因为[System.IO.DirectoryInfo]不包含名为'Substring'的方法。
下面您可以找到我编写的代码
$files = get-childitem /etc/ssl/certs
foreach ($file in $Files)
{
# Nom du fichier avec extension
$pos_last_anti_slash = $file.LastIndexOf("\")
$fullname = $files.Substring($pos_last_anti_slash+1)
# Extension du fichier
$pos_last_point = $file.LastIndexOf(".")
$extension = $file.Substring($pos_last_point+1)
Write-Host $extension
# Nom du fichier sans extension
$filename = $file.Substring($pos_last_anti_slash+1)
$pos_last_points = $filename.LastIndexOf(".")
$filename = $filename.Substring(0, $pos_last_points)
Write-Host $filename
if($filextension == "p7b")
{
openssl x509 -inform p7b -in /etc/ssl/certs/$fullname -out
/etc/ssl/certs/$filename.pem
$var = ((& openssl x509 -in $file -dates -noout) -match 'notAfter')
}
}
答案 0 :(得分:0)
使用Get-Member
cmdlet查看文件对象具有的字段。我认为可能会对FullName,BaseName,Extension和Name感兴趣。
Get-ChildItem -File -Path '/etc/ssl/certs' | Get-Member
我尚未对此进行测试,但它可能与您要寻找的接近。我确实将==
替换为-eq
。
$certsdir = '/etc/ssl/certs'
$files = Get-ChildItem -File -Path $certsdir
foreach ($file in $files) {
# Nom du fichier avec extension
$fullname = $_.Name
# Extension du fichier
$extension = $_.Extension
Write-Host $extension
# Nom du fichier sans extension
$filename = $_.BaseName
Write-Host $filename
if ($filextension -eq ".p7b") {
openssl x509 -inform p7b -in $_.FullName -out $(Join-Path -Path $certsdir -ChildPath "$filename.pem")
$var = ((& openssl x509 -in $file -dates -noout) -match 'notAfter')
}
}