h41msh1c0r
Goto Top

Powershell und Remote in der Registry rumwuseln

Hi@All,

ich habe hier ein XML. Das bekomme ich auch eingelesen und gefiltert wie es sein soll.
Am Ende bleibt eine Liste übrig mit allen Servernamen die bereits in der Configuration enthalten sind.

$doc = [XML] (Get-Content -Path c:\temp\20170428_export.xml)
$servers = $doc.SelectNodes("//NCObject") |  Where-Object {($_.Name -like '*-CM1*')  -and !($_.Name -like '*CM*)')}  |  % { $_.Name } | Sort-Object -Unique   


Jetzt habe ich 2 Wege(hier grad Variante 1) ausprobiert und komme mit beiden nicht weiter:

 Invoke-Command -ComputerName $_.Name -ScriptBlock { (Get-ItemProperty -Path hklm:\SOFTWARE\Wow6432Node\Hersteller\Policies -Name DisableMgmtPntPollingSvcInst).DisableMgmtPntPollingSvcInst } -credential $livecred

Hier meckert er mir $_.Name an und sagt da steht nichts drinnen.

Liegt das evtl. daran das das Unique am Ende die Spalte entfernt?

x-xxxxx-CM11
xxxxx-x-CM11
xxx-xxx-CM11

Wo steh ich hier vor dem Wald?

Ziel der Übung:
Ich will den Key auslesen und korrigieren falls er den falschen Wert hat.

VG

Content-ID: 336437

Url: https://administrator.de/contentid/336437

Ausgedruckt am: 25.11.2024 um 01:11 Uhr

132895
Lösung 132895 28.04.2017 aktualisiert um 15:38:53 Uhr
Goto Top
Hier meckert er mir $_.Name an und sagt da steht nichts drinnen.
Weil du in keiner Schleife bist face-smile deswegen, $_ existiert nur in einer Pipe.
$servers | %{
    Invoke-Command -Computername $_ ................
}

Gruß
Clijsters
Lösung Clijsters 28.04.2017 um 15:33:40 Uhr
Goto Top
...Und um das zu aendern, muesste dein "Invoke-Command -ComputerName $_.Name [...]" innerhalb der foreach Schleife sein, wie in Bsp. 1.
H41mSh1C0R
H41mSh1C0R 28.04.2017 um 15:38:11 Uhr
Goto Top
*klong*

ForEach ($server in $servers) {
    Write-Host $server": " -nonewline  
    Invoke-Command -ComputerName $server -ScriptBlock { 
        
        (Get-ItemProperty -Path hklm:\SOFTWARE\Wow6432Node\Hersteller\Policies -Name DisableMgmtPntPollingSvcInst).DisableMgmtPntPollingSvcInst
    
    } -credential $livecred
}

Jetzt purzeln schonmal die Infos raus welchen Wert der Key auf den Servern hat.
Jetzt noch ein Set-Item dazu und vola. =)

Danke euch Beiden.
H41mSh1C0R
H41mSh1C0R 28.04.2017 aktualisiert um 16:06:19 Uhr
Goto Top
Nochmal ganz kurz.

Wenn ich nun noch das Invoke-Command in ein Try Catch Block packe müsste er mir doch bei einem Fehler "TEST" ausgeben oder?

try{
        Invoke-Command -ComputerName $server -ScriptBlock { 
          
        (Get-ItemProperty -Path hklm:\SOFTWARE\Wow6432Node\Hersteller\Policies -Name DisableMgmtPntPollingSvcInst).DisableMgmtPntPollingSvcInst

        } -credential $livecred
    }
    Catch { "TEST" }  
    Finally { $ErrorActionPreference = "Continue" }  

Tut er noch nicht. =) Er schreibt direkt den Fehler aus (z.b. Property does not exist at path .........)

Selbst wenn ich den catch im detail gebe.

Catch [System.Management.Automation.PSArgumentException]

Habt ihr dazu noch einen Hint?

VG
132895
Lösung 132895 28.04.2017 aktualisiert um 16:33:00 Uhr
Goto Top
Invoke-Command selber schlägt nicht fehl, deswegen wird auch dein Catch nicht getriggert! Der Fehler bei get-itemproperty wird ja nur Remote getriggert min Jung face-smile.
Clijsters
Lösung Clijsters 28.04.2017 um 16:25:14 Uhr
Goto Top
Könntest ja innerhalb des ScriptBlock tryen und catchen...
Was dann jedoch wiederum Verbindungsfehler nicht fangen wuerde.