Сценарий входа PowerShell для входа в версию Microsoft Office - PullRequest
0 голосов
/ 07 февраля 2019

Я натолкнулся на сценарий PowerShell для регистрации версии удаленного компьютера Microsoft Office в домене.Я хочу запустить его как скрипт входа, чтобы я изменил OpenRemoteBaseKey на OpenBaseKey, и это код:

$version = 0
$reg = [Microsoft.Win32.RegistryKey]::OpenBaseKey('LocalMachine', 'Default')

$reg.OpenSubKey('software\Microsoft\Office').GetSubKeyNames() |% {
  if ($_ -match '(\d+)\.') {
    if ([int]$matches[1] -gt $version) {
      $version = $matches[1]
    }
  }    
}

if ($version) {
    Add-Content -Path \\server\share\oversion.txt -Value "$env:computername $env:username : $version"
}
else {
    Add-Content -Path \\server\share\oversion.txt -Value "$env:computername $env:username : 0"
}

, но теперь я получаю сообщение об ошибке:

You cannot call a method on a null-valued expression.
At line:4 char:1
+ $reg.OpenSubKey('software\Microsoft\Office').GetSubKeyNames() |% {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

, но неконечно, что это значит, поскольку GetSubKeyNames кажется действительным: https://docs.microsoft.com/en-us/dotnet/api/microsoft.win32.registrykey.getsubkeynames?view=netframework-4.7.2,, также оно работает с OpenRemoteBaseKey, может кто-нибудь указать мне правильное направление, пожалуйста?

1 Ответ

0 голосов
/ 08 февраля 2019

Я не уверен, почему OpenRemoteBaseKey работает, но OpenBaseKey нет, потому что я не могу воспроизвести это ..
Однако вы можете попробовать более способ Powershell сделать это:

$version = 0
Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\Office' -Name | Where-Object {$_ -match '(\d+)\.\d+'} | ForEach-Object {
    $version = [math]::Max([int]$_, $version)
}
Add-Content -Path \\server\share\oversion.txt -Value "$env:COMPUTERNAME $env:USERNAME : $version"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...