2015-04-16 3 views
2

Я искал здесь и в другом месте и не нашел ответа, так что вот мой вопрос.Определить версию PowerShell удаленно через WMI

Каков наилучший способ определить версию PowerShell на удаленном компьютере с использованием WMI?

фон

Моя задача состоит в том, чтобы проверять и обновлять около 1000 серверов для последней версии PowerShell. Некоторые из них имеют PowerShell v1, а некоторые не имеют WinRM, поэтому Invoke-command не является вариантом. PSExec также не является вариантом в этой среде. Вот почему мне нужно использовать WMI для выполнения этой задачи.

Любая помощь будет оценена по достоинству.

EDIT:

После долгих исследований я все еще склоняется к WMI. В частности, извлекается версия файла «powershell.exe». Мне кажется, это единственный способ охватить все версии.

код, который я до сих пор здесь:

$path = "C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe" 
$query = "SELECT Version FROM CIM_DataFile WHERE Name = '$path'" 
$PSFileVer = Get-WmiObject -Query $query -ComputerName $servername -Credential $creds 
$BuildVer = [version]$PSFileVer.Version.Split()[0] 

Все, что мне сейчас нужно, это полный список, версия отображение файла (номер сборки) до версии PowerShell. Есть идеи?

+0

Как об использовании инструмента управления как Configuration System Center Manager? Управление более чем несколькими десятками серверов без хороших инструментов - пустая трата времени. – vonPryz

+0

SCCM является опцией, но охватывает только около 80% серверов. Еще одна причина, по которой я ищу решение PowerShell/WMI. –

+1

Как насчет [ключи реестра] (http://stackoverflow.com/a/17142839/503046), то? – vonPryz

ответ

2

Решение от here является

$command = "ipconfig/all > C:\temp\result.txt" 
$cmd = "cmd /c $command" 

Invoke-WmiMethod -class Win32_process -name Create -ArgumentList $cmd -ComputerName "remotepc" 
sleep 1 
Get-Content \\remotepc\C$\temp\result.txt 

Вы также можете сделать то же с помощью this метода. Если вы это сделаете, вы не сможете получить возвращаемое значение напрямую, u должен перенаправить файл.

Вы могли бы настроить долю результатов, а не положить результат на локальном компьютере

+0

Спасибо @majkinetor. Это, безусловно, правдоподобный способ выполнения кода на удаленном ПК через WMI. Хотя мне действительно не нравится использовать .tmp-файлы для получения результатов, я могу в конечном итоге использовать это, если не придумаю лучшего способа. –

1

Если это помогает здесь команда:

$command = "powershell -command "+'"$PSVersionTable.PsVersion.Major | out-file c:\temp\version.txt"' 
Смежные вопросы