У меня есть простой скрипт, который читает файл и добавляет новую информацию к нему. Скрипт получает 2 параметра: srv и key . Если srv уже существует, добавьте key в конец строки. Если нет, добавьте в конец файла.

Логика работает отлично. Проблема в том, что я получаю get-content: stream was not readable в большинстве случаев (но не всегда), когда srv уже существует.

Если я печатаю $arrHosts непосредственно перед set-content , это правильный массив. Поэтому я предполагаю, что это временная проблема с потоковой передачей $hostsFile .

Я надеюсь на исправление в Powershell, а не .NET.

Автор сценария:

[string]$srv = $args[0]
[string]$key = $args[1]
$hostsFile = '..\file_destination..\..'
[array]$arrHosts = Get-Content $hostsFile

if ($arrHosts -ne $null)
{
    for ($i=0; $i -le $arrHosts.Length; $i++)
    {
        if ($arrHosts[$i] -match "$srv\s")
        {
            $arrHosts[$i] += " $key"
            break
        }
        elseif ($i -eq $arrHosts.Length)
        {   
            $arrHosts += $srv+" "+$key
            break
        }
    }
    $arrHosts | Set-Content -Path $hostsFile
}
else
{
    Add-Content -path $hostsFile -value "`n$srv $key"
}

1 ответ1

0

Похоже, вы подходите к этой проблеме правильно. Я бы сделал это так же. Можете ли вы поделиться некоторыми примерами сообщения об ошибке? Какая часть скрипта выдает ошибку?

Я бы прокомментировал ваш вопрос выше, но у меня нет необходимой репутации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .