我只能获取命令以返回文本文件中第一台计算机上的服务。 对于这项任务,有没有比为每个人更好的方法?
Get-Service *vault* -ComputerName (Get-Content c:\users\sean\desktop\js.txt) | select name,status,machinename | sort machinename | format-table -autosize
答案 0 :(得分:6)
在没有get-content
的情况下尝试一下。试试这个:
Get-Service *vault* -ComputerName c:\users\sean\desktop\js.txt | select name,status,machinename | sort machinename | format-table -autosize
如果这不起作用,请尝试:
$Computers = Get-Content c:\users\sean\desktop\js.txt
Get-Service *vault* -computername $Computers | Select name,status,machinename |sort machinename |format-table -autosize
如果你渴望单行,那么试试这个:
Get-Content c:\users\sean\desktop\js.txt | Get-Service *vault* | Select name,status,machinename |sort machinename |format-table -autosize
我会先尝试顶级的。我会测试,但我现在无法访问任何可以进行正确测试的内容。
答案 1 :(得分:3)
$Computers = get-content .\desktop\test.txt
$Service = "Vault"
foreach ($computer in $computers) {
$computer
$Servicestatus = get-service -name $Service -ComputerName $computer
}
$Servicestatus | select-object Name,Status,MachineName | format-table -Autosize
这适用于我,它为我提供了文本文件中的每台计算机,并且它会查找该服务。
答案 2 :(得分:2)
这就是我使用的。我从AD中的OU获取计算机列表。
Import-Module ActiveDirectory
$ou = "OU=Servers,DC=Domain,DC=com"
$servers = Get-ADComputer -Filter * -SearchBase $ou | select-object -expandproperty name
Foreach ($server in $servers){
$Data = Get-Service -ServiceName *IIS*,*TomCat*,*httpd* -ComputerName $server | select machinename,name | sort machinename | format-table -AutoSize
Write($Data) | Out-File .\WebServices.txt -Append
}
答案 3 :(得分:1)
$servers = Get-Content .\servers.txt
Foreach ($server in $servers) {
"$server"
Get-Service -ComputerName $Server -name -like "*vault*"
"-------------------"
}
答案 4 :(得分:1)
在使用旧版PowerShell的内存限制限制之后,我需要刷新我的代码:
旧代码: gwmi win32_service -computer $ allcomputers | Select-Object __SERVER,Name,state,startmode,StartName
新代码:
`$ servers = Get-Content“computers.txt” Foreach($ server in $ servers){
Get-WmiObject -Class WIN32_service -ComputerName $ server | Select-Object __SERVER,Name,state,startmode,StartName | Export-Csv -path“Report.CSV”-NoTypeInformation -Append
}`
答案 5 :(得分:1)
您可以通过以下方式获取AD域中所有服务的列表:
Get-ADComputer -Filter {OperatingSystem -Like “Windows 10*”} | ForEach-Object {Get-WmiObject -Class Win32_Service -Computer $_.Name}
关于此的更多有用示例(获取文本文件中列出的所有计算机的服务列表等): https://www.action1.com/kb/list_of_services_on_remote_computer.html
答案 6 :(得分:0)
Get-Service -ComputerName ...
在PowerShell 2.0中有一个错误,它只返回第一台计算机。这已在较新版本中修复,因此如果您升级到PowerShell 3.0或更高版本,原始代码将正常工作。
作为解决方法,使用foreach循环为每台计算机运行Get-Service
一次:
Get-Content c:\users\sean\desktop\js.txt |
ForEach-Object { Get-Service -Name *vault* -ComputerName $_ } |
Select-Object -Property Name, Status, MachineName |
Sort-Object -Property MachineName |
Format-Table -AutoSize
答案 7 :(得分:-1)
$servers = Get-Content .\servers.txt
Foreach ($server in $servers) {
"$server"
Get-Service *vault*
"-------------------"
}