Получить имя и расширение файла в дистрибутиве Linux, используя powershell - PullRequest
0 голосов
/ 10 мая 2019

Я использовал следующий скрипт в 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')

}
}

1 Ответ

0 голосов
/ 10 мая 2019

Используйте командлет Get-Member, чтобы увидеть, какие поля имеет объект файла.Я думаю, что 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')
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...