Windows 10 регулярно получает обновления через центр обновлений MS, в настоящее время она использует версию PowerShell:
PS C:\Users\user> $psversiontable
Name Value
---- -----
PSVersion 5.1.17134.228
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17134.228
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Windows 7 поставляется с версией 2.0 из коробки,Как вы можете видеть в ответе здесь :
PS C:\Users\user> get-host
Name : ConsoleHost
Version : 2.0
InstanceId : 61ef8a3b-0212-4743-87a1-eb2c00fb1e29
UI : System.Management.Automation.Internal.Host.InternalHostUserI
nterface
CurrentCulture : en-US
CurrentUICulture : en-US
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
Я предлагаю проверить совместимость используемых команд -and либо:
- Обновление версии PowerShell.
-или
Перепишите функцию, используя совместимые команды.
РЕДАКТИРОВАТЬ: Мое второе предложение - опробовать инструменты .NET, когда мне не удается выполнить модули powershell.В этом случае я бы попытался заменить -creplace следующим:
function limpia() {
$regex = [System.Text.RegularExpressions.Regex]
write-host "FUNCION LIMPIA ARCHIVO TXT" -fore white
$a = get-content $root\UNB\TMP\FACT_TEMPORAL.txt |
Foreach-Object { $regex::Replace($_, '^[.! pÿ>i@]{1,}', '') } |
Foreach-Object { $regex::Replace($_, '^0 {2,}', '') } |
Foreach-Object { $regex::Replace($_, '>', '') } |
Foreach-Object { ($_.TrimEnd() )} | Where-Object {$_ -ne ""} |
set-content $root\UNB\FINAL_TEXTO\FACT_FINAL.txt
}
Я не проверял шаблоны, вам придется делать это самостоятельно.Поскольку я не знаю структуру файла, я не могу дать вам лучший ответ, похоже, вы можете очистить файл, используя только один цикл foreach и одно регулярное выражение.