Неожиданный токен в выражении или инструкции

## To run the script
# .\get_status.ps1 -Hostname <host> -Service_Action <action> -Service_Name <name>

#$Hostname = "hostname"
#$Service_Action = "Get-Service"
#$Service_Name = "service_name"

param(
    [string]$Hostname,
    [string]$Service_Action,
    [string]$Service_Name
)

$ScriptBlockContent = {
    param($Service_Action, $Service_Name)
    & $Service_Action $Service_Name
    }

# user credentials
$Username = "username"
$Password = "password"

# To avoid Manual entry of Username and Password
$Secure_String = convertto-securestring $Password -asplaintext -force
$User_cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $Username, $Secure_String

# Create a Session
$pso = New-PSSessionOption -NoMachineProfile
$sess = New-PSSession -ComputerName $Hostname -SessionOption $pso -credential $User_cred

#Run a powershell script in the session.
Invoke-Command -Session $sess -ScriptBlock $ScriptBlockContent -ArgumentList $Service_Action, $Service_Name

# Remove session
Remove-PSSession $sess

To run the script:

.\<script_name>.ps1 -Hostname <host> -Service_Action <action> -Service_Name <name>

For ex: Service Action is- Get-Service, Stop-Service, Start-Service
and then Name

Command: Get-Service Servicename

I am getting an error:
Unexpected token in expression or statement on this line of code:

$ScriptBlockContent = {
        param($Service_Action, $Service_Name)
        $Service_Action $Service_Name # here is the error
        }

asked Oct 6, 2017 at 17:10

born2Learn's user avatar

born2Learnborn2Learn

1,2935 gold badges14 silver badges25 bronze badges

6

You are passing your commands as strings to your function, so what you are syntactically doing with $Service_Action $Service_Name is to refer to two string objects in one line without any operator connecting them. That is the reason for the exception.

To tell powershell, that you want to execute a string as a command you have several options:

One option is to pass the commands as a single string to the Invoke-Expressioncmdlet:

Invoke-Expression "$Service_Action $Service_Name"

Alternatively you can use the call-Operator &, which also tells powershell to treat a command as string. In this case you cannot give cmdlet and arguments in a single string, but in two:

& $Service_Action $Service_Name

answered Oct 6, 2017 at 18:38

Manuel Batsching's user avatar

0

## To run the script
# .\get_status.ps1 -Hostname <host> -Service_Action <action> -Service_Name <name>

#$Hostname = "hostname"
#$Service_Action = "Get-Service"
#$Service_Name = "service_name"

param(
    [string]$Hostname,
    [string]$Service_Action,
    [string]$Service_Name
)

$ScriptBlockContent = {
    param($Service_Action, $Service_Name)
    & $Service_Action $Service_Name
    }

# user credentials
$Username = "username"
$Password = "password"

# To avoid Manual entry of Username and Password
$Secure_String = convertto-securestring $Password -asplaintext -force
$User_cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $Username, $Secure_String

# Create a Session
$pso = New-PSSessionOption -NoMachineProfile
$sess = New-PSSession -ComputerName $Hostname -SessionOption $pso -credential $User_cred

#Run a powershell script in the session.
Invoke-Command -Session $sess -ScriptBlock $ScriptBlockContent -ArgumentList $Service_Action, $Service_Name

# Remove session
Remove-PSSession $sess`enter code here`

answered Oct 6, 2017 at 19:19

born2Learn's user avatar

born2Learnborn2Learn

1,2935 gold badges14 silver badges25 bronze badges

  • Remove From My Forums
  • Вопрос

  • #$ConfirmPreference = «None»
    $H = import-csv
    \\networkpath\HOL.csv
    $MB = import-csv \\networkpath\testgroup.csv
     foreach ($U in $MB)
    {
     get-mailbox -identity $U.user | foreach ($sub in $H)
        {
            search-mailbox -Identity $U.User -SearchQuery («kind:calendar AND subject:» + $sub.Holiday) -deletecontent -Force
        }
    }

    The above code keeps giving me «Unexpected token ‘in’ in expression or statement.»

     get-mailbox -identity $U.user | foreach($sub in <<<<  $H)

    I’m trying to pull the users from testgroup, then for each of those users search for the contents of the HOL list and deletecontent for each.  This is my first attempt at a nested foreach, sorry if it’s a rudimentary question.

Ответы

  • Near as I can tell, there’s no reason for that get-mailbox to be there (left over from testing?).  At any rate, see if this doesn’t work better:

    #$ConfirmPreference = «None»
    $H = import-csv
    \\networkpath\HOL.csv
    $MB = import-csv \\networkpath\testgroup.csv
     foreach ($U in $MB)
    {
      foreach ($sub in $H)
        {
            search-mailbox -Identity $U.User -SearchQuery («kind:calendar AND subject:» + $sub.Holiday) -deletecontent -Force
        }
    }


    [string](0..33|%{[char][int](46+(«686552495351636652556262185355647068516270555358646562655775 0645570″).substring(($_*2),2))})-replace » «

    • Предложено в качестве ответа

      25 января 2011 г. 15:28

    • Помечено в качестве ответа
      Richard MuellerMVP, Banned
      25 января 2011 г. 15:43

Ошибка «Unexpected Token» является одной из распространенных проблем, с которой сталкиваются разработчики при попытке выполнить запрос к REST API AppInsight с использованием PowerShell.

Описание

PowerShell — это мощный язык программирования и оболочка командной строки, разработанная компанией Microsoft. Он предоставляет множество инструментов и функций для автоматизации различных задач, включая выполнение запросов к REST API.

Application Insights (AppInsight) — это сервис мониторинга, разработанный Microsoft для отслеживания, анализа и управления производительностью и активностью веб-приложений. REST API AppInsight предоставляет возможность взаимодействия с сервисом, позволяя получать различную информацию о приложении.

Когда разработчики пытаются выполнить запрос к REST API AppInsight с использованием PowerShell, они могут столкнуться с ошибкой «Unexpected Token». Эта ошибка указывает на то, что в коде PowerShell найден неожиданный токен, который не может быть интерпретирован или распознан.

Причины возникновения

Ошибка «Unexpected Token» может возникнуть по нескольким причинам:

  1. Синтаксическая ошибка: Проблема может быть связана с неверно написанным синтаксисом в коде PowerShell, таким как неправильное использование кавычек, скобок, знаков препинания и других элементов синтаксиса.

  2. Неизвестный токен: PowerShell не распознает определенный токен в коде. Это может быть связано с опечаткой, неправильным указанием идентификатора, невозможностью распознать символы или другими факторами.

  3. Несовместимая версия PowerShell: Некоторые функции или команды могут не поддерживаться определенной версией PowerShell, что может привести к ошибке «Unexpected Token».

Решение

Для устранения ошибки «Unexpected Token» в PowerShell при запросе к REST API AppInsight рекомендуются следующие действия:

  1. Проверьте синтаксис: Внимательно проверьте синтаксис кода PowerShell на предмет ошибок и опечаток. Убедитесь, что использованы правильные кавычки, скобки и знаки препинания.

  2. Проверьте токены: Если ошибка указывает на неизвестный токен, убедитесь, что все идентификаторы и символы правильно указаны. Проверьте, что используется правильное написание идентификаторов и аргументов команд.

  3. Обновите версию PowerShell: Если проблема связана с несовместимостью версии PowerShell, попробуйте использовать более новую или поддерживаемую версию. Обновление PowerShell может решить проблему с несовместимыми функциями или командами.

  4. Изучите документацию: Обратитесь к документации PowerShell и REST API AppInsight, чтобы узнать больше о том, как правильно выполнять запросы к сервису AppInsight с использованием PowerShell, и избежать подобных ошибок.

Заключение

Ошибка «Unexpected Token» в PowerShell при запросе к REST API AppInsight может оказаться вызванной синтаксической ошибкой, указанием неверного токена или несовместимой версией PowerShell. Проверьте синтаксис кода, убедитесь в правильном использовании токенов и, при необходимости, обновите версию PowerShell. Проконсультируйтесь с документацией PowerShell и REST API AppInsight для получения дополнительной информации и решения проблемы.

Обновлено

Вопрос:

имеют большой 2013 год. Я мочу руки на своем первом скрипте PS, и я застрял на очень распространенной ошибке, ошибке “Неожиданный токен”. Я искал в Интернете, но не нашел ответа, поэтому, пожалуйста, помогите мне.

    If ($_.Voorvoegsel.Trim() -ieq "") {
$dn = $_.Voornaam.Trim() + " "
$dn += $_.Achternaam.Trim()
$email = $_.Voornaam.substring(0,1).ToLower() + "."
$email+= $_.Achternaam.Trim().ToLower() + "@test.nl
} Else {
$dn = $_.Voornaam.Trim() + " "
$dn += $_.Voorvoegsel.Trim() + " "
$dn += $_.Achternaam.Trim()
$email = $_.Voornaam.substring(0,1).ToLower() + "."
$email += $_.Voorvoegsel.Replace(" ","").ToLower()
$email += $_.Achternaam.Trim().ToLower() + "@test.nl
}

Странно то, что это ошибки в переменной $ _. Voorvoegsel в инструкции else:

Unexpected token '
$dn += $_.Voorvoegsel.Trim()
$dn += ' in expression or statement.
At C:\Users\Public\Documents\PSImportTest.ps1:42 char:12
+             $dn = $_ <<<< .Voornaam.Trim() + " "
+ CategoryInfo          : ParserError: (
$dn += $_....m()
$dn += :String) [], ParseException
+ FullyQualifiedErrorId : UnexpectedToken

Кто-нибудь, кто видит, что мое слепое пятно здесь?

Лучший ответ:

Возможно, вам не хватает конечной цитаты в строке 5:

$email += $_.Acternaam.Trim().ToLower() + "@test.nl"

Похоже, вы также можете пропустить один в строке 12. Powershell может подумать, что остальная часть кода до следующего символа кавычки является частью вашего строкового литерала.

I try to script a log which gets a program name and version and writes it to a log

Powershell

$Program = '*Nuance*'
$query64 = (Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | select DisplayName, Publisher, InstallDate | where {$_.DisplayName -like $Program} )
$query32 = (Get-ItemProperty HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | select DisplayName, Publisher, InstallDate | where {$_.DisplayName -like $Program} )
$date = get-date -format "dd-MM-yyyy-HH-mm"
$logfile = "C:\Temp\NuancePowerPdfBase.log"
$logtext = $env:COMPUTERNAME $query64 $query32
"["+$date+"] - " + $logtext >> $logfile

but the result is an «unexpected token». Can someone tell me why?

In Zeile:6 Zeichen:30
+ $logtext = $env:COMPUTERNAME $query64 $query32
+                             ~~~~~~~~
Unerwartetes Token «$query64» in Ausdruck oder Anweisung.
In Zeile:6 Zeichen:39
+ $logtext = $env:COMPUTERNAME $query64 $query32
+                                     ~~~~~~~~
Unerwartetes Token «$query32» in Ausdruck oder Anweisung.
    + CategoryInfo         : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnexpectedToken

Когда встречается. Допустим, вы пишете цикл for на JavaScript и вспоминаете, что там нужна переменная цикла, условие и шаг цикла:

for var i = 1; i < 10; i++ {
<span style="font-weight: 400;">  // какой-то код</span>
<span style="font-weight: 400;">}</span>

После запуска в браузере цикл падает с ошибкой:

❌ Uncaught SyntaxError: Unexpected token ‘var’

Что значит. Unexpected token означает, что интерпретатор вашего языка встретил в коде что-то неожиданное. В нашем случае это интерпретатор JavaScript, который не ожидал увидеть в этом месте слово var, поэтому остановил работу.

Причина — скорее всего, вы пропустили что-то из синтаксиса: скобку, кавычку, точку с запятой, запятую, что-то подобное. Может быть, у вас была опечатка в служебном слове и язык его не распознал.

Что делать с ошибкой Uncaught SyntaxError: Unexpected token

Когда интерпретатор не может обработать скрипт и выдаёт ошибку, он обязательно показывает номер строки, где эта ошибка произошла (в нашем случае — в первой же строке):

Интерпретатор обязательно показывает номер строки, где произошла ошибка Uncaught SyntaxError: Unexpected token

Если мы нажмём на надпись VM21412:1, то браузер нам сразу покажет строку с ошибкой и подчеркнёт непонятное для себя место:

Строка с ошибкой Uncaught SyntaxError: Unexpected token

По этому фрагменту сразу видно, что браузеру не нравится слово var. Что делать теперь:

  • Проверьте, так ли пишется эта конструкция на вашем языке. В случае JavaScript тут не хватает скобок. Должно быть for (var i=1; i<10; i++) {}
  • Посмотрите на предыдущие команды. Если там не закрыта скобка или кавычка, интерпретатор может ругаться на код немного позднее.

Попробуйте сами

Каждый из этих фрагментов кода даст ошибку Uncaught SyntaxError: Unexpected token. Попробуйте это исправить.

if (a==b) then  {}
function nearby(number, today, oneday, threeday) {
  if (user_today == today + 1 || user_today == today - 1)
    (user_oneday == oneday + 1 || user_oneday == oneday - 1)
      && (user_threeday == threeday + 1 || user_threeday == threeday - 1)
  return true
  
  else
     return false
}
var a = prompt('Зимой и летом одним цветом');
if (a == 'ель'); {
  alert("верно");
} else {
  alert("неверно");
}
alert(end);

Понравилась статья? Поделить с друзьями:

Это тоже интересно:

  • Неодолпассе инструкция по применению раствор
  • Неодолпассе инструкция по применению цена таблетки
  • Неодолпассе инструкция по применению цена ампулы
  • Неодолпассе инструкция по применению капельница отзывы
  • Неодишер септо актив инструкция по применению

  • Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии