viper-berlin
Goto Top

PowerShell Registry Keys und Propertys schreiben lesen löschen abfragen ob vorhanden oder leer wie geht das ???

Servus Leute,

ich fange grade an mit PowerShell zu skripten und hab so einige Probleme......

Problem:

1. Woran erkenne ich das es sich um PS handelt und nicht um WSH oder VBS ???
z.B. $MSG=(get-item -path "$str_RegKeyPath").GetValue("$str_RegKeyPropertie")
ist das WSH oder VBS oder PS ist das einzige was funktioniert hat was mir einen Wert aus einem
Property ausliest ;-( das hat mich Stunden gekostet diesen Mist zu googlen.

2. Warum muss man bei einer Skriptsprache noch Module nachladen ?, woher weis ich welcher
Befehl für welches Modul ist und warum kann man solch ein Mist nicht automatisieren ;-(
Also.. z.B. wenn Befehl auftaucht im Sourcecode dann lade Modul oder so ?

3. Wie kann ich im AT-JOB meine script.ps1 Skripte starten und Parameter übergeben?
Dazu skriptet man ja eigentlich? das man einfach schnell einen lesbaren Code hin bekommt

4. Sollte man lieber gleich VBS benutzen was ja wie ich gelesen habe auch wiederum nur unter
WSH läuft (also muss ich WSH haben damit VBS läuft?) ?.

5. kann man Set-ExecutionPolicy Unrestricted in einem Vorlaufskript vorlauf.cmd aufrufen
damit das eigentliche PS Skript ohne Probleme startet (wer hat sich bloß so ein Mist ausgedacht)
Angeblich eine Sicherheitsmaßnahme ??? also ein Admin der kann auch Format C: eingeben.

6. So und jetzt die Fragen wie kann ich rein in PS Registy Propertys anlegen löschen ändern? und
vor alledem überprüfen ob vorhanden oder ein Inhalt drin ist ?.
Propertys abfragen hat nur mit dieser Zeile gegeht…..

$MSG=(get-item -path "$str_RegKeyPath").GetValue("$str_RegKeyPropertie")
Write-Host "MSG=$MSG"

7. Wo finde ich genaue PS Syntaxerklärungen ? (also die von MS waren Müll)
Die PS Erklärungen auch mit -detailed –example sind lasch!, sie zeigen zwar an was es
alles gibt aber nicht was wirklich im Hintergrund Passiert oder was diese Befehle machen.

8. PS ist wohl Typenlos ??? aber ich habe gelesen das es wohl doch geht eine Variable als String
zu deklarieren [STIRNG] $str_RegKeyPath="HKLM:\Software\MeineKey

9. Wie macht man eine Typenumwandlung ??? String nach Integer oder so?

10. was hat es mit disem STA und MTA Modus auf sich ???


? mir fehlt aber noch wie überprüfe ich ob ein Property angelegt wurde,
und ob er einen Inhalt hat wie lösche ich einzelne Propertys usw.

Besten Dank für Eure Hilfe face-wink
der Vipy


Hier mein Script was Regkeys anlegt löscht checkt usw.

Set-ExecutionPolicy Unrestricted

[STIRNG] $str_RegKeyPath="HKLM:\Software\MeineKey"
[STIRNG] $str_RegKeyName="Sub_MeineKeyHomeDrive"
[STIRNG] $str_RegKeyPropertie="MeineKeyHomeDrive"
[STIRNG] $str_RegKeyVal="D"
[STIRNG] $str_RegKeyType="String"

Write-Host "-- CHECK $str_RegKeyPath ob MeineKey vorhanden"
$str_RegKeyExsist=Test-Path -path "$str_RegKeyPath"
Write-Host "EXSIST:$str_RegKeyExsist"

Write-Host "-- ERZEUGE $str_RegKeyPath wenn nicht vorhenden in HKLM"
IF ("$str_RegKeyExsist" -ne "True")
{
Write-Host "### ERZEUGE jetzt $str_RegKeyPath ####"
New-Item -path "$str_RegKeyPath"
} ELSE {
Write-Host "#### $str_RegKeyPath ist schon vorhanden ####"
}

Write-Host "-- CREATE PROPERTY $str_RegKeyPropertie unter $str_RegKeyPath Wert: $str_RegKeyVal das wollen wir"
Write-Host "------path $str_RegKeyPath -name $str_RegKeyPropertie -value $str_RegKeyVal---------"
New-Itemproperty -path "$str_RegKeyPath" -name "$str_RegKeyPropertie" -value "$str_RegKeyVal" -propertyType String

Write-Host "-- SHOW hole Property-Werte -$str_RegKeyPath $str_RegKeyPropertie-"
Write-Host "-1---- path $str_RegKeyPath -name $str_RegKeyPropertie -----------------------------"

  1. ACHTUNG ist das PS oder WSH ???
  2. geht nicht mit Get-ItemProperty -path "$str_RegKeyPath" -name "$str_RegKeyPropertie"
$MSG=(get-item -path "$str_RegKeyPath").GetValue("$str_RegKeyPropertie")
Write-Host "MSG=$MSG"

Write-Host "-2---- -Path $str_RegKeyPath -------------------------------------------------------"
Write-Host "------------------------------------------------------------------------------------"
Get-Item -Path "$str_RegKeyPath"

Write-Host "--Zeigt SUB Keys an"
Write-Host "------------------------------------------------------------------------------------"
$MSG=Get-ChildItem -path "$str_RegKeyPath"
Write-Host "Registry Subkeys=$MSG"

Write-Host "-- Lösche MeineKey $str_RegKeyPath ab!! nur den MeineKey Registry Schlüssel--"
Write-Host "------------------------------------------------------------------------------------"
Remove-Item -path "$str_RegKeyPath" -recurse
#-- das war‘s MeineKey in Registry müsste gelöscht sein

Content-Key: 234299

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

Ausgedruckt am: 28.03.2024 um 22:03 Uhr

Mitglied: colinardo
colinardo 02.04.2014 aktualisiert um 13:36:29 Uhr
Goto Top
Hallo vippy,
Zitat von @Viper-Berlin:
das hat mich Stunden gekostet diesen Mist zu googlen.
Nicht googlen und beschweren sondern lesen, Antworten auf alle deine Fragen und noch viel mehr findest du hier sehr schön erläutert: http://www.powershellpraxis.de/ . Man muss sich nur mal die Zeit nehmen ....
Zum Thema Registry findest du dort auch alles vor: http://www.powershellpraxis.de/index.php/das-a-und-o-der-registry

Grüße Uwe
Mitglied: colinardo
Lösung colinardo 02.04.2014 aktualisiert um 15:24:29 Uhr
Goto Top
Zitat von @Viper-Berlin:
1. Woran erkenne ich das es sich um PS handelt und nicht um WSH oder VBS ???
erkennst du an der CMD-Let Syntax und an dem Dollarzeichen vor der Variablen
2. Warum muss man bei einer Skriptsprache noch Module nachladen ?, woher weis ich welcher
ab Powershell 3.0 gibt es ein sogenanntes Autoloading-Feature das entsprechende Module bei der Verwendung automatisch nachlädt. In C++ muss man beispielsweise auch die Header auflisten welche man verwenden möchte !!
3. Wie kann ich im AT-JOB meine script.ps1 Skripte starten und Parameter übergeben?
Wie man Powershell-Scripte aus einer Powershell-Konsole oder der CMD-Shell aufruft kann man hier detailiert nachlesen.
4. Sollte man lieber gleich VBS benutzen was ja wie ich gelesen habe auch wiederum nur unter
Muss jeder selber entscheiden ...
5. kann man Set-ExecutionPolicy Unrestricted in einem Vorlaufskript vorlauf.cmd aufrufen
damit das eigentliche PS Skript ohne Probleme startet (wer hat sich bloß so ein Mist ausgedacht)
Angeblich eine Sicherheitsmaßnahme ??? also ein Admin der kann auch Format C: eingeben.
back-to-topAnleitung: Wie starte ich Powershell-Scripte
  • Zuerst speicherst man den Code in einer Textdatei mit der Endung .ps1.
  • Wenn man zum ersten mal Powershell-Scripte ausführt, musst man einmalig vorher noch das Ausführen von Scripten im User-Account freischalten. Dazu öffnet man eine Powershell-Konsole und gibt dort den Befehl Set-ExecutionPolicy RemoteSigned -Force ein. Um diese Policy für alle User auf dem Rechner zu setzen muss man diesen Befehl in einer Powershell-Konsole mit Admin-Rechten starten. Noch ein Hinweis für 64-Bit-Systeme: Hier sollte sowohl für die 32bit und 64Bit Variante der Powershell die Policy in einer Admin-Konsole gesetzt werden: Set-ExecutionPolicy RemoteSigned -Force; start-job { Set-ExecutionPolicy RemoteSigned -Force } -RunAs32
  • Jetzt kann das Powershell-Script in der Konsole mit Eingabe des Pfades der Scriptdatei, oder mit einem Rechtsklick auf die Script-Datei :Mit Powershell ausführen gestartet werden.
6. So und jetzt die Fragen wie kann ich rein in PS Registy Propertys anlegen löschen ändern? und
vor alledem überprüfen ob vorhanden oder ein Inhalt drin ist ?.
Propertys abfragen hat nur mit dieser Zeile gegeht…..
s. bereits genannten Link
7. Wo finde ich genaue PS Syntaxerklärungen ? (also die von MS waren Müll)
Direkt im Technet: http://technet.microsoft.com/de-de/library/hh849827%28v=wps.620%29.aspx
8. PS ist wohl Typenlos ??? aber ich habe gelesen das es wohl doch geht eine Variable als String
Meinst du nur, dir steht hier der gesamte Typenumfang vom .NET-Framework zur Verfügung. Mit $variable.getType() kannst du dir den Typ der Variable anzeigen lassen.
9. Wie macht man eine Typenumwandlung ??? String nach Integer oder so?
[string]$test = "100"  
[int]$zahl = [int]$test
$zahl
mit
$zahl.getType()
kannst du dann den Typ der Variablen überprüfen....
10. was hat es mit disem STA und MTA Modus auf sich ???
http://depsharee.blogspot.de/2011/06/powershell-sta-and-mta.html

Grüße Uwe
Mitglied: Viper-Berlin
Viper-Berlin 02.04.2014, aktualisiert am 07.04.2014 um 12:15:16 Uhr
Goto Top
Ja Super......
Thanks der Vipy