2017-07-05 1 views
-1

J'ai un fichier XML. Je veux rechercher une chaîne, puis supprimer cette ligne du fichier.Pourquoi -NotMatch ne fonctionne pas lors de l'utilisation d'un script PowerShell?

Maintenant, le problème est que lorsque je cours le code suivant de la console PS, cela fonctionne bien - supprime la ligne qui contient "test3". Mais quand je mets le même code dans un script PS et l'exécute, il ne supprime pas la ligne prévue. Pouvez-vous me faire savoir s'il me manque quelque chose?

test.txt:

test1 
test2 
test3 
test4 
test5 
test6 

code:

$loc = "D:\test.txt" 
$msg = "test3" 
$newF = Get-Content -Path $loc | where {$_ -notmatch $msg} 
$newF 

J'utilise PSVersion: 5.1.14393.1358.

+1

Je ne pense pas que cela fait tout à fait sens. Êtes-vous sûr que même cet exemple de code présente le même comportement? – briantist

+1

@Briantist - Je suis d'accord, cependant, je crois que OP pense que la dernière ligne de code ('$ newF') devrait supprimer la ligne dans le fichier, par opposition à l'affichage de la sortie. suv3ndu, s'il vous plaît confirmer. – gravity

+0

Ah, bon appel @gravity. – briantist

Répondre

0

enter image description hereenter image description here

Works tout à fait bien. Voir l'image ci-dessous.

Fonctionne également à partir de la console.

0

-notmatch est conçu pour fonctionner avec une regex. Je suggère d'utiliser -notlike à l'avenir. Comme d'autres l'ont dit, votre exemple limité n'est pas reproductible.

Doc sur -notmatch: Link