Блок кода запрещает запуск скрипта, но работает в интерактивном режиме
У меня есть сценарий, который запускается как запланированная задача, которая завершается с неожиданной ошибкой токена в строке, где определен $ As. Если я удаляю код, скрипт работает правильно. Если я вставлю весь сценарий (включая проблемный раздел) в окно PowerShell, все будет работать как положено.
Я предполагаю, что это простая ошибка, с которой я просто не сталкивался, но я не могу понять, в чем проблема с этим, более опытные глаза будут оценены.
Это выполняется на сервере 2012R2 с PS 5.0.117, но также происходит в версии 4.
# Sanitize $UserLogon
$Garbage = "[?\' ]",''
$As = '[?ÀÁÂÃÄÅÆàáâãäåæ]','a'
$Cs = '[?Çç]','c'
$Es = '[?ÈÉÊËèéêë]','e'
$Is = '[?ÌÍÎÏìíîï]','i'
$Ns = '[?Ññ]','n'
$Os = '[?ÒÓÔÕÖØðòóôõöø]','o'
$Ss = '[?ß]','s'
$Us = '[?ÙÚÛÜùúûü]','u'
$Thorns = '[?Þþ]','th'
$TextReplacers = $Garbage, $As, $Cs, $Es, $Is, $Ns, $Os, $Ss, $Us, $Thorns
foreach ($Replacement in $TextReplacers) {
$UserLogon = $UserLogon -replace $Replacement
}
Точная ошибка, которую я получаю:
At C:\Scripts\Onboarding\CreateUserAccount0.ps1:121 char:17
+ $As = '[?ÀÃÂÃÄÅÆà áâãäåæ]','a'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unexpected token 'ÃÄÅÆà áâãäåæ]','a'
$Cs = '[?Çç]','c'
$Es = '[?ÈÉÊËèéêë]','e'
$Is = '[?ÃŒÃÃŽÃìÃîï]','i'
$Ns = '[?Ññ]','n'
$Os = '[?ÒÓÔÕÖØðòóôõöø]','o'
$Ss = '[?ß]','s'
$Us = '[?ÙÚÛÜùúûü]','u'
$Thorns = '[?Þþ]','th'
$TextReplacers = $Garbage, $As, $Cs, $Es, $Is, $Ns, $Os, $Ss, $Us, $Thorns
foreach ($Replacement in $TextReplacers) {
$UserLogon = $UserLogon -replace $Replacement
}
# Check if AD user already exists.
$UserExists = Get-ADUser -Filter {SamAccountName -eq $UserLogon}
if ($UserExists -ne $Null){
$email = new-object Net.Mail.SMTPClient($mailServer)
$err += "$UserLogon' in expression or statement.
Если я закомментирую $ As, это случается с $ Ns и $ Os. Если я закомментирую $ As, $ Ns и $ Os, он работает нормально.