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 #2935
par exca
Réponse de exca sur le sujet Re:Modif clef sur +sieur serveur et pour +sieur user
[code:1]Foreach( $serveur IN (get-content $ini | where { ! $_ -match [String]::Empty }) ) [/code:1]
Ca marche
par contre
[code:1]Incomplete $(subexpression) sequence in string.
+ Write-Host \"$chaine -> $( $regKey1.GetValue(\"$ <<<< chaine\"«») )\"
Exception calling \"Substring\" with \"2\" argument(s): \"Index and length must refer to a location within the string.
Parameter name: length\"
+ if ( ($subkey.length -ge 8) -and ( $subkey.substring( <<<< ($subkey.length - 8), $subkey.length) -ine \"_Classes\" ) )
[/code:1]
Ca marche
par contre
[code:1]Incomplete $(subexpression) sequence in string.
+ Write-Host \"$chaine -> $( $regKey1.GetValue(\"$ <<<< chaine\"«») )\"
Exception calling \"Substring\" with \"2\" argument(s): \"Index and length must refer to a location within the string.
Parameter name: length\"
+ if ( ($subkey.length -ge 8) -and ( $subkey.substring( <<<< ($subkey.length - 8), $subkey.length) -ine \"_Classes\" ) )
[/code:1]
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 #2936
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Modif clef sur +sieur serveur et pour +sieur user
Le pb est dans l'ouverture de la clé, tu y inséres un guillemet, et pour le substring autant prendre l'opérateur -notmatch :
[code:1]
# on vire les clef \"*_Classes\"
if ($subkey -notmatch \"_Classes\"«»)
...
$regKey1 = $regKey1.OpenSubKey(\"$subkey$key_end\"«»)
#ou $regKey1 = $regKey1.OpenSubKey(\"$subkey\"+\"$key_end\"«»)
[/code:1]
[Edit]
Tu ne contrôles aucun cas d'exception dans ton script...<br><br>Message édité par: Laurent Dardenne, à: 10/10/08 16:13
[code:1]
# on vire les clef \"*_Classes\"
if ($subkey -notmatch \"_Classes\"«»)
...
$regKey1 = $regKey1.OpenSubKey(\"$subkey$key_end\"«»)
#ou $regKey1 = $regKey1.OpenSubKey(\"$subkey\"+\"$key_end\"«»)
[/code:1]
[Edit]
Tu ne contrôles aucun cas d'exception dans ton script...<br><br>Message édité par: Laurent Dardenne, à: 10/10/08 16:13
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 #2938
par exca
Réponse de exca sur le sujet Re:Modif clef sur +sieur serveur et pour +sieur user
[code:1]$computername = (get-wmiobject win32_computersystem).name
if ( \"$computername\" -ieq \"machineVlan1\" ) { $ini = \"D:\front_include_CA.ini\"}
if ( \"$computername\" -ieq \"machineVlan2\" ) { $ini = \"D:\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
# pour chaque machine du fichier a partles lignes vides
Foreach( $serveur IN (get-content $ini | where { ! $_ -match [String]::Empty }) )
{
$regKey = [microsoft.win32.registrykey]::openremotebasekey($type, $serveur)
$regKey = $regKey.OpenSubKey($key)
Write-Host \"$serveur\"
Write-Host \"
\"
Foreach( $subkey in $regKey.GetSubKeyNames())
{
# on vire les clef \"*_Classes\"
if ( $subkey -notmatch \"_Classes\" )
{ #comme on a les user on va changer la valeur ici
Write-host -NoNewLine \"$subkey \"
$regKey1 = [microsoft.win32.registrykey]::openremotebasekey($type, $serveur)
$regKey1 = $regKey1.OpenSubKey(\"$subkey$key_end\"«»)
Write-Host \"$chaine = \" $regKey1.GetValue(\"$chaine\"«»)
}
}
#pause
Write-Host \"...\"
$null = $Host.UI.RawUI.ReadKey(\"NoEcho,IncludeKeyDown\"«»)
}
[/code:1]
ca marche :']
Merci
Qu'elles genre d'exceptions faut il gérer ? D'ailleurs quand on appelle une commande il y a moyen de savoir quelle Exception il y a trap ?
if ( \"$computername\" -ieq \"machineVlan1\" ) { $ini = \"D:\front_include_CA.ini\"}
if ( \"$computername\" -ieq \"machineVlan2\" ) { $ini = \"D:\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
# pour chaque machine du fichier a partles lignes vides
Foreach( $serveur IN (get-content $ini | where { ! $_ -match [String]::Empty }) )
{
$regKey = [microsoft.win32.registrykey]::openremotebasekey($type, $serveur)
$regKey = $regKey.OpenSubKey($key)
Write-Host \"$serveur\"
Write-Host \"
\"
Foreach( $subkey in $regKey.GetSubKeyNames())
{
# on vire les clef \"*_Classes\"
if ( $subkey -notmatch \"_Classes\" )
{ #comme on a les user on va changer la valeur ici
Write-host -NoNewLine \"$subkey \"
$regKey1 = [microsoft.win32.registrykey]::openremotebasekey($type, $serveur)
$regKey1 = $regKey1.OpenSubKey(\"$subkey$key_end\"«»)
Write-Host \"$chaine = \" $regKey1.GetValue(\"$chaine\"«»)
}
}
#pause
Write-Host \"...\"
$null = $Host.UI.RawUI.ReadKey(\"NoEcho,IncludeKeyDown\"«»)
}
[/code:1]
ca marche :']
Merci
Qu'elles genre d'exceptions faut il gérer ? D'ailleurs quand on appelle une commande il y a moyen de savoir quelle Exception il y a trap ?
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 #2939
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Modif clef sur +sieur serveur et pour +sieur user
exca écrit:
exca écrit:
msdn.microsoft.com/en-us/library/microso...ebasekey(VS.80).aspx
Pour OpenRemoteBaseKEy tu as celles-ci
ArgumentException : hKey is invalid.
IOException : machineName is not found.
ArgumentNullException : machineName is a null reference (Nothing in Visual Basic).
SecurityException : The user does not have the proper permissions to perform this operation.
UnauthorizedAccessException : The user does not have the necessary registry rights.
Le plus souvent on n'en tient pas compte mais en cas de pb on se retrouve dans le brouillard. Et comme en prod c'est souvent le mode urgence mieux vaut bétonner le script. Ainsi tu t'assures que le pb ne provient pas du script mais d'une condition extérieur et tu sais laquelle ou au moins dans quelle direction rechercher.
Par exemple pour IOException un nom de machine peut être mal orthographié bien que ce cas peut être déjà traité en amont par un test à l'aide de ping par exemple, etc
En même temps un jeu de test c'est pas mal non plus
Bon faute de temps on fait souvent l'impasse sur ces aspects là...
Non il faut regarder la doc si c'est précisé ( sinon le code avec Reflector pour les + avancés)D'ailleurs quand on appelle une commande il y a moyen de savoir quelle Exception il y a trap ?
exca écrit:
Dans ce cas on consulte MSDN, et on recherche le nom de la classe dans la version 2.0 du framework, ensuite on consulte la doc du membre (méthode ou propriété), le paragraphe Exception et parfois RemarksQu'elles genre d'exceptions faut il gérer ?
msdn.microsoft.com/en-us/library/microso...ebasekey(VS.80).aspx
Pour OpenRemoteBaseKEy tu as celles-ci
ArgumentException : hKey is invalid.
IOException : machineName is not found.
ArgumentNullException : machineName is a null reference (Nothing in Visual Basic).
SecurityException : The user does not have the proper permissions to perform this operation.
UnauthorizedAccessException : The user does not have the necessary registry rights.
Le plus souvent on n'en tient pas compte mais en cas de pb on se retrouve dans le brouillard. Et comme en prod c'est souvent le mode urgence mieux vaut bétonner le script. Ainsi tu t'assures que le pb ne provient pas du script mais d'une condition extérieur et tu sais laquelle ou au moins dans quelle direction rechercher.
Par exemple pour IOException un nom de machine peut être mal orthographié bien que ce cas peut être déjà traité en amont par un test à l'aide de ping par exemple, etc
En même temps un jeu de test c'est pas mal non plus
Bon faute de temps on fait souvent l'impasse sur ces aspects là...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.100 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Modif clef sur +sieur serveur et pour +sieur user