远程执行powershell脚本

时间:2016-06-21 19:07:33

标签: powershell batch-file

我有一个存储在服务器上的powershell脚本,需要某些用户能够发送命令从他们的工作站运行这个脚本。我已经进入服务器并运行命令以允许远程PowerShell。下面是我正在运行的脚本以及我的错误的屏幕截图。

invoke-command { powershell.exe -noprofile -executionpolicy Bypass C:\script directory } -computername  -credential (domain).local\Administrator

Error Message

2 个答案:

答案 0 :(得分:0)

您必须执行一些调整才能运行远程PowerShell。可能有些规则并不适用。

  1. 启用ps-remoting
  2. powershell -noprofile -command Enable-PsRemoting -Force

    1. 启用wimRm服务(Windows远程管理)
    2. sc config "WinRM" start= delayed-auto

      sc start "WinRM"

      1. 为winRm服务添加防火墙规则
      2. netsh advfirewall firewall set rule name="Windows Remote Management (HTTP-In)" profile=domain new enable=yes

        netsh advfirewall firewall set rule name="Windows Remote Management (HTTP-In)" profile=private,public new enable=yes profile=private,public

        1. 查找WS-Management TrustedHost内容
        2. winrm g winrm/config/client

          你会得到像

          这样的东西
              Client
                NetworkDelayms = 5000
                URLPrefix = wsman
                AllowUnencrypted = false
              Auth
                Basic = true
                Digest = true
                Kerberos = true
                Negotiate = true
                Certificate = true
                CredSSP = false
              DefaultPorts
                HTTP = 5985
                HTTPS = 5986
              TrustedHosts = MyComputer
          
          1. 更新可信主机列表以适合允许连接的工作站
          2. winrm s winrm/config/client @{TrustedHosts="server,computer01,computer02,etc"}

            你可以检查它是否适用于

            winrm quickconfig

            我认为这就是全部。希望它有所帮助

答案 1 :(得分:0)

@ user326334

我发布了另一个答案,因为我需要澄清自己。也许我完全误解了你,我需要查看错误的确切描述。

但有些评论......

Invoke-command可以直接运行powershell命令。

您调用的脚本在路径中包含空格,请考虑引用。

我可能会错过一些内容,但我认为您将 Invoke-Command参数 powershell cmdLets 混合为 -credential ... read-host -Prompt ...

试一下,让我知道发生了什么

CASE 
WHEN COUNT(DISTINCT col3_typeID) OVER (PARTITION BY col1) = 1
THEN col3_typeID -- Assume this is a CHAR column

WHEN COUNT(DISTINCT col3_typeID) OVER (PARTITION BY col1) > 1
THEN TO_CHAR(COUNT(DISTINCT col3_typeID) OVER (PARTITION BY col1)) -- Here!
END 

例如,这项工作非常适合我

$s = New-PSSession -computer "server" -credential "domain.local\Administrator"

Invoke-Command -Session $s -ScriptBlock { ... }

如果仍然有问题,可能是您正在使用的身份验证模式。

请访问thisthis以获取更多信息