Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用PowerShell在远程计算机上启动监控应用程序时访问性能计数器_C#_Powershell_Performancecounter_Winrm - Fatal编程技术网

C# 使用PowerShell在远程计算机上启动监控应用程序时访问性能计数器

C# 使用PowerShell在远程计算机上启动监控应用程序时访问性能计数器,c#,powershell,performancecounter,winrm,C#,Powershell,Performancecounter,Winrm,我有一个C#进程,作为其角色的一部分,它从一组Windows Server 2008R2机器上读取性能计数器。所有机器都位于公司的广告域中,并且位于同一网络上。如果我登录到服务器机器并在登录会话中运行C#进程,该程序工作正常。我现在正尝试使用这个带powershell的C#进程来自动化一些实验。目标是在其中一台服务器上从我的桌面远程启动它。所有计算机都在同一个域中(桌面和服务器) 所有机器均设置有: Set-ExecutionPolicy -ExecutionPolicy RemoteSigne

我有一个C#进程,作为其角色的一部分,它从一组Windows Server 2008R2机器上读取性能计数器。所有机器都位于公司的广告域中,并且位于同一网络上。如果我登录到服务器机器并在登录会话中运行C#进程,该程序工作正常。我现在正尝试使用这个带powershell的C#进程来自动化一些实验。目标是在其中一台服务器上从我的桌面远程启动它。所有计算机都在同一个域中(桌面和服务器)

所有机器均设置有:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Configure-SMRemoting.ps1 -force -enable
powershell脚本正在创建一个PsSession以连接到运行C#进程的计算机,并使用invoke命令启动它。但是,远程主机上的C#应用程序无法再访问其监视的集计算机上的性能计数器:-“访问被拒绝”

我怀疑这是一个多跳身份验证问题,因此按照这些说明启用多跳身份验证。正在尝试使用CredSSP:

$cred = Get-Credential -Credential "Company\user"
$session = new-pssession -ComputerName $loadHost -Credential $cred -Authentication CredSSP -ErrorAction Stop
收益率:

连接到远程服务器失败,错误消息如下: WinRM客户端无法处理该请求。CredSSP身份验证不可用 当前已在客户端配置中禁用。更换客户机 配置,然后重试该请求。必须进行CredSSP身份验证 也可以在服务器配置中启用。此外,组策略必须 将被编辑以允许将凭据委派到目标计算机。使用 gpedit.msc并查看以下策略:计算机配置-> 管理模板->系统->凭证委派->允许 授权新的证书。确认它已启用,并且 配置了适用于目标计算机的SPN。对于 例如,对于目标计算机名“myserver.domain.com”,SPN可以 可以是以下内容之一:WSMAN/myserver.domain.com或 WSMAN/*.domain.com有关更多信息,请参阅 关于远程故障排除帮助主题

使用gpedit.msc,很明显,可以使用域的相应SPN条目设置允许委派新凭据。所有计算机上的防火墙都配置为在中启用WinRM Http。我已经阅读了about_Remote_故障排除文档,但没有结果


关于多跳身份验证是否确实是正确的方法,或者其他可能打破这一点的方法,有什么想法吗

我写了那篇博文。是的,从问题的描述来看,它看起来像是CredSSP身份验证问题。首先,您需要正确的权限来监视性能计数器。当使用远程处理时,如果凭证被委派,则第二个系统将作为系统接收请求,因此远程系统上的Invoke命令将导致访问被拒绝

第一个问题是:为什么不在远程系统上使用Enable PSremoting? 第二个问题是:您是否配置了C#应用程序作为CredSSP客户端运行的本地系统

Enable-WSManCredSSP -Role Client -DelegateComputer "*.SP2010lab.com"
这只需要在作为客户端使用的计算机上完成。在使用Invoke命令的系统上,必须设置CredSSP服务器

Enable-WSManCredSSP -Role Server

你能证实这一点吗?

我写了那篇博文。是的,从问题的描述来看,它看起来像是CredSSP身份验证问题。首先,您需要正确的权限来监视性能计数器。当使用远程处理时,如果凭证被委派,则第二个系统将作为系统接收请求,因此远程系统上的Invoke命令将导致访问被拒绝

第一个问题是:为什么不在远程系统上使用Enable PSremoting? 第二个问题是:您是否配置了C#应用程序作为CredSSP客户端运行的本地系统

Enable-WSManCredSSP -Role Client -DelegateComputer "*.SP2010lab.com"
这只需要在作为客户端使用的计算机上完成。在使用Invoke命令的系统上,必须设置CredSSP服务器

Enable-WSManCredSSP -Role Server

您能确认吗?

启用路径遵循technet上的建议:。显示的Enable WSManCredSSP步骤与键入的步骤完全相同。我怀疑问题在于我的客户机和我试图自动化的服务器之间的VPN。现在,我已经在这条路上退了一步,开始运行脚本,这样就只有单跳身份验证了。谢谢,我决定了。这些机器都是同一个广告的一部分,但在不同的OU中。一个OU已禁用IPSec,不允许在OU之外建立连接。这就是服务器所在的位置。我的客户端计算机已启用IPSec,并且位于不同的OU中。谢谢启用路径遵循technet上的建议:。显示的Enable WSManCredSSP步骤与键入的步骤完全相同。我怀疑问题在于我的客户机和我试图自动化的服务器之间的VPN。现在,我已经在这条路上退了一步,开始运行脚本,这样就只有单跳身份验证了。谢谢,我决定了。这些机器都是同一个广告的一部分,但在不同的OU中。一个OU已禁用IPSec,不允许在OU之外建立连接。这就是服务器所在的位置。我的客户端计算机已启用IPSec,并且位于不同的OU中。谢谢有完整源代码的最终解决方案吗?什么是Configure SMRemoting.ps1?有没有关于它的完整源代码的最终解决方案?什么是Configure-SMRemoting.ps1?