我需要在远程系统列表中使用PowerShell获取操作系统版本和修订版号。
我需要从[environment] :: OSVersion.Version获得的结果,但是在远程系统上。
当我运行[environment] :: OSVersion.Version
时它返回
主要次要构建修订
6 1 7601 65536
最终目标是它看起来像这样(系统名称是我正在查询的远程系统。)
SystemName 6.1.7601.65536
我目前的代码:
$expectedVersion = "6.1.7601.65536"
$computer = Get-content "C:\temp\servers.txt"
foreach ($computer in $computer)
{
$a=[environment]::OSVersion.Version
If ($a -lt $expectedVersion)
{
Write-Host "$computer $a is NOT Patched" -ForegroundColor Red
}
Else
{
Write-Host "$computer $a is Patched" -ForegroundColor Green
}}
给我以下结果:
System-01 6.1.7601.65536已修补
System-02 6.1.7601.65536已修补
System-41 6.1.7601.65536已修补
System-42 6.1.7601.65536已修补
我遇到的问题是生成的操作系统版本只是本地系统而不是远程系统。
我知道这是因为它是从一个Win 7框中运行的,只有很长的Server列表和唯一的服务器操作系统,它们是不同的操作系统版本号,然后显示在结果中。
我在这里错过了什么。你们都可以帮助我调整它以使其适用于远程系统吗?
感谢
答案 0 :(得分:0)
查看您的咖啡样本,首先获取服务器名称列表,然后迭代它们。但是在迭代中,目标远程服务器中没有任何反应。
您需要做的是创建一个实现查询的脚本块,然后在每次迭代时使用PowerShell远程处理在远程服务器上执行它。
喜欢这个
$block={....}
$result=()
foreach($server in $servers)
{
$result+= Invoke-Command -Computer $server -ScrptBlock $block
}
Powershell远程处理不是一个容易的主题。它要求每个目标服务器都启用了PowerShell远程处理。在上面的代码中,您的凭据将被使用,但是对于高级变体,通过使用参数或额外的PowerShell会话将允许您执行任何操作。
如果您需要更多远程帮助,请告诉我们。用一个答案解释这是一个非常大的主题。
答案 1 :(得分:0)
作为使用PSRemoting的替代方法,您可以使用其他方法获取操作系统版本。 WMI类Win32_OperatingSystem包含系统的版本信息。
$expectedVersion = "6.1.7601.65536"
$Servers = Get-Content "C:\temp\servers.txt"
$OSData = Get-CimInstance -ComputerName $Servers -ClassName Win32_OperatingSystem
ForEach ($Entry in $OSData) {
If ($Entry.Version -lt $expectedVersion) {
Write-Host "$($Entry.PSComputerName) $($Entry.Versions) is NOT Patched" -ForegroundColor Red
} Else {
Write-Host "$($Entry.PSComputerName) $($Entry.Versions) is Patched" -ForegroundColor Green
}
}
或者,您可以使用Get-HotFix
检查是否安装了特定的修补程序。
$PatchID = 'KB1234567'
$Servers = Get-Content "C:\temp\servers.txt"
$HotFixes = Get-HotFix -ID $PatchID -ComputerName $Servers
ForEach ($Server in $Servers) {
if ($Server -notin $HotFixes.PSComputerName) {
Write-Host "$PatchID missing on $Server" -ForegroundColor Red
} else {
Write-Host "$PatchID installed on $Server" -ForegroundColor Green
}
}