我有一个存储在服务器上的powershell脚本,需要某些用户能够发送命令从他们的工作站运行这个脚本。我已经进入服务器并运行命令以允许远程PowerShell。下面是我正在运行的脚本以及我的错误的屏幕截图。
invoke-command { powershell.exe -noprofile -executionpolicy Bypass C:\script directory } -computername -credential (domain).local\Administrator
答案 0 :(得分:0)
您必须执行一些调整才能运行远程PowerShell。可能有些规则并不适用。
powershell -noprofile -command Enable-PsRemoting -Force
sc config "WinRM" start= delayed-auto
sc start "WinRM"
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
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
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 { ... }
如果仍然有问题,可能是您正在使用的身份验证模式。