Powershell Remote-Registry
Grüße,
mich verwundert ein wenig das Verhalten meiner Powershell.
Ich möchte eigentlich nur in einem Script einen RegKey remote von einem Client löschen...
also los gehts
Enter-pssession Clientname
set-location HLKM:\software...
klappt wunderbar. Wenn ich dies aber in einem Script aufrufe bin ich plötzlich in der registy MEINER Maschine und nicht auf der des Clients.
[Code]
Enter-PSSession $Computer.DNSHostName
Set-Location HKLM:\SOFTWARE
dir
[/Code]
so schaut es bei mir aus. Das sollte doch eigentlich problemlos funktionieren... Oder wo mache ich meinen Denkfehler?
Grüße Lenny
mich verwundert ein wenig das Verhalten meiner Powershell.
Ich möchte eigentlich nur in einem Script einen RegKey remote von einem Client löschen...
also los gehts
Enter-pssession Clientname
set-location HLKM:\software...
klappt wunderbar. Wenn ich dies aber in einem Script aufrufe bin ich plötzlich in der registy MEINER Maschine und nicht auf der des Clients.
[Code]
Enter-PSSession $Computer.DNSHostName
Set-Location HKLM:\SOFTWARE
dir
[/Code]
so schaut es bei mir aus. Das sollte doch eigentlich problemlos funktionieren... Oder wo mache ich meinen Denkfehler?
Grüße Lenny
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 205993
Url: https://administrator.de/contentid/205993
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
15 Kommentare
Neuester Kommentar
Hallo Lenny,
versuch mal in deinem Script dem Befehl Enter-PSSession Login-Credentials mitzugeben:
wahrscheinlich klappt das Anmelden der Remote-Session deshalb nicht, und die PS nimmt dann natürlich deine Registry als Referenz...
Grüße Uwe
versuch mal in deinem Script dem Befehl Enter-PSSession Login-Credentials mitzugeben:
$cred = get-credential DOMAIN\User
enter-pssession Clientname -Credential $cred
wahrscheinlich klappt das Anmelden der Remote-Session deshalb nicht, und die PS nimmt dann natürlich deine Registry als Referenz...
Grüße Uwe
stimmt ja ... enter-pssession ist nur für den interaktiven Gebrauch bestimmt und funktioniert in einem Script nicht.
probier mal folgendes und lass das enter-pssession weg:
glaube aber das HKLM via Remote nicht nutzbar ist.. muss ich nachschauen...
--edit--
wenn das obige nicht geht:
Hinweis: Benötigt mindestens Powershell v2, der Remote-Computer muss zur Trusted-Hosts-Liste hinzugefügt werden, und der Dienst WinRM muss laufen:
probier mal folgendes und lass das enter-pssession weg:
Set-Location \\Clientname\HKLM:\SOFTWARE
glaube aber das HKLM via Remote nicht nutzbar ist.. muss ich nachschauen...
--edit--
wenn das obige nicht geht:
Invoke-Command -ComputerName Clientname { Set-Location HKLM:\SOFTWARE }
winrm set winrm/config/client '@{TrustedHosts="RemoteComputerName"}'
Zitat von @lenny4me:
auch wenn ich sage.
$reg1 = "HKLM:\SOFTWARE\Microsoft"
$rest = "test"
Invoke-Command -ComputerName Clientname { remove-item $reg$REST}
bekomme ich einen Fehler
da fehlt doch ein Backslash zwischen den Variablen bzw. im Pfad und die Variablen haben den falschen Namen -->$reg anstatt $reg1auch wenn ich sage.
$reg1 = "HKLM:\SOFTWARE\Microsoft"
$rest = "test"
Invoke-Command -ComputerName Clientname { remove-item $reg$REST}
bekomme ich einen Fehler
eigentlich schon logisch weil der Befehl der in den Klammern steht, Remote ausgeführt wird und da ist die lokale Variable nun mal nicht sichtbar. Wie du sie sichtbar machst kannst du hier nachlesen:
http://blogs.msdn.com/b/powershell/archive/2009/12/29/arguments-for-rem ...
http://blogs.msdn.com/b/powershell/archive/2009/12/29/arguments-for-rem ...
To use local variables in a command, use the following command format: {param($<name1>[, $<name2>]...) <command-with-local-variables>} -ArgumentList <value> -or- <local-variable>
The "param" keyword lists the local variables that are used in the command. The ArgumentList parameter supplies the values of the variables, in the order that they are listed.
The "param" keyword lists the local variables that are used in the command. The ArgumentList parameter supplies the values of the variables, in the order that they are listed.
Invoke-Command -ComputerName $client { param($par1) remove-item "HKLM:\SOFTWARE\$par1"} -Argumentlist $AA