Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

PowerShell past registry value niet aan op remote machine

Pagina: 1
Acties:

Vraag


  • DedSec85
  • Registratie: Oktober 2014
  • Laatst online: 21:06
Hallo Tweakers,

Ik moet op de zaak de registry value van enkele tientallen servers aanpassen. Als ik dat met de hand moet doen wordt ik gek, dus ik denk ik ga iets in PowerShell maken. Nu ben ik nog niet erg bedreven in PowerShell maar ik had het volgende bedacht:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
$deploymentserver = "DEPLOYMENT.COMPANY.LOCAL"
$hostnames = (Get-Content -Path ".\hostnames.txt")
$credential = Get-Credential company\admin1

foreach ($hostname in $hostnames)

{
    Enter-PSSession $hostname -Credential $credential
    Set-Location 'HKLM:\SOFTWARE\Client Service'
    Set-ItemProperty -Path 'HKLM:\SOFTWARE\Client Service' -Name DServer -Value $deploymentserver
    Get-Service -Name "Deployment Agent" | Restart-Service
    Exit-PSSession
}


Opzich werkt dit prima. Het script vraagt netjes om het wachtwoord van de user, er wordt een PSSession opgezet en de service wordt hertstart. Dit gebeurd voor elke server in het tekstbestand.

Enige probleem is de volgende regel:
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Client Service' -Name DServer -Value $deploymentserver

Deze wijziging wordt niet in het register doorgevoerd. Het vreemde is, dat als ik dit commando in de PowerShell console aftrap, dat de registry value wel wordt aangepast. 8)7

Het iemand enig idee hoe dit kan? Op internet kon ik er niet zo snel iets over vinden.
Ik heb ook geprobeerd om de value niet via een parameter te zetten maar direct, maar dat maakt ook niets uit. Ik heb gewoon admin rechten op de server en de PowerShell ISE is ook met administrator rechten opgestart.

Misschien is het iets heel simpels wat ik nu gewoon over het hoofd zie :?

Alvast bedankt! :)

p.s. ik heb het script hier iets versimpeld omwille de leesbaarheid en vertrouwelijkheid.

Beste antwoord (via DedSec85 op 16-07-2018 12:01)


  • mufana
  • Registratie: Mei 2009
  • Laatst online: 05-06-2023
Ik vermoed dat de $Delpoymentser in de remote sessie leeg is.
Deze var defineer je lokaal en zul je moeten mee parsen naar de remote sessie. Ik zou zoiets doen...

$deploymentserver = "DEPLOYMENT.COMPANY.LOCAL"
$hostnames = (Get-Content -Path ".\hostnames.txt")
$credential = Get-Credential company\admin1

Foreach ($Host in $Hostnames) {
Invoke-Command -computername $Host -Credential $credential -Scriptblock {
$Delpoyserver = $Using:Deploymentserver
Set-Location
Set-ItemProperty blabla $Deployserver
Get-Service
}
}

Middels $Using geef je een lokale var mee aan een remote sessie. ($Using is wel een functionaliteit die alleen beschikbaar is PowerShell V3 en hoger.

Alle reacties


  • Microkid
  • Registratie: Augustus 2000
  • Laatst online: 00:01

Microkid

Frontpage Admin / Moderator PW/VA

Smile

4800Wp zonnestroom met Enphase
Life's a waste of time. Time's a waste of life. Get wasted all the time and you'll have the time of your life.


  • DedSec85
  • Registratie: Oktober 2014
  • Laatst online: 21:06
Ah bedankt! Even doorgenomen en ik ga er maandag verder mee. Ik laat weten hoe het afgelopen is ;)

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:43

Creepy

Tactical Espionage Splatterer

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • J0HAN
  • Registratie: Oktober 2007
  • Laatst online: 19-11 18:35
Is het niet veel makkelijker om dit via een GPO toe te passen?

 MacBook Pro M1 (2021)  Mac Mini (2011)  iPhone 12 Pro


Acties:
  • Beste antwoord

  • mufana
  • Registratie: Mei 2009
  • Laatst online: 05-06-2023
Ik vermoed dat de $Delpoymentser in de remote sessie leeg is.
Deze var defineer je lokaal en zul je moeten mee parsen naar de remote sessie. Ik zou zoiets doen...

$deploymentserver = "DEPLOYMENT.COMPANY.LOCAL"
$hostnames = (Get-Content -Path ".\hostnames.txt")
$credential = Get-Credential company\admin1

Foreach ($Host in $Hostnames) {
Invoke-Command -computername $Host -Credential $credential -Scriptblock {
$Delpoyserver = $Using:Deploymentserver
Set-Location
Set-ItemProperty blabla $Deployserver
Get-Service
}
}

Middels $Using geef je een lokale var mee aan een remote sessie. ($Using is wel een functionaliteit die alleen beschikbaar is PowerShell V3 en hoger.

  • Squ1zZy
  • Registratie: April 2011
  • Niet online
mufana schreef op zondag 15 juli 2018 @ 10:53:
Ik vermoed dat de $Delpoymentser in de remote sessie leeg is.
Deze var defineer je lokaal en zul je moeten mee parsen naar de remote sessie. Ik zou zoiets doen...

$deploymentserver = "DEPLOYMENT.COMPANY.LOCAL"
$hostnames = (Get-Content -Path ".\hostnames.txt")
$credential = Get-Credential company\admin1

Foreach ($Host in $Hostnames) {
Invoke-Command -computername $Host -Credential $credential -Scriptblock {
$Delpoyserver = $Using:Deploymentserver
Set-Location
Set-ItemProperty blabla $Deployserver
Get-Service
}
}

Middels $Using geef je een lokale var mee aan een remote sessie. ($Using is wel een functionaliteit die alleen beschikbaar is PowerShell V3 en hoger.
Veel voorkomende fout. Variabele $deploymentServer is inderdaad leeg wanneer je een sessie opzet.

  • DedSec85
  • Registratie: Oktober 2014
  • Laatst online: 21:06
mufana schreef op zondag 15 juli 2018 @ 10:53:
Ik vermoed dat de $Delpoymentser in de remote sessie leeg is.
Yes, dat was inderdaad het geval. Ik heb het script nu aangepast en i.p.v. Enter-PSSession heb ik Invoke-Command gebruikt zodat ik $Using:env kan gebruiken.

Bedankt! Weer wat geleerd! :*)

  • Question Mark
  • Registratie: Mei 2003
  • Laatst online: 28-11 16:59

Question Mark

Moderator SSC/WOS

F7 - Nee - Ja

DedSec85 schreef op maandag 16 juli 2018 @ 12:12:
[...]
Bedankt! Weer wat geleerd! :*)
Misschien offtopic, maar waarom probeer je zelf een oplossing te verzinnen terwijl dit ook kan met Group Policy Preferences?

MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B


  • DedSec85
  • Registratie: Oktober 2014
  • Laatst online: 21:06
Question Mark schreef op maandag 16 juli 2018 @ 14:15:
[...]

Misschien offtopic, maar waarom probeer je zelf een oplossing te verzinnen terwijl dit ook kan met Group Policy Preferences?
Ja, dat kan ook inderdaad. Het hoeft maar 1 keer aangepast te worden, dus het leek mij makkelijker om dit even via een PowerShell script te doen. Maar een GPO had inderdaad ook gekund :)
Pagina: 1