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-Key: 336437

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

Printed on: April 19, 2024 at 22:04 o'clock

Mitglied: 132895
Solution 132895 Apr 28, 2017 updated at 13:38:53 (UTC)
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ß
Member: Clijsters
Solution Clijsters Apr 28, 2017 at 13:33:40 (UTC)
Goto Top
...Und um das zu aendern, muesste dein "Invoke-Command -ComputerName $_.Name [...]" innerhalb der foreach Schleife sein, wie in Bsp. 1.
Member: H41mSh1C0R
H41mSh1C0R Apr 28, 2017 at 13:38:11 (UTC)
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.
Member: H41mSh1C0R
H41mSh1C0R Apr 28, 2017 updated at 14:06:19 (UTC)
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
Mitglied: 132895
Solution 132895 Apr 28, 2017 updated at 14:33:00 (UTC)
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.
Member: Clijsters
Solution Clijsters Apr 28, 2017 at 14:25:14 (UTC)
Goto Top
Könntest ja innerhalb des ScriptBlock tryen und catchen...
Was dann jedoch wiederum Verbindungsfehler nicht fangen wuerde.