В строковых литералах Powershell с двойными кавычками интерполяция строк происходит каждый раз, когда появляется неэкранированный символ $
с допустимым идентификатором после него.Чтобы ввести литерал $
, который не следует анализировать как часть интерполированной переменной, вы должны экранировать его с помощью обратного кавычка, `
.
Здесь немного быстроСправка по интерполяции строк :
Как развернуть выражение в строке?Windows PowerShell развернет переменную или выражение в строке.Переменные выглядят так: $variable
Выражения выглядят так: $(expression)
Итак, ваш "$usbname = $Value_UsbName"
интерпретируется двигателем как значение $usbname
переменная , за которой следует =
, заключенный в пробелы, а затем значение$Value_UsbName
переменная .
То, что вы хотите добавить, это буквальная подстрока $usbname
и значение выражения $TextBox_UsbName.text
.
Итак, используйте либо
"`$usbname = $($TextBox_UsbName.text)"
Или просто объединить значения (независимо от культуры):
$usbname + ' = ' + $TextBox_UsbName.text