Мне нужно извлечь переменную в одну строку в текстовом файле, например так;
Write-Host "Select RDS Collection to migrate"
$AllCollections.Keys | Sort-Object | ForEach-Object { Write-Verbose "[$_] - $($AllCollections.$_)" -Verbose }
Write-Output ''
$Collection = $AllCollections.$((Read-Host -Prompt 'Choose collection number') -as [int])
$oldrdscb = "RDSCB01N01"
$newrdscb = "RDSCB02N01"
$newrdscbsmb = "\\$newrdscb\C$\temp\migrationvariables.txt"
echo "$collection" = "$Collection" | Out-File -FilePath $newrdscbsmb -append -width 200
txt файл \RDSCB02N01\c$\temp\migrationvariables.txt теперь содержит:
RDS-FSLOGIXTEST
=
RDS-FSLOGIXTEST
это потому, что он читает первую $коллекцию и дает вывод переменной $коллекции, что имеет смысл. Как я могу получить результат без переменной первой коллекции $ и отправить его в виде текста вместо переменной, чтобы конечный результат в txt был бы:
$collection = TEST
txt пуст перед запуском этого кода. Цель здесь состоит в том, чтобы прочитать переменные на моем новом сервере rds для переноса темы.
Какие-нибудь советы? Спасибо!
Используйте -f оператор формата и не расширяющуюся строку в одинарных кавычках '$collectionname = "{0}"' -f $Collection | Out-File -FilePath $newrdscbsmb -append -width 200
откуда $collectioname? откуда $Collection? откуда $collections? что находится в "\\$newrdscb\C$\temp\migrationvariables.txt", прежде чем добавить к нему? ///// пожалуйста, добавьте информацию, необходимую для понимания вашего кода.
@lotpings именно то, что мне нужно, спасибо!


Вам просто нужно избежать знаков доллара, используя обратную кавычку (`). Обычно она находится над клавишей табуляции на клавиатуре.
$oldrdscb = "RDSCB01N01"
$newrdscb = "RDSCB02N01"
$newrdscbsmb = "\\$newrdscb\C$\temp\migrationvariables.txt"
echo "`$collectioname" = "`$Collection" | Out-File -FilePath $newrdscbsmb -append -width 200
Я не понимаю вопроса...