在相当 一些 地方用于更改端口WinRM的命令侦听这个样子的:
winrm set winrm/config/Listener?Address=*+Transport=HTTP @{Port="8888"}
Run Code Online (Sandbox Code Playgroud)
但是,这对我不起作用。我得到的错误是:
Error: Invalid use of command line. Type "winrm -?" for help.
Run Code Online (Sandbox Code Playgroud)
显然,互联网不会错,所以我做错了。问题是,如何正确地做到这一点?
我正在尝试远程管理 Windows 7 机器。我已启用 WinRM 并可用于Enter-PsSession连接到远程计算机。
但是,我注意到本地运行特定命令与远程运行它之间的区别,即使我使用相同的用户帐户(这是域管理员)进行连接。
远程会话的输出是:
> enter-pssession -computername REMOTEHOST
[REMOTEHOST} > Get-WURebootStatus
New-Object : Creating an instance of the COM component with CLSID {C01B9BA0-BEA7-41BA-B604-D0A36F469133} from the IClassFactory failed due to the following error: 80070005.
At C:\Windows\system32\WindowsPowerShell\v1.0\Modules\pswindowsupdate\Get-WURebootStatus.ps1:52 char:33
+ $objSystemInfo= New-Object <<<< -ComObject "Microsoft.Update.SystemInfo"
+ CategoryInfo : NotSpecified: (:) [New-Object], UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.NewObjectCommand
Run Code Online (Sandbox Code Playgroud)
ExecutionPolicy 设置为“无限制”,当我在远程机器上使用本地 powershell 会话时,此命令非常有效。
远程 powershell 会话是否有不同的安全上下文?
编辑:它失败的具体线路是这个:
$objSystemInfo= New-Object -ComObject "Microsoft.Update.SystemInfo"
Run Code Online (Sandbox Code Playgroud) 在过去的几天里,我一直在与一个似乎无法解决的问题作斗争。尽管我对某些管理任务有一定的了解,但我不是管理员。
我有一个使用 XapSignTool.exe 对 .xap 包进行签名的 PowerShell 脚本。提供私钥和密码。当我以管理员组中的用户身份登录时运行脚本时,它工作正常。
我还在同一台计算机上运行 Windows 远程管理服务。在另一台 Linux 机器上,我使用 winrm 协议使用所需参数调用 PowerShell 脚本。然后,XapSignTool.exe 工具,或者特别是下面使用的signtool.exe,会抛出错误:
Error information: "Error: Store::ImportCertObject() failed." (-2146893808/0x80090010)
Run Code Online (Sandbox Code Playgroud)
我查找了代码并发现了它的含义,即
NTE_PERM
0x80090010
访问被拒绝。
ImportCertObject() 方法的名称让我认为该工具尝试将提供的私钥导入到证书存储区。
有趣的是,如果我在登录时首先运行该脚本并且它可以工作,则通过 winrm 进行的后续调用也可以工作。这让我相信作为管理员的用户可以正确导入证书。
WRM 服务在网络服务帐户下运行,因此我假设它没有插入证书存储的权限。我把NS帐户放在Administrators组中,希望它能起作用,但没有。对于测试,我将 \Everyone 放入管理员组,但对 PowerShell 脚本的 winrm 调用仍然失败,并显示“访问被拒绝”。
为什么是这样?如何向用户授予对证书存储的访问权限?
我还希望能够对许多此类证书执行此操作,因此它必须是自动化的。
我正在尝试在 Windows Server 2008 上启用 Powershell Remoting,但据我了解,默认防火墙例外是仅当计算机(客户端和服务器)位于同一本地子网时才允许 PSRemoting。
如何在 Windows Server 2008 中删除本地子网限制。我知道在 server 2012 及更高版本中,您可以执行以下操作:
Set-NetFirewallRule –Name "Name" –RemoteAddress Any
Run Code Online (Sandbox Code Playgroud)
如何在 Windows Server 2008 中做完全相同的事情?
我正在使用winrs针对我正在开发的某些服务器软件运行测试客户端。我正在使用客户端在被测服务器上生成负载以进行分析。我运行服务器软件winrs的机器和我运行测试客户端winrs的机器(在第一台机器上运行它)都是 Win7 机器,x64,大量内存。所有进程都以管理员身份运行。
当我手动运行测试客户端时,它可以生成 6000 个并发连接并使 100mb 链接饱和(有问题的机器具有 Gb 网络,所以我只将它们之间的链接加载到大约 10%)当我通过winrs大约一半的时间运行它时连接失败,似乎是 OpenSSL 中与内存相关的错误。
我确信在我的测试客户端中发生了一些奇怪的事情,但是了解 winrm 代表 winrs 的请求运行的进程可能存在哪些限制(如果有的话)会很有用。我找不到任何表明存在限制的文档,但我可能不够努力。
更新:再考虑一下,似乎这些进程很可能是在具有内存限制的作业对象下运行的,这有点道理,但我认为如果是这种情况,它会是什么可以在服务器端配置...