% temp% и т.д. не работает

У меня есть следующее, которое используется как пакетный файл, запускающий powershell (слишком длинный, чтобы перейти, но он используется в другом script).

В любом случае, я заметил, что% systemroot%\temp и% systemroot% не работают.

Любая идея, как я могу это исправить?

%systemroot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Unrestricted -File %SystemRoot%\TEMP\ROFS\testing_script_log.ps1

Спасибо,

Ответы

Ответ 1

Если вы выполняете эту строку из PowerShell, а не из CMD, вы можете использовать синтаксис переменных среды PowerShell:

PS C:\> & "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe"

Ответ 2

Вы можете использовать [Environment]:: ExpandEnvironmentVariables для расширения переменных среды внутри строки старомодным способом.

$s = '%systemroot%\temp'
[Environment]::ExpandEnvironmentVariables($s)

Ответ 3

Успешно проверено с помощью кода С#.

// расположение файла - Пользовательские переменные string fileLocation = Environment.GetEnvironmentVariable( "AZURE_FILE_PATH", EnvironmentVariableTarget.User); // расположение файла - системные переменные string fileLocation = Environment.GetEnvironmentVariable( "AZURE_FILE_PATH", EnvironmentVariableTarget.Machine);

В Powershell script

& "D:\Visual_Studio_Workspace\AzureUpload\AzureUpload\bin\Debug\AzureUpload.exe"

AzureUpload.exe - содержит код выше кода С# в качестве консольного приложения (Visual_Studio_Workspace\AzureUpload\AzureUpload\bin\Debug {.exe расположение файла})