Is there any way to use Credentials parameter with get-counter?
我尝试了下面的代码,但它没有用。我在这里使用的是一个本地用户帐户,它在目标服务器上具有管理员权限。
Invoke-Command -Computername XXXX -ScriptBlock {(get-counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 1 -MaxSamples 5 | select -ExpandProperty countersamples | select -ExpandProperty cookedvalue | Measure-Object -Average).average} -Credential XXXX\YYYY
答案 0 :(得分:0)
文档说Nope
根据您的代码判断,您尝试将用户名和密码作为字符串提供给凭证参数,但这不是它的工作原理。您必须创建一个凭证对象,如下所示:
$secpasswd = ConvertTo-SecureString “PlainTextPassword” -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential (“username”, $secpasswd)
之后,您可以拨打Invoke-Command
并提供$mycreds
作为凭据:
Invoke-Command -Computername XXXX -ScriptBlock {(get-counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 1 -MaxSamples 5 | select -ExpandProperty countersamples | select -ExpandProperty cookedvalue | Measure-Object -Average).average} -Credential $mycreds
如果您正确提供凭据但仍然无效,您可以尝试再次使用Scriptblock中的Invoke-Command
并在那里提供凭据。
您可以使用-Argumentlist
参数将凭证对象作为参数传递给Scriptblock,并使用$args[0]
在Scriptblock中访问它,或者在Scriptblock内部进行参数声明并通过声明的名称。