无法使用Invoke-Command

时间:2017-11-10 20:47:49

标签: powershell

我正在编写一个脚本,用于在由SharePoint服务器(服务器2016)和域控制器(服务器2008R2)组成的标记测试环境中为受信任(AD FS)身份验证设置测试SharePoint服务器。我正在编写脚本以在SharePoint服务器上运行并使用远程会话来配置DC,因为DC只有PowerShell 2.0,缺少一些方便的功能。

我有一个特定的脚本段,它在DC上运行脚本块,下载AD FS 2.0安装程序,一个自解压机柜,并尝试安装它。除实际安装外,块的每一行都会执行。如果我登录机器并运行相同的线路,它就能完美运行。

Invoke-Command -Session $domainControllerSession -ScriptBlock {
    $installerUrl = "https://download.microsoft.com/download/F/3/D/F3D66A7E-C974-4A60-B7A5-382A61EB7BC6/RTW/W2K8R2/amd64/AdfsSetup.exe"
    $filename = "$($PWD.Path)\AdfsSetup.exe"
    $wc = New-Object System.Net.WebClient
    $wc.DownloadFile($installerUrl, $filename)
    Start-Process -FilePath $filename -ArgumentList "/quiet" -Wait
}

我尝试手动提取内容(使用/ x :),然后执行安装文件,但结果没有变化(注意:文件被提取但提取器进程永远不会退出,这似乎与问题)。我也搬到了DC并创建了一个到localhost的会话,并得到了同样的确切行为。

PS C:\Users\Administrator> $session = New-PSSession -ComputerName Localhost
PS C:\Users\Administrator> Invoke-Command -Session $session -ScriptBlock {
>> $filename = "$($PWD.Path)\AdfsSetup.exe"
>> write-host $filename
>> Test-Path -Path $filename
>> Start-Process -FilePath $filename -ArgumentList "/quiet" -Wait
>> Test-Path -Path 'C:\Program Files\Active Directory Federation Services 2.0'
>> }
>>
C:\Users\Administrator\Documents\AdfsSetup.exe
True
False
PS C:\Users\Administrator>

更新1

我使用/Logfile参数运行了该过程,并确认由于访问被拒绝错误导致安装失败。我还确认,正如预期的那样,远程会话在我用于启动会话的相同管理员帐户下运行。我假设这里缺少的成分是远程会话没有在升高的shell中运行。但是,我似乎无法使其工作。

Invoke-Command -Session $session -ScriptBlock {
  Start-Process PowerShell -Verb RunAs -ArgumentList "& C:\Users\Administrator\Documents\AdfsSetup.exe /quiet /Logfile C:\Users\Administrator\Documents\AdfsSetup.log" -Wait -PassThru
}

错误是一样的。

0 个答案:

没有答案