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.
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:
function AddRegistryValue {
param (
[Parameter(Mandatory, Position=0, HelpMessage="Enter the registry path.")]
[string]$path,
[Parameter(Mandatory, Position=1, HelpMessage="Enter the name of the registry value.")]
[AllowEmptyString()]
[string]$value,
[Parameter(Mandatory, Position=2, HelpMessage="Enter the value type.")]
[string]$type,
[Parameter(Mandatory, Position=3, HelpMessage="Enter the value data.")]
[AllowEmptyString()]
[string]$data
)
[int32]$result = 0
$p = New-Object System.Diagnostics.Process
$p.StartInfo.FileName = "REG.exe"
$p.StartInfo.Arguments = "ADD ""$path"" /V ""$value"" /T ""$type"" /D ""$data"" /F"
$p.StartInfo.UseShellExecute = $false
$p.StartInfo.CreateNoWindow = $false
$p.StartInfo.RedirectStandardOutput = $true
$p.StartInfo.RedirectStandardError = $true
$p.Start() | Out-Null
$stdOut = $p.StandardOutput.ReadToEnd()
$stdErr = $p.StandardError.ReadToEnd()
$p.WaitForExit()
$result = $p.ExitCode
$p.Close()
Write-Host $p.StartInfo.FileName $p.StartInfo.Arguments
Write-Host $stdOut
Write-Host $stdErr
return $result
}
function Pause {
param (
[Parameter(Mandatory=$false, Position=0, HelpMessage="Enter the message to display.")]
[string]$message = "Press any key to continue..."
)
$console = [System.Console]
$console::WriteLine($message)
$console::ReadKey($true) | Out-Null
}
AddRegistryValue -Path 'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device' `
-Value 'DevicePasswordLessBuildVersion' `
-Type 'REG_DWORD' `
-Data '0' `
| Out-Null
Pause
Exit(0)