无法远程设置SCOM维护模式

时间:2016-09-23 11:42:05

标签: powershell scom

我们正试图远程将服务器置于维护模式。 我正在使用SCOM functions created by Tom Schumacher

如果我在SCOM服务器上执行以下操作,则该过程完成,我可以将服务器置于维护模式并再次停止:

#load the function
. C:\temp\opsmanagerFunctions.ps1

#Import the OpsMgr module
Import-Module OperationsManager

#Set server into maintenance mode
Start-serverScommaintenance -servername testserver -message "test" -maintmodeinMinutes '6'

#Stop server maintenance mode
Stop-ServerScommaintenance -servername testserver -message "test complete"

这一切都很好,但是我正在尝试从另一台服务器运行上述过程,该服务器将运行其他几个需要服务器首先处于维护模式的进程。

我的火车是从辅助服务器运行以下内容:

#1
C:\temp\opsmanagerFunctions.ps1

#2
Invoke-Command -ComputerName scomservername -ScriptBlock {Import-Module OperationsManager}

#3
Invoke-Command -ComputerName scomservername ${function:Start-serverScommaintenance} 

#4
Invoke-Command -ComputerName scomservername -ScriptBlock {Start-serverScommaintenance -servername testserver -message "test" -maintmodeinMinutes '3'}

#5
Invoke-Command -ComputerName scomservername -ScriptBlock {Stop-ServerScommaintenance -servername testserver -message "test complete"}

但是,在尝试在远程计算机上运行该功能后(步骤3),我收到以下错误:

The term 'Get-SCOMClassInstance' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that
path is correct and try again.
    + CategoryInfo          : ObjectNotFound: (Get-SCOMClassInstance:String) [Get-Command], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException,Microsoft.PowerShell.Commands.GetCommandCommand
    + PSComputerName        : scomserver

1 个答案:

答案 0 :(得分:2)

像这样使用Invoke-Command

Invoke-Command -ComputerName scomservername -ScriptBlock {Import-Module OperationsManager}

创建会话,执行import命令并结束会话。因此,下一次调用没有加载模块并且脚本失败。

使用会话继续使用上下文,

$s = New-PSSession -ComputerName foo
Invoke-Command -Session $s -Scriptblock { <whatever> }