在 Foreach 循环中组合 Powershell 命令
Combining Powershell Commands in a Foreach Loop
我是 powershell 的新手,想知道为什么它不起作用。基本上,我有一个 foreach 循环来检查 IIS 是否为 运行 并报告 OS 版本(如果是)并将其写入文件。但是,它没有正确报告。它似乎获取了第一项的值(IIS 状态和 OS),然后通过我循环中的其他项填充它。
#Get List of Servers to Scan
$servers = (Get-Content e:\servers.txt)
#Determine if IIS is Running
foreach($server in $servers){
$iis = get-wmiobject Win32_Service -ComputerName $server -Filter "name='IISADMIN'";
if($iis.State -eq "Running")
{$OSVer= [environment]::OSVersion.Version}
Write-Host "$server,$IISRun,$OSVer" | Out-File -FilePath "E:\results.txt"
}
结果:
Server1,true,5.2.3790.131072 <---- Correct
Server2,true,5.2.3790.131072 <---- Correct
Server3,true,5.2.3790.131072 <---- Wrong OS reported (windows 2008)
Server4,true,5.2.3790.131072 <---- Wrong OS reported (windows 2008)
Server5,true,5.2.3790.131072 <---- IIS isn't installed here at all
Server6,true,5.2.3790.131072 <---- IIS isn't installed here at all
感谢任何建议...
[environment]::OSVersion.Version
为您提供本地 OS 版本。使用 Get-WmiObject Win32_OperatingSystem -ComputerName $server
来获取目标计算机的 OS 信息,例如:
foreach ($server in $servers)
{
$iis = Get-WmiObject Win32_Service -ComputerName $server -Filter "name='IISADMIN'"
$os = Get-WmiObject Win32_OperatingSystem -ComputerName $server
$iisRunning = $iis.State -eq "Running"
$osVersion = $os.Version
Write-Host "$server, $iisRunning, $osVersion"
}
我是 powershell 的新手,想知道为什么它不起作用。基本上,我有一个 foreach 循环来检查 IIS 是否为 运行 并报告 OS 版本(如果是)并将其写入文件。但是,它没有正确报告。它似乎获取了第一项的值(IIS 状态和 OS),然后通过我循环中的其他项填充它。
#Get List of Servers to Scan
$servers = (Get-Content e:\servers.txt)
#Determine if IIS is Running
foreach($server in $servers){
$iis = get-wmiobject Win32_Service -ComputerName $server -Filter "name='IISADMIN'";
if($iis.State -eq "Running")
{$OSVer= [environment]::OSVersion.Version}
Write-Host "$server,$IISRun,$OSVer" | Out-File -FilePath "E:\results.txt"
}
结果:
Server1,true,5.2.3790.131072 <---- Correct
Server2,true,5.2.3790.131072 <---- Correct
Server3,true,5.2.3790.131072 <---- Wrong OS reported (windows 2008)
Server4,true,5.2.3790.131072 <---- Wrong OS reported (windows 2008)
Server5,true,5.2.3790.131072 <---- IIS isn't installed here at all
Server6,true,5.2.3790.131072 <---- IIS isn't installed here at all
感谢任何建议...
[environment]::OSVersion.Version
为您提供本地 OS 版本。使用 Get-WmiObject Win32_OperatingSystem -ComputerName $server
来获取目标计算机的 OS 信息,例如:
foreach ($server in $servers)
{
$iis = Get-WmiObject Win32_Service -ComputerName $server -Filter "name='IISADMIN'"
$os = Get-WmiObject Win32_OperatingSystem -ComputerName $server
$iisRunning = $iis.State -eq "Running"
$osVersion = $os.Version
Write-Host "$server, $iisRunning, $osVersion"
}