Question
Modif clef sur +sieur serveur et pour +sieur user
- exca
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
il y a 17 ans 5 mois #2919
par exca
Modif clef sur +sieur serveur et pour +sieur user a été créé par exca
Bonjour
Je commence le powershell et j'ai un peu de mal a retrouvé mes billes.
Je voudrais lister l'arbo de la registry.
Je m'explique, je voudrais toucher la clé \"KEY_USERS\<userX>\Control Panel\Desktop\ScreenSaveTimeOut\" (enfin celle la ou une autre ). Je partirais sur un foreach depuis le root de KEY_USERS
[code:1]
KEY_USERS
\_.DEFAULT
\_Control Panel
\_Desktop
\_ScreenSaveTimeOut
\_S-1-plop
\_Control Panel
\_Desktop
\_ScreenSaveTimeOut
\_S-1-plop1
\_Control Panel
\_Desktop
\_ScreenSaveTimeOut
\_etc ...
[/code:1]
Donc je coderais un truc du genre en speudo-langage batch+powershell (désolé)
[code:1]
SET INI=c:\listemachines.ini
For /F %%i in (%INI%) do (
$distant=[microsoft.win32.registrykey]::openremotebasekey(\"USERS\",\"%%i\"«»)
foreach ($distant.subdir) # en gros les repertoires (.DEFAULT et autre \"repertoire\" \"S-1-1-...\"«»)
{
$val=$distant.opensubkey($distant.subdir.\"\Control Panel\Desktop\\"«»)
$val.setvalue(\"200\"«»)
}
)
[/code:1]
Y a moyen de faire ca ?
Merci a tous
Je commence le powershell et j'ai un peu de mal a retrouvé mes billes.
Je voudrais lister l'arbo de la registry.
Je m'explique, je voudrais toucher la clé \"KEY_USERS\<userX>\Control Panel\Desktop\ScreenSaveTimeOut\" (enfin celle la ou une autre ). Je partirais sur un foreach depuis le root de KEY_USERS
[code:1]
KEY_USERS
\_.DEFAULT
\_Control Panel
\_Desktop
\_ScreenSaveTimeOut
\_S-1-plop
\_Control Panel
\_Desktop
\_ScreenSaveTimeOut
\_S-1-plop1
\_Control Panel
\_Desktop
\_ScreenSaveTimeOut
\_etc ...
[/code:1]
Donc je coderais un truc du genre en speudo-langage batch+powershell (désolé)
[code:1]
SET INI=c:\listemachines.ini
For /F %%i in (%INI%) do (
$distant=[microsoft.win32.registrykey]::openremotebasekey(\"USERS\",\"%%i\"«»)
foreach ($distant.subdir) # en gros les repertoires (.DEFAULT et autre \"repertoire\" \"S-1-1-...\"«»)
{
$val=$distant.opensubkey($distant.subdir.\"\Control Panel\Desktop\\"«»)
$val.setvalue(\"200\"«»)
}
)
[/code:1]
Y a moyen de faire ca ?
Merci a tous
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 17 ans 5 mois #2920
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Modif clef sur +sieur serveur et pour +sieur user
Salut,
exca écrit:
powershell-scripting.com/index.php?optio...575&catid=5#2575
pour
[code:1]
SET INI=c:\listemachines.ini
[/code:1]
Voir le cmdlet Get-Content
ou + rapide
[code:1]
Foreach($Serveur IN ${c:\listemachines.ini})
{Echo $serveur}
[/code:1]
exca écrit:
Oui voir ce postY a moyen de faire ca ?
powershell-scripting.com/index.php?optio...575&catid=5#2575
pour
[code:1]
SET INI=c:\listemachines.ini
[/code:1]
Voir le cmdlet Get-Content
ou + rapide
[code:1]
Foreach($Serveur IN ${c:\listemachines.ini})
{Echo $serveur}
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- exca
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
il y a 17 ans 5 mois #2929
par exca
Réponse de exca sur le sujet Re:Modif clef sur +sieur serveur et pour +sieur user
Bon j'ai suivi te conseils et ca marche presque je dirais
enfin je me tape encore des exception
[code:1]
$computername = (get-wmiobject win32_computersystem).name
if ( \"$computername\" -ieq \"machineVlan1\" ) { $ini = \"c:\front_include_CA.ini\"}
if ( \"$computername\" -ieq \"machineVlan1\" ) { $ini = \"c:\middle_back_include_CA.ini\"}
$root = \"Users\"
#$root = \"LocalMachine\"
$type = [Microsoft.Win32.RegistryHive]::$root
#$key = \"SOFTWARE\Microsoft\Windows\CurrentVersion\"
$key = \"\"
$key_end = \"\Control Panel\Desktop\"
$chaine = \"ScreenSaveTimeOut\"
$value = 200
Foreach( $serveur IN (Get-Content -Path $ini) ) #pas trouvé comment ignorer les ligne vides
{
if ($serveur.length -gt 0) # du coup je triche :«»)
{
$regKey = [microsoft.win32.registrykey]::openremotebasekey($type, $serveur)
$regKey = $regKey.OpenSubKey($key)
Write-Host \"User's key of $serveur\"
Write-Host \"
\"
Foreach( $subkey in $regKey.GetSubKeyNames())
{
# on vire les clef \"*_Classes\"
if ( ($subkey.length -ge 8) -and ( $subkey.substring( ($subkey.length - 8), $subkey.length) -ine \"_Classes\" ) )
{ #comme on a les user on va changer la valeur ici
$regKey1 = [microsoft.win32.registrykey]::openremotebasekey($type, $serveur)
$regKey1 = $regKey1.OpenSubKey(\"$subkey\"\"$key_end\"«») #ca doit surement foiré ici
Write-Host \"$chaine -> \"$regKey1.GetValue(\"$chaine\"«»)
}
}
}
#pause
Write-Host -NoNewLine \"...\"
$null = $Host.UI.RawUI.ReadKey(\"NoEcho,IncludeKeyDown\"«»)
}
[/code:1]
j'ai une exception
et une autre
[code:1]
$computername = (get-wmiobject win32_computersystem).name
if ( \"$computername\" -ieq \"machineVlan1\" ) { $ini = \"c:\front_include_CA.ini\"}
if ( \"$computername\" -ieq \"machineVlan1\" ) { $ini = \"c:\middle_back_include_CA.ini\"}
$root = \"Users\"
#$root = \"LocalMachine\"
$type = [Microsoft.Win32.RegistryHive]::$root
#$key = \"SOFTWARE\Microsoft\Windows\CurrentVersion\"
$key = \"\"
$key_end = \"\Control Panel\Desktop\"
$chaine = \"ScreenSaveTimeOut\"
$value = 200
Foreach( $serveur IN (Get-Content -Path $ini) ) #pas trouvé comment ignorer les ligne vides
{
if ($serveur.length -gt 0) # du coup je triche :«»)
{
$regKey = [microsoft.win32.registrykey]::openremotebasekey($type, $serveur)
$regKey = $regKey.OpenSubKey($key)
Write-Host \"User's key of $serveur\"
Write-Host \"
\"
Foreach( $subkey in $regKey.GetSubKeyNames())
{
# on vire les clef \"*_Classes\"
if ( ($subkey.length -ge 8) -and ( $subkey.substring( ($subkey.length - 8), $subkey.length) -ine \"_Classes\" ) )
{ #comme on a les user on va changer la valeur ici
$regKey1 = [microsoft.win32.registrykey]::openremotebasekey($type, $serveur)
$regKey1 = $regKey1.OpenSubKey(\"$subkey\"\"$key_end\"«») #ca doit surement foiré ici
Write-Host \"$chaine -> \"$regKey1.GetValue(\"$chaine\"«»)
}
}
}
#pause
Write-Host -NoNewLine \"...\"
$null = $Host.UI.RawUI.ReadKey(\"NoEcho,IncludeKeyDown\"«»)
}
[/code:1]
j'ai une exception
au niveau du [code:1]if ( ($subkey.length -ge 8) -and ( $subkey.substring( ($subkey.length - 8), $subkey.length) -ine \"_Classes\" ) )[/code:1]Exception calling \"Substring\" with \"2\" argument(s): \"Index and length must refer to a location within the string.
Parameter name: length
et une autre
au niveau de [code:1]Write-Host \"$chaine -> \"$regKey1.GetValue(\"$chaine\"«»)[/code:1]You cannot call a method on a null-valued expression.
Connexion ou Créer un compte pour participer à la conversation.
- exca
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
il y a 17 ans 5 mois #2930
par exca
Réponse de exca sur le sujet Re:Modif clef sur +sieur serveur et pour +sieur user
En tout cas merci du coup de main
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 17 ans 5 mois #2931
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Modif clef sur +sieur serveur et pour +sieur user
Pour les lignes vide
[code:1]
get-content \"file\"|? {!$_ -eq [String]::Empty)
[/code:1]
voir aussi avec select-string mais c'est plus tordu je pense.
Pour ceci :
[code:1]
Write-Host \"$chaine -> \"$regKey1.GetValue(\"$chaine\"«»)
[/code:1]
essaie
[code:1]
Write-Host \"$chaine -> $($regKey1.GetValue(\"$chaine\"«»))\"
[/code:1]
Et sur le substring faut débugger
$host.EnterNestedPrompt peut t'aider, place cet appel avant le traitement en cause, et saisie Exit pour continuer le script.
Sinon dans ton test de début, tu as deux fois 'machineVlan1' c'est voulu ?
[code:1]
get-content \"file\"|? {!$_ -eq [String]::Empty)
[/code:1]
voir aussi avec select-string mais c'est plus tordu je pense.
Pour ceci :
[code:1]
Write-Host \"$chaine -> \"$regKey1.GetValue(\"$chaine\"«»)
[/code:1]
essaie
[code:1]
Write-Host \"$chaine -> $($regKey1.GetValue(\"$chaine\"«»))\"
[/code:1]
Et sur le substring faut débugger
$host.EnterNestedPrompt peut t'aider, place cet appel avant le traitement en cause, et saisie Exit pour continuer le script.
Sinon dans ton test de début, tu as deux fois 'machineVlan1' c'est voulu ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 17 ans 5 mois #2933
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Modif clef sur +sieur serveur et pour +sieur user
en lieu et place de ceci
[code:1] get-content \"file\"|? {!$_ -eq [String]::Empty)[/code:1]
faire
[code:1]
get-content t2.txt|? {$_ -notmatch \"^[\s]*$\"}
[/code:1]
Ce qui prend en compte les lignes avec des tabulations uniquement ou avec qq espaces uniquement ou juste un retour chariot, cas de la première proposition.
[code:1] get-content \"file\"|? {!$_ -eq [String]::Empty)[/code:1]
faire
[code:1]
get-content t2.txt|? {$_ -notmatch \"^[\s]*$\"}
[/code:1]
Ce qui prend en compte les lignes avec des tabulations uniquement ou avec qq espaces uniquement ou juste un retour chariot, cas de la première proposition.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.081 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Modif clef sur +sieur serveur et pour +sieur user