Script Powershell pour vérifier si un fichier existe sur l'ordinateur distant liste
Je suis nouveau à Powershell, et je suis en train d'écrire un script qui vérifie si un fichier existe, si c'est le cas, il vérifie si un processus est en cours d'exécution.
Je sais qu'il ya beaucoup de meilleures façons de l'écrire, mais quelqu'un peut-il me donner une idée?
Voici ce que j'ai:
Get-Content C:\temp\SvcHosts\MaquinasEstag.txt | `
Select-Object @{Name='ComputerName';Expression={$_}},@{Name='SvcHosts Installed';Expression={ Test-Path "\$_\c$\Windows\svchosts"}}
if(Test-Path "\$_\c$\Windows\svchosts" eq "True")
{
Get-Content C:\temp\SvcHosts\MaquinasEstag.txt | `
Select-Object @{Name='ComputerName';Expression={$_}},@{Name='SvcHosts Running';Expression={ Get-Process svchosts}}
}
La première partie (vérifier si le fichier existe, s'exécute sans problème. Mais j'ai une exception lors de la vérification si le processus est en cours d'exécution:
Test-Path : A positional parameter cannot be found that accepts argument 'eq'.
At C:\temp\SvcHosts\TestPath Remote Computer.ps1:4 char:7
+ if(Test-Path "\$_\c$\Windows\svchosts" eq "True")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Test-Path], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.TestPathCommand
Toute aide serait appréciée!
OriginalL'auteur Bianca Borges | 2013-08-09
Vous devez vous connecter pour publier un commentaire.
L'égalité opérateur de comparaison est
-eq
, paseq
. La valeur booléenne "true" dans le PowerShell est$true
. Et si vous voulez comparer le résultat de l'Test-Path
à quelque chose de la façon dont vous le faites, vous devez exécuter l'applet de commande dans une sous-expression, sinon-eq "True"
serait traitée comme une option supplémentaireeq
avec l'argument"True"
à l'applet de commande.Changer cela:
dans cette:
Ou (mieux encore), depuis
Test-Path
déjà renvoie une valeur booléenne, il suffit de faire ceci:Select-Object
lit normalement à partir d'un pipeline. Si vous l'utilisez à l'intérieur d'une boucle, vous avez besoin de l'alimenter via le-InputObject
propriété:Select-Object -InputObject $_ @{Name=...}
.OriginalL'auteur Ansgar Wiechers