我有一个文件"test.ps1“,其内容如下:
$getRSDBName =
{
Add-PSSnapIn Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
$rsdb = Get-SPRSDatabase
return $rsdb
}
$rsdb = invoke-command -scriptblock $getRSDBName
$rsdb如果我称之为:
powershell -f c:\test.ps1如果我使用WinRS,我会得到一个错误:
winrs -r:xxxxx -u:xxxxxx -p:xxxxx powershell -f c:\test.ps1我也尝试过输入-Authentication CredSSP -Credential $creds作为Invoke-Command的参数,但结果和以前一样。在这两种情况下,错误是:
无法进入当地农场。没有注册带有FeatureDependencyId的Cmdlet。获取-SPRSDatabase:无法访问本地场。验证本地场是否已正确配置,当前可用,并且在再次尝试之前,您是否有适当的每个任务访问数据库。At C:\clean.ps1:181 char:29 + $rsdb = Get-SPRSDatabase <<<< + CategoryInfo : InvalidData:(Microsoft.Repor...ServiceDatabase: GetReportingServiceDatabase) Get-SPRSDatabase,SPCmdletException + FullyQualifiedErrorId :InvalidData
有人能解释一下发生了什么吗?
发布于 2015-11-18 17:03:58
这是由描述这里的“第二跳”问题引起的,远程服务器上的命令试图依次到达sql数据库(必须向其传递凭据,但不能再次委托它们)。
若要解决此问题,请在服务器上运行以下命令
Enable-WSManCredSSP –Role server以及客户机上的这一点(需要提升特权)
Enable-WSManCredSSP –Role client –DelegateComputer *那就记住要用
$session = New-PSSession -ComputerName $computer -Credential $credential -Authentication CredSSP当您打开远程会话并传递$session调用-命令时
Invoke-Command -ScriptBlock $doSomething -Session $session 这为我解决了:)一般来说,我发现在使用invoke-命令时发现的任何奇怪问题都与第二个hop问题有关。这实际上是一个安全特性,因此,它是为了帮助我们,即使它有点无聊,但并不难解决它。
发布于 2013-09-13 17:28:42
您能创建一个PS会话,然后在远程shell中运行脚本吗?如果是这样,为什么不向当前脚本添加一个创建/销毁会话?
$Session = New-PSSession -ComputerName "computerNameHere"
Import-PSSession -Session $Session
$getRSDBName = {
Add-PSSnapIn Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
$rsdb = Get-SPRSDatabase
return $rsdb
}
$rsdb = invoke-command -scriptblock $getRSDBName
$rsdb
Remove-PSSession -ComputerName "computerNameHere"https://stackoverflow.com/questions/15727080
复制相似问题