2011-11-08 14 views
15

Tengo lo siguiente que se utiliza como un archivo por lotes que inicia powershell (demasiado tiempo para repasar pero se usa en otro script).% temp% etc no funciona

De todos modos, me di cuenta de que% systemroot% \ temp y% systemroot% no funciona.

¿Alguna idea de cómo puedo solucionar esto?

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

Gracias,

+1

realizado sobre mi sistema funciona bien ¿Cuál es el error que tienes? –

+0

tu derecho Cristiano .... mi estupidez ... el camino es incorrecto !! ¡Hubiera funcionado al final! – lara400

Respuesta

30

Si va a ejecutar esa línea de PowerShell en lugar de CMD, puede utilizar la variable de entorno PowerShell sintaxis:

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

Quería saber esto también, así que gracias por responder. La falla real fue que el camino era incorrecto; esto está solucionado ahora, pero es bueno saber lo anterior. – lara400

+0

Soy un gran novato. ¿Por qué necesitas el "&" al comienzo de la línea? – YasharBahman

+0

El "&" es ejecutar el comando especificado en el fondo – phillyslick

11

se puede utilizar [Medio Ambiente] :: ExpandEnvironmentVariables para expandir las variables de entorno dentro de una cadena a la antigua usanza.

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

Útil con PowerShell 2.0 (Windows 2008) donde "$ env.SYSTEMROOT" no funciona – Akom

0

Se ha verificado con éxito con el código siguiente C#.

// archivo de ubicación - Variables de usuario cadena filelocation = Environment.GetEnvironmentVariable ("AZURE_FILE_PATH", EnvironmentVariableTarget.User); // ubicación del archivo - Variables del sistema cadena fileLocation = Environment.GetEnvironmentVariable ("AZURE_FILE_PATH", EnvironmentVariableTarget.Machine);

El script de PowerShell

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

AzureUpload.exe - contienen el código C# código anterior como aplicación de consola (Visual_Studio_Workspace \ AzureUpload \ AzureUpload \ bin \ Debug {ubicación del archivo .exe})