Это не лучший подход, но он должен работать без изменения кода функции.
$DNSlogs = Get-ChildItem "C:/users/Desktop/*.log"
foreach ($d in $DNSlogs) {
$Servername = $d.basename.substring(0,[math]::Min(10,$d.basename.length))
Get-DNSDebugLog -DNSLog $d.FullName | Select *,@{n='ServerName';e={$ServerName}} | Export-Csv -Path '.\ProperlyFormatedLog2.csv' -NoTypeInformation -Append
}
Я знаю, что вы сказали, что вы хотели первые 10 символов имени файла для имени сервера. Я добавил функцию [Math]::Min()
, чтобы захватить все символы, если их длина меньше 10, на случай, если у вас короткое имя сервера. Свойство .basename
объекта file содержит имя файла, исключая расширение.
Мне кажется, что для выполнения ВСЕ, что вы хотите, может потребоваться перезапись, включая параллельную обработку при получении имени сервера. Я также вижу, что ваша функция устанавливает $ServerName
, но вы никогда не используете его.