【问题标题】:Why does PowerShell not work if I use WinRS?如果我使用 WinRS,为什么 PowerShell 不起作用?
【发布时间】:2013-03-21 13:28:36
【问题描述】:

我有一个文件“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 是 未注册。 Get-SPRSDatabase : 无法访问本地场。 验证当前是否正确配置了本地场 可用,并且您有适当的每个任务可以访问 重试之前的数据库。 在 C:\clean.ps1:181 字符:29 + $rsdb = 获取 SPRS 数据库

有人可以解释发生了什么吗?

【问题讨论】:

  • PowerShell Remoting enabled 在远程主机上吗?是否所有主机上的执行策略都允许执行 PowerShell 脚本?

标签: sharepoint powershell invoke-command remote-execution winrs


【解决方案1】:

您能否创建一个 PS-Session,然后在该远程 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"

【讨论】:

    【解决方案2】:

    这是由here 描述的“第二跳”问题引起的,当远程服务器上的命令行开关依次尝试访问 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  
    

    这为我解决了 :) 总的来说,我发现我在使用调用命令时发现的任何奇怪问题都与第二跳问题有关。这实际上是一个安全功能,因此它在这里是为了帮助我们,即使它有点无聊,但并不难解决

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-04
      • 2016-03-20
      • 1970-01-01
      相关资源
      最近更新 更多