Невозможно найти указанный файл.Что-то не так в этом скрипте PowerShell? - PullRequest
0 голосов
/ 25 июня 2019

Я новичок в Powershell и собираюсь написать сообщение в выходной файл, если входной файл не существует в каталоге. Я написал следующий код после ознакомления с большинством документов, доступных в Интернете.

function isDailyCommSummaryExists()
{
    param ($content)
    if(-Not([System.IO.File]::Exists("$filePath\DailyCommSummary.mai")))
    {
        $content | Out-File -FilePath "$filePath\test.txt" -Encoding ascii 
    }
    else
    {
        $content | Out-File -FilePath "$filePath\test.txt" -Encoding ascii -Append
    }
}

$ content - это значение, которое необходимо записать в файл.
$ filePath - это что-то вроде C: \ MyFolder \
Но я получаю сообщение "Невозможно найти указанный файл"
enter image description here
Я не думаю, что использование Out-File здесь неправильно. Пожалуйста, поправьте меня, если это не так.

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Я переписал ваш код, чтобы протестировать его, добавив путь к файлу в качестве параметра, но я не уверен, что он настроен на выполнение того, для чего вы собираетесь:

function isDailyCommSummaryExists()
{
  param ($content,$filePath)
  if(-Not([System.IO.File]::Exists("$filePath\DailyCommSummary.mai")))
  {
    $content | Out-File -FilePath "$filePath\test.txt" -Encoding ascii
  }
  else
  {
    $content | Out-File -FilePath "$filePath\test.txt" -Encoding ascii -Append
  }
}

isDailyCommSummaryExists -content "hello" -filePath "c:\temp"

Это будет искать файл с именем DailyCommSummary.mai и, если его там нет, выведет "hello" в test.txt. Если DailyCommSummary.mai существует, он будет добавлять контент в DailyCommSummary.mai.

Это то поведение, которое вы намеревались?

Вы имеете в виду, что "$ filePath \ DailyCommSummary.mai" в качестве адресатов в выходном файле? В таком случае достаточно простого Out-File с параметром -append.

Редактировать: Основываясь на комментариях, я считаю, что проблема в том, что на вашем пути есть символы подстановки, поэтому это должно работать:

function isDailyCommSummaryExists()
{
  param ($content,$filePath)
  if(-Not([System.IO.File]::Exists("$filePath\DailyCommSummary.mai")))
  {
    $content | Out-File -LiteralPath "$filePath\test.txt" -Encoding ascii
  }
  else
  {
    $content | Out-File -LiteralPath "$filePath\test.txt" -Encoding ascii -Append
  }
}

isDailyCommSummaryExists -content "hello" -filePath "C:\temp\AppData[CSRExtractQueue]\"
0 голосов
/ 25 июня 2019

Попробуйте.

function isDailyCommSummaryExists
{
    param (
        $content
    )

    $filePath = "C:\MyFolder"

    if(-Not([System.IO.File]::Exists("$filePath\DailyCommSummary.mai")))
    {
        $content | Out-File -FilePath "$filePath\test.txt" -Encoding ascii 
    }
    else
    {
        $content | Out-File -FilePath "$filePath\test.txt" -Encoding ascii -Append
    }
}
isDailyCommSummaryExists -content "<put content in here>"

Однако это все, что вам нужно.

function isDailyCommSummaryExists
    {
        param (
            $content
        )

        $filePath = "C:\MyFolder"
        if(-Not([System.IO.File]::Exists("$filePath\DailyCommSummary.mai")))
        {
            $content | Out-File -FilePath "$filePath\test.txt" -Encoding ascii -Append
        }
    }
    isDailyCommSummaryExists -content "<put content in here>"

Out-file с -append создаст файл, если он не существует, идобавить, если это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...