elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Powershell Ayuda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Powershell Ayuda  (Leído 4,602 veces)
rigorvzla

Desconectado Desconectado

Mensajes: 221


Ver Perfil
Powershell Ayuda
« en: 20 Diciembre 2021, 20:50 pm »

Hola amigos, espero todos esten bien, estoy buscando de crear una pequeña app que ejecute esta linea de comandos en powershell

Código:
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" -Name DevicePasswordLessBuildVersion -Value 0 -Type Dword -Force

Y no tengo ni la mas remota idea de como hacerlo, eh buscado en internet y me eh guiado con ese ejemplo, como resultado este codigo

Código:
  PowerShell ps = PowerShell.Create();
            ps.AddCommand(@"New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device -Name DevicePasswordLessBuildVersion -Value 0 -Type Dword -Force");
            ps.Invoke();

Pero no funciona y no tengo la mas remota idea de como seria, ya que el ejemplo es muy simple para lo que quiero hacer al parecer.

De antemano gracias .


En línea

EdePC
Moderador Global
***
Conectado Conectado

Mensajes: 2.176



Ver Perfil
Re: Powershell Ayuda
« Respuesta #1 en: 20 Diciembre 2021, 21:35 pm »

Dependerá de tu App el método para hacer el llamado con parámetros a otra aplicación, en este caso un PowerShell. Aunque no es tan necesario recurrir a una Shell PowerShell para algo tan simple, directamente puedes llamar a Reg.exe y pasarle los parámetros:

IMPORTANTE: Recuerda que para modificar HKLM se requieren permisos de Administrador

Código
  1. Reg.exe Add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /V DevicePasswordLessBuildVersion /T REG_DWORD /D 0 /F

Si necesitas llamar a PowerShell.exe entonces el comando sería:

Código
  1. PowerShell.exe New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" -Name DevicePasswordLessBuildVersion -Value 0 -Type Dword -Force

Yo evito usar PowerShell siempre que puedo porque su primer arranque es muy lento, además debes considerar también que el Path debe existir sino dará error


En línea

rigorvzla

Desconectado Desconectado

Mensajes: 221


Ver Perfil
Re: Powershell Ayuda
« Respuesta #2 en: 21 Diciembre 2021, 13:38 pm »

eh usado el primer metodo y lo eh planteado asi:

Código:
   ProcessStartInfo p = new ProcessStartInfo("reg.exe");
            p.Arguments = @"add HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device / V DevicePasswordLessBuildVersion / T REG_DWORD / D 0 / F";
            Process.Start(p);

mas no se si asi como lo hice , es que deberia . ya que al ejecutarlo abre una ventana dos la cual se cierra de inmediato y no se si resulto el comando, si me guias un poco mas porfavor.
En línea

Mohicano

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: Powershell Ayuda
« Respuesta #3 en: 22 Diciembre 2021, 04:56 am »

Ese script no te va a funcionar ya que tienes fallos de sintaxis.

Regla básica y fundamental en el uso de parámetros por linea de comandos para cualquier programa:
 - Los argumentos con espacios en blanco hay que encerrarlos entre comillas.

Ej.
Código:
Programa.exe /Parametro "Valor con espacios"

Aparte, el símbolo y nombre de un parámetro se escribe sin espacios en blanco: "/Nombre", no "/ Nombre"

De todas formas todo eso daría igual, ya que si vas a utilizar PowerShell lo más lógico es utilizar sus funcionalidades integradas, no recurrir y depender de programas externos como REG.exe. El compañero EdePC te ha mostrado un ejemplo de cómo hacerlo.

Aun así, si quieres utilizar REG.exe, lo podrías hacer de la siguiente manera:

Código
  1. function AddRegistryValue {
  2.  
  3.    param (
  4.        [Parameter(Mandatory, Position=0, HelpMessage="Enter the registry path.")]
  5.        [string]$path,
  6.  
  7.        [Parameter(Mandatory, Position=1, HelpMessage="Enter the name of the registry value.")]
  8.        [AllowEmptyString()]
  9.        [string]$value,
  10.  
  11.        [Parameter(Mandatory, Position=2, HelpMessage="Enter the value type.")]
  12.        [string]$type,
  13.  
  14.        [Parameter(Mandatory, Position=3, HelpMessage="Enter the value data.")]
  15.        [AllowEmptyString()]
  16.        [string]$data
  17.    )
  18.  
  19.    [int32]$result = 0
  20.  
  21.    $p = New-Object System.Diagnostics.Process
  22.    $p.StartInfo.FileName  = "REG.exe"
  23.    $p.StartInfo.Arguments = "ADD ""$path"" /V ""$value"" /T ""$type"" /D ""$data"" /F"
  24.    $p.StartInfo.UseShellExecute = $false
  25.    $p.StartInfo.CreateNoWindow  = $false
  26.    $p.StartInfo.RedirectStandardOutput = $true
  27.    $p.StartInfo.RedirectStandardError  = $true
  28.  
  29.    $p.Start() | Out-Null
  30.    $stdOut = $p.StandardOutput.ReadToEnd()
  31.    $stdErr = $p.StandardError.ReadToEnd()
  32.    $p.WaitForExit()
  33.    $result = $p.ExitCode
  34.    $p.Close()
  35.  
  36.    Write-Host $p.StartInfo.FileName $p.StartInfo.Arguments
  37.    Write-Host $stdOut
  38.    Write-Host $stdErr
  39.  
  40.    return $result
  41. }
  42.  
  43. function Pause {
  44.    param (
  45.        [Parameter(Mandatory=$false, Position=0, HelpMessage="Enter the message to display.")]
  46.        [string]$message = "Press any key to continue..."
  47.    )
  48.  
  49.    $console = [System.Console]
  50.    $console::WriteLine($message)
  51.    $console::ReadKey($true) | Out-Null
  52.  
  53. }  
  54.  
  55. AddRegistryValue -Path  'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device' `
  56.                 -Value 'DevicePasswordLessBuildVersion' `
  57.                 -Type  'REG_DWORD' `
  58.                 -Data  '0' `
  59.                 | Out-Null
  60.  
  61. Pause
  62. Exit(0)
« Última modificación: 22 Diciembre 2021, 05:44 am por Mohicano » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda Script batch/powershell
Scripting
ruvenhr 9 5,091 Último mensaje 17 Junio 2013, 10:39 am
por ruvenhr
Ayuda con Script de limpieza en PowerShell!!!!!!!
Scripting
_stevz 1 2,322 Último mensaje 10 Enero 2017, 10:54 am
por _stevz
Ayuda con ficheros en powershell.
Scripting
mmsouto 0 2,196 Último mensaje 13 Diciembre 2017, 09:57 am
por mmsouto
Clave del powershell para el registro [AYUDA] « 1 2 3 »
Windows
.:Xx4NG3LxX:. 21 9,953 Último mensaje 25 Enero 2020, 21:07 pm
por .:Xx4NG3LxX:.
ayuda powershell scripts
Scripting
willy19 1 2,713 Último mensaje 4 Mayo 2022, 18:06 pm
por Danielㅤ
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines