Tôi mới ở Powershell và tôi đang cố viết kịch bản để kiểm tra xem tệp có tồn tại hay không; nếu có, nó sẽ kiểm tra nếu một tiến trình đang chạy. Tôi biết có nhiều cách tốt hơn để viết điều này, nhưng bất cứ ai có thể vui lòng cho tôi một ý tưởng? Dưới đây là những gì tôi có:Kịch bản Powershell để kiểm tra xem tệp có tồn tại trên danh sách máy tính từ xa hay không
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}}
}
Phần thứ nhất (kiểm tra nếu tập tin tồn tại, chạy không có vấn đề Nhưng tôi có một ngoại lệ khi kiểm tra nếu quá trình đang chạy:.
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
Bất kỳ sự giúp đỡ sẽ được đánh giá!
Hi Ansgar , cảm ơn nhiều!! Tuy nhiên nó không hiển thị cho máy mà quá trình đang chạy. Đầu ra của tôi chỉ là danh sách mà từ đó máy có tệp tôi đang tìm kiếm. Tuy nhiên, nếu tập tin là có, tôi cần phải biết cũng nếu một quá trình đang chạy. Có cách nào làm được việc này không? Một lần nữa, cảm ơn thời gian của bạn. –
'Select-Object' thường đọc từ một đường ống. Nếu bạn sử dụng nó trong vòng lặp, bạn cần nạp nó thông qua thuộc tính '-InputObject':' Select-Object -InputObject $ _ @ {Name = ...} '. –