Sono nuovo in Powershell e sto provando a scrivere uno script che controlla se esiste un file; se lo fa, controlla se un processo è in esecuzione. So che ci sono molti modi migliori per scrivere questo, ma qualcuno può darmi un'idea per favore? Ecco quello che ho:Script di Powershell per verificare se un file esiste nell'elenco di computer remoto
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 prima parte (controllare se il file esiste, funziona senza alcun problema, ma ho un'eccezione quando si controlla se il processo è in esecuzione:.
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
Qualsiasi aiuto sarebbe apprezzato!
Hi Ansgar , grazie molto!! Tuttavia non mostra per quale macchina il processo è in esecuzione. Il mio output è solo un elenco da cui le macchine hanno il file che sto cercando. Tuttavia, se il file è lì, ho bisogno di sapere anche se un processo è in esecuzione. C'è un modo per farlo? Ancora grazie per il tuo tempo. –
'Select-Object' normalmente viene letto da una pipeline. Se lo si utilizza all'interno di un ciclo, è necessario alimentarlo tramite la proprietà '-InputObject':' Select-Object -InputObject $ _ @ {Name = ...} '. –