Сертификат PFX / Software не работает должным образом - PullRequest
0 голосов
/ 12 октября 2018

У меня есть сценарий, который был создан и протестирован другим государством, с целью сканирования определенного каталога на каждом компьютере в нашем Домене, поиска файлов .pfx, а затем копирования их в каталог хранилища при регистрации действия,раз в месяц.Оттуда мы можем на административной стороне проверить сертификат и посмотреть, нужно ли нам его хранить.

Таким образом, сценарий должен выполнять три основных вещи:

  1. Найдите файлы .pfx в каталоге.
  2. Скопируйте любой файл в каталог хранения.
  3. Зарегистрируйте все эти действия в ежемесячном отчете.

Что это НЕделает, копирует файл или регистрирует его.Я просмотрел сценарий, а затем исследовал другое содержимое на этом сайте, и я не могу понять, ЧТО я, или этот сценарий работает неправильно.Мне нужно, чтобы скопировать файл и записать в указанное место, как это было в другом штате, где он был запущен.Сценарий ниже, с опущенной определенной конфиденциальной информацией.

$computers = Get-ADComputer -Filter * -SearchBase "OU=CAC Not Required,OU=DESKTOPS,OU=WORKSTATIONS,OU=WIN10,OU=,OU=,DC=,DC=,DC=,DC="
$destination = "\\NGVT-SA7V-02\Software\10 - Patching Logs\Soft Cert Clean"

foreach ($computer in $computers){

    $client = $computer.name

    if (Test-Connection -ComputerName $client -Count 1 -ErrorAction SilentlyContinue) {

            $outputdir = "$destination\$client"
            $ext = "*.pfx"
            $filerepo = "$outputdir\Files"
            $files = Get-ChildItem -Path \\$client\c$\Users -Filter $ext -Recurse -ErrorAction SilentlyContinue

                if (!$files){

                    Write-Host -ForegroundColor Green "There are no .pfx files on $client."
                }

                else {

                    if (Test-Path -Path $outputdir) {

                        Write-Host -ForegroundColor Cyan "PFX files found on $client"
                        Write-Host -ForegroundColor Gray "Output directory exists for $client"

                        $files | Select fullname, length | Out-File $outputdir\PFX_List.txt
                        $files | Copy-Item -Destination $filerepo -ErrorAction SilentlyContinue

                        Write-Host -ForegroundColor Cyan "Files moved to share server for $client."

                    }

                    else {

                        Write-Host -ForegroundColor Cyan "PFX files found on $client"

                        New-Item -ItemType Directory $outputdir -Force | Out-Null
                        New-Item -ItemType Directory $filerepo -Force | Out-Null

                        Write-Host -ForegroundColor Yellow "Output directory and File repo created for $client"

                        $files| Select fullname, length | Out-File $outputdir\PFX_List.txt
                        $files | Copy-Item -Destination $filerepo -ErrorAction SilentlyContinue 

                        Write-Host -ForegroundColor Cyan "Files moved to share server for $client."

                    }
                }
    }
    else {
        Write-Host -ForegroundColor Red "$client is not online."
    }    
}

1 Ответ

0 голосов
/ 12 октября 2018

Хотя у меня явно нет вашей среды для тестирования, следующий код может работать.Я использовал предложение @ Тео о создании каталога.Командлет New-Item создаст промежуточные каталоги, поэтому нет необходимости вызывать его дважды.

$computers = Get-ADComputer -Filter * -SearchBase "OU=CAC Not Required,OU=DESKTOPS,OU=WORKSTATIONS,OU=WIN10,OU=,OU=,DC=,DC=,DC=,DC="
$destination = "\\NGVT-SA7V-02\Software\10 - Patching Logs\Soft Cert Clean"
$ext = "*.pfx"

foreach ($computer in $computers) {
    $client = $computer.name

    if (Test-Connection -ComputerName $client -Count 1 -ErrorAction SilentlyContinue) {
        $outputdir = "$destination\$client"
        $filerepo = "$outputdir\Files"
        $files = Get-ChildItem -Path \\$client\c$\Users -Filter $ext -Recurse -ErrorAction SilentlyContinue

        if (!$files) {
            Write-Host -ForegroundColor Green "There are no .pfx files on $client."
        } else {
            Write-Host -ForegroundColor Cyan "PFX files found on $client"

            if (-not (Test-Path -Path $filerepo)) {
                New-Item -ItemType Directory $filerepo -Force | Out-Null
                Write-Host -ForegroundColor Yellow "Output directory and File repo created for $client"
            }

            $files | Select fullname, length | Out-File $outputdir\PFX_List.txt
            $files | Copy-Item -Destination $filerepo -ErrorAction SilentlyContinue

            Write-Host -ForegroundColor Cyan "Files moved to share server for $client."
        }
    } else {
        Write-Host -ForegroundColor Red "$client is not online."
    }
}
...