Question Remplacer un mot en fonction de l'OS

Plus d'informations
il y a 11 ans 4 mois #18709 par Toper
Bonjour,
selon la version de l'OS (XP ou W7), je souhaite remplacer un mot dans un fichier texte.
Je me base sur la version de l'OS car le chemin \"programfiles\" n'est pas le même.
Si j'essaie simplement de remplacer le mot, pas de pbm.
Mais si je conditionne avant, il me vide le fichier...

Voici le code:
[code:1]$os = Get-CimInstance win32_operatingsystem
$MainList = \"C:\Program Files\Cobian Backup 10\DB\MainList.lst\"
if ($OS.buildNumber -eq \"2600\") {get-Content $MainList} ForEach-Object {$_ -replace \"username\", \"2600\"} | set-content $MainList
if ($OS.buildNumber -eq \"7600\") {get-Content $MainList} forEach-Object {$_ -replace \"username\", \"7600\"} | set-content $MainList
if ($OS.buildNumber -eq \"7601\") {Get-Content $MainList} ForEach-Object {$_ -replace \"username\", \"7601\"} | Set-Content $MainList

[/code:1]Le but de ce (début) de script est de pouvoir automatiser l'installation de cobian backup, ainsi que la création de la tâche de sauvegarde...:whistle:<br><br>Message édité par: gregmurf, à: 2/01/15 16:31

Powershell: la vie est belle :)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 4 mois #18712 par xyz
Réponse de xyz sur le sujet Re:Remplacer un mot en fonction de l'OS
Salut,
ton bloc lié au If ne contient qu'une partie du traitement, tu dois inclure le foreach dans chaque bloc lié au If correspondant.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 4 mois #18718 par Toper
Salut,
tu veux dire qu'il faut un \&quot;foreach\&quot; pour le bloc \&quot;get-content\&quot; ?

Powershell: la vie est belle :)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 4 mois #18719 par xyz
Réponse de xyz sur le sujet Re:Remplacer un mot en fonction de l'OS
gregmurf écrit:

tu veux dire qu'il faut un \&quot;foreach\&quot; pour le bloc \&quot;get-content\&quot; ?

Oui :
[code:1]
$os = Get-CimInstance win32_operatingsystem
$MainList = \&quot;C:\Program Files\Cobian Backup 10\DB\MainList.lst\&quot;
if ($OS.buildNumber -eq \&quot;2600\&quot;«»)
{
(get-Content $MainList)|
ForEach-Object {$_ -replace \&quot;username\&quot;, \&quot;2600\&quot;} |
set-content $MainList
}
[/code:1]

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 4 mois #18722 par Toper
Merci.
C'est ce qui me manque: la \&quot;syntaxe\&quot; d'écriture....

Powershell: la vie est belle :)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 4 mois #18726 par Toper
Je dois encore merd.. sur la syntaxe...
Maintenant, il effectue bien le remplacement de ce que je lui demande, mais il créé une ligne ayant les mots remplacés en laissant la ligne d'origine, puis enregistre le fichier.
Et ce pour toutes les lignes (mêmes celles qui ne subissent aucune modif's) :evil:
[code:1]$username = Get-ADUser ${env:username} | Select-Object -ExpandProperty SamAccountName
$Computername = ${env:computername}
$osname = (Get-WmiObject -Class win32_operatingsystem).caption
$osarchitecture = (Get-WmiObject -Class win32_operatingsystem | Select-Object osarchitecture)
$MainList32Bits = \&quot;C:\Program Files\Cobian Backup 10\DB\MainList.lst\&quot;
$MainList64Bits = \&quot;C:\Program Files(X86)\Cobian Backup 10\DB\MainList.lst\&quot;
$DocsXP = \&quot;c:\Documents and Settings\${Env:username}\Mes documents\&quot;
$BureauXP = \&quot;c:\Documents and Settings\${Env:username}\Bureau\&quot;
$FavorisXP = \&quot;c:\Documents and Settings\${Env:username}\Favoris\&quot;


if ($osname -match \&quot;xp\&quot;«»)
{
(get-Content $MainList32Bits)
ForEach-Object {
$_ -replace 'C:\Users\USERNAME\Desktop', \&quot;$BureauXP\&quot;
$_ -replace 'C:\Users\USERNAME\Favorites', \&quot;$FavorisXP\&quot;
$_ -replace 'C:\Users\USERNAME\Documents', \&quot;$docs\&quot;
$_ -replace \&quot;computername\&quot;, \&quot;$Computername\&quot;
} | set-content $MainList32Bits
}
if ($osarchitecture -match \&quot;32\&quot; -and $osname -match \&quot;7\&quot;«»)
{
(get-Content $MainList32Bits) |
ForEach-Object {
$_ -replace \&quot;USERNAME\&quot;, \&quot;$username\&quot;
$_ -replace \&quot;computername\&quot;, \&quot;$Computername\&quot;
} | set-content $MainList32Bits
}
if ($osarchitecture -match \&quot;64\&quot; -and $osname -match \&quot;7\&quot;«»)
{
(get-Content $MainList64Bits) |
ForEach-Object {
$_ -replace \&quot;USERNAME\&quot;, \&quot;$username\&quot;
$_ -replace \&quot;computername\&quot;, \&quot;$Computername\&quot;
} | set-content $MainList64Bits
}[/code:1]

Powershell: la vie est belle :)

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.046 secondes
Propulsé par Kunena