У меня есть простой скрипт, который читает файл и добавляет новую информацию к нему. Скрипт получает 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"
}