Dressurausbildung Daniel Köck

Dresssurausbildung Koeck

Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv
 

Registrierungseinträge kann man auf Remote Computern mit Hilfe von Powershell relativ gut bearbeiten bzw. auch erstellen.

Voraussetzung schaffern

Der Zugriff auf die Registrierung des Remote PCs erfolgt über:

$BaseKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey(“LocalMachine”,”RemotePC1")

$SubKey = $BaseKey.OpenSubKey(“Software\Techibee.com”,$true) wird an Stelle von $true $false verwendet erfolgt der Zugriff nur lesend!!

 

Befehl zum Erstellen bzw. Ändern eines DWORD Eintrages:

$ValueName = “Beispiel  DWORD Name”

$ValueData = 1234

$SubKey.SetValue($ValueName, $ValueData, [Microsoft.Win32.RegistryValueKind]::DWORD)

Befehl zum Erstellen bzw. Ändern eines STRING Eintrages

$ValueName = “Beispiel String Name”

$ValueData = “Beispiel String”

$SubKey.SetValue($ValueName, $ValueData, [Microsoft.Win32.RegistryValueKind]::String)

 

Beispiel zum Ändern eines DWORD Eintrages auf Computern in einer bestimmten OU

$Computers = Get-ADComputer -filter * -searchBase "OU=Win10_RS1,OU=Workstations,OU=Ressourcen,OU=Labor,DC=winxperts4all,DC=intern" | Select-Object -expand Name
foreach ($computer in $Computers)
{
             $BaseKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine",$Computer)
             $SubKey = $BaseKey.OpenSubKey("SYSTEM\CurrentControlSet\services\Tcpip\Parameters\",$true)
             $ValueName = "DisableDHCPMediaSense"
             $ValueData = 1
             $SubKey.SetValue($ValueName, $ValueData, [Microsoft.Win32.RegistryValueKind]::DWORD)

 }

 

Beispiel zum Ändern eines MULTI SZ Eintrages auf Computern in einer bestimmten OU

 $Computers = Get-ADComputer -filter * -searchBase "OU=Win10_RS1,OU=Workstations,OU=Ressourcen,OU=Labor,DC=winxperts4all,DC=intern" | Select-Object -expand Name
foreach ($computer in $Computers)
{

$BaseKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine",$Computer)
$SubKey = $BaseKey.OpenSubKey("SYSTEM\CurrentControlSet\Services\gpsvc",$true)
$ValueName = "DependOnService"
[string[]]$ValueData = ("RPCSS","MUP","iphlpsvc")
$SubKey.SetValue($ValueName, $ValueData, [Microsoft.Win32.RegistryValueKind]::MultiString)

 }

 

Beispiel zur Besitzübernahme und zum Ändern von Berechtigungen:

 

Invoke-Command -ComputerName $Computers -ScriptBlock{
#This is the Key to take ownership
$key = [Microsoft.Win32.Registry]::ClassesRoot.OpenSubKey("SYSTEM\CurrentControlSet\Services\gpsvc",[Microsoft.Win32.RegistryKeyPermissionCheck]::ReadWriteSubTree,[System.Security.AccessControl.RegistryRights]::TakeOwnership)
#You must get a blank acl for the key b/c you do not currently have access
$acl = $key.GetAccessControl([System.Security.AccessControl.AccessControlSections]::None)
#domain\user is the user that is going to take ownership
$me = [System.Security.Principal.NTAccount]"winxperts4all\Administrator"
$acl.SetOwner($me)
$key.SetAccessControl($acl)
#After you have set owner you need to get the acl with the perms so you can modify it.
$acl = $key.GetAccessControl()
#Domain\user here is the one you are going to give permissions to
$rule = New-Object System.Security.AccessControl.RegistryAccessRule ("winxperts4all\Administrator","FullControl","Allow")
$acl.SetAccessRule($rule)
$key.SetAccessControl($acl)
$key.Close()

}

 

Copyright © winxperts4all.com. All Rights Reserved.