Jestem nowy w Powershell i próbuję napisać skrypt, który sprawdza, czy plik istnieje; jeśli tak, sprawdza, czy proces jest uruchomiony. Wiem, że jest o wiele lepsze sposoby na napisanie tego, ale czy ktoś może mi dać pomysł? Oto co mam:Skrypt powershell, aby sprawdzić, czy plik istnieje na liście komputerów zdalnych
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}}
}
pierwsza część (sprawdzić, czy plik istnieje, działa bez problemu, ale mam wyjątek podczas sprawdzania, czy proces jest uruchomiony.
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
Każda pomoc będą mile widziane!
Hi Ansgar:
albo (jeszcze lepiej), ponieważ
Test-Path
już zwraca wartość logiczną, po prostu to zrobić , Wielkie dzięki!! Jednak to nie pokazuje, dla której maszyny proces jest uruchomiony. Moje wyniki to tylko lista, z której maszyny mają plik, którego szukam. Jednakże, jeśli plik tam jest, muszę wiedzieć również, czy proces jest uruchomiony. Czy jest jakiś sposób na zrobienie tego? Jeszcze raz dziękuję za poświęcony czas. –'Select-Object' zwykle czyta z potoku. Jeśli używasz go wewnątrz pętli, musisz go podać przez właściwość '-InputObject':' Select-Object -InputObject $ _ @ {Name = ...} '. –