Get-WmiObject не распознается в коде
Я получаю сообщение об ошибке при добавлении Get-WmiObject в некоторый код, который я использую для удаленного продвижения программного обеспечения. Я хочу, чтобы код проверял, какие приложения установлены в данный момент, прежде чем продолжить, но когда я его запускаю, я получаю сообщение об ошибке:
Get-WmiObjectÂ: термин "Get-WmiObject" не распознается как имя командлета, функции, файла сценария или работоспособной программы. Проверьте правильность написания имени или, если путь был указан, проверьте правильность пути и повторите попытку. В C:\code\getwmiobj.ps1:1 char:1 + Get-WmiObject -Class "win32_Product" -ComputerName "$computer" | ... + ~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound: (Get-WmiObjectÂ:String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException
Вот мой код:
$choices = [System.Management.Automation.Host.ChoiceDescription[]] @("&Y","&N")
while ( $true )
{
$computer= Read-Host "Computer that needs software installed or uninstalled"
Get-WmiObject -Class "win32_Product" -ComputerName "$computer" | Out-GridView -Title "list of programs installed"
$installed = read-host "Is the software already installed (Y or N)?"
if ($installed -eq "N")
{
if (!$computer)
{
Write-Host "You did not give me a computer name. Please re-run with computer name or IP address"
Pause
Exit
}
$ping = (Test-Connection -ComputerName $computer -Count 1 -quiet)
$build= "c$\build\"
$psexec= "\\bconac01\ds-support\gs_IT\office\scripts, Fixes and Tools\Remote install tool\Common install\psExec64.exe"
$deployappexe="\\bconac01\ds-support\gs_IT\office\scripts, Fixes and Tools\Remote install tool\Common install\Deploy-Application.exe"
$deployappcfg="\\bconac01\ds-support\gs_IT\office\scripts, Fixes and Tools\Remote install tool\Common install\Deploy-Application.exe.config"
$swType= Get-ChildItem "\\bconac01\ds-prod\apps\DesktopServices" | Out-GridView -Title "Type of install needed" -PassThru | Select-object
$SW= Get-ChildItem "\\bconac01\ds-prod\apps\DesktopServices\$swType\" | Out-GridView -Title "What do you want to install" -PassThru | Select-object
$swloc= "\\bconac01\ds-prod\apps\DesktopServices\$swType\$SW\package\"
$ps= Get-ChildItem $swloc | Out-GridView -Title "what installer would you like to use?" -PassThru | Select-Object -expandproperty name
$uninstall= read-host "Is this an uninstall? (Y or N) (Default is install)"
if ($uninstall -eq "Y") {$installchoice= "uninstall"} else {$installchoice= "install" }
if ($ping -eq "true")
{
Copy-item -Path $swloc -Recurse -Destination \\$computer\$build
Copy-Item -Path $psexec -Destination \\$computer\$build\package
Copy-item -Path $deployappexe -Force -Destination \\$computer\$build\package
Copy-item -Path $deployappcfg -Force -Destination \\$computer\$build\package
Set-Location \\$computer\$build\package
.\psExec64.exe \\$computer "\\$computer\$build\package\Deploy-Application.exe" "$ps" -DeploymentType "$installchoice" -DeployMode "Interactive"
Set-Location -Path 'C:\Code'
Remove-item -Path \\$computer\$build\package -Recurse -Force
Write-Host " $installchoice of $SW on $computer is complete."
Pause
}
else
{
Write-Host "Unable to ping $computer at this time. Try re-running with the computers IP address"
Pause
}
}
else
{
$choice = $Host.UI.PromptForChoice("Repeat the script?","",$choices,0)
if ( $choice -ne 0 )
{
break
}
}
$choice = $Host.UI.PromptForChoice("Repeat the script?","",$choices,0)
if ( $choice -ne 0 )
{
break
}
}
3 ответа
У первоначального спрашивающего явно была проблема с лишним символом, но если кто-то придет сюда, у него действительно проблемы сGet-WmiObject
, они могут заметить, что эта команда устарела , поэтому я исправил это, используя PS 5.1, а не 7.3 (в какой-то момент я установил обе).
Ошибка:
(base) PS C:\Users\tom> $PSVersionTable
Name Value
---- -----
PSVersion 7.3.0
PSEdition Core
GitCommitId 7.3.0
OS Microsoft Windows 10.0.19045
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
После:
(base) PS C:\Users\tom> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.19041.1682
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.19041.1682
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Конечно, мне, вероятно, следует обновить свои сценарии вместо этого. Этот поток GH предполагает, чтоGet-CimInstance
может быть подходящей заменой, хотя сейчас я не знаю, те же ли аргументы.
У вас установлен другой языковой пакет? Его явно жалуются на. Так что это означает, что если вы скопировали + вставили чей-то блог / код, который написал его в другом регионе, они могут иметь специальный символ.
Исправлено: Переписать команду вручную. Вставьте его в блокнот и посмотрите, что получится. Откройте скрипт в Блокноте, и вы увидите, что не так.
Я смог исправить эту ошибку, скопировав код в новый файл.ps1 и запустив его. Других изменений не было.:П