Добавить переменную в строку БЕЗ, используя синтаксис $ ($ var) - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь выполнить самый простой элемент copy из задачи агента SQL Server, однако он падает при использовании операторов подвыражения в формате: $($var) из-за синтаксиса $().Больше информации, вроде, здесь: https://dba.stackexchange.com/questions/58669/sql-agent-powershell-step-syntax-error

Я вообще не знаю PowerShell, но у меня есть это от Googling:

$Datetime = get-date -format "yyyy-MM-dd HHmmss"
Copy-Item -Path "F:\Grange\PROD\Gwineupd.csv" -Destination "F:\Grange\PROD\Archive\Gwineupd $($Datetime).csv"

Мне нужно заменить $ ($ Datetime)с чем-то, что не использует этот формат ... Возможно ли это?

Ответы [ 4 ]

0 голосов
/ 05 марта 2019

Просто еще одна альтернатива,
, напрямую соединяющая источник и создающая имя назначения из частей источника с помощью оператора -Format.

Get-Item "F:\Grange\PROD\Gwineupd.csv" |
  Copy-Item -Destination {"{0}\Archive\{1}_{2:yyyy-MM-dd HHmmss}{3}" -f `
    $_.Directory, $_.BaseName, (Get-Date), $_.Extension}
0 голосов
/ 05 марта 2019

Не думаю, что вам нужен синтаксис $():

Copy-Item -Path "F:\Grange\PROD\Gwineupd.csv" -Destination "F:\Grange\PROD\Archive\Gwineupd $Datetime.csv"

В Powershell переменные в строках с двойными кавычками подставляются автоматически.

0 голосов
/ 05 марта 2019

Вы всегда можете указать имя переменной с {}, нет необходимости использовать $() внутри строки:

"F:\Grange\PROD\Archive\Gwineupd ${Datetime}.csv"
0 голосов
/ 05 марта 2019

Попробуйте предварительно создать имя файла, например:

$Datetime = get-date -format "yyyy-MM-dd HHmmss"
$destination = "F:\Grange\PROD\Archive\Gwineupd{0}.csv" -f $Datetime
Copy-Item -Path "F:\Grange\PROD\Gwineupd.csv" -Destination $destination
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...