Comando Powershell | Fuera de archivo

Comando Powershell | Fuera de archivo

Problema: determine el estado de Prevención de ejecución de datos (DEP) de las computadoras remotas y canalice los resultados a un archivo de texto que incluya el nombre de la máquina.

Solución actual:

BCDEdit /enum "{current}" | out-file \\FILESHARE\DEP\DEP.txt -Append

Estoy enviando el script a través de SCCM, por lo que mi único problema es incluir el nombre de la máquina en los resultados. SCCM le permite ejecutar el script en cada máquina de forma remota como Sistema, por lo que no tengo que preocuparme por "obtener contenido" con una lista de PC, simplemente apunte a una colección y ejecute el script en esos sistemas.

Alternativamente, intenté ejecutar el comando Powershell fuera de SCCM, como por ejemplo:

$XenServers = get-content -path 'C:\PC_List.txt'

$Results= ForEach ($XenServer in $XenServers)
{
BCDEdit /enum "{current}"
}

$Results | Out-File \\FILESHARE\DEP\DEP.txt

Respuesta1

Recomiendo usar una solución completamente PowerShell. Según el enlace siguiente, la clase Win32_OperationSystem contiene el valor que busca en la propiedad DataExecutionPrevention_SupportPolicy. Los objetos devueltos por las consultas WMI también incluyen la propiedad PSComputerName, por lo que es una forma sencilla de realizar un seguimiento de los resultados. No soy partidario de este tipo de formato, así que incluyo otra recomendación.

get-WmiObject Win32_OperatingSystem |
  Select-Object PSComputerName, DataExecutionPrevention_SupportPolicy |
  Export-Csv -Path \\FILESHARE\DEP\DEP.csv -Append -NoTypeInformation

https://support.microsoft.com/en-us/help/912923/how-to-determine-that-hardware-dep-is-available-and-configured-on-your

información relacionada