powershell - 调用命令未按预期工作

标签 powershell invoke-command

我正在尝试使用 invoke-command 来查找使用此代码的特定进程

Invoke-Command -ComputerName $selected_server.ServerName -ArgumentList $selected_server.ProcessId -ScriptBlock {Get-Process -Name "winlogon" | where{$_.Id -like $args[0]} }

这个命令不起作用,但是如果我使用包含在 $selected_server.ProcessId 即 8900,而不是使用 $args[0],它可以工作。

我还尝试执行此命令来验证变量是否正确读取,看起来是这样

Invoke-Command -ComputerName $selected_server.ServerName -ArgumentList $selected_server.ProcessId -ScriptBlock {$args[0]; $args[0].gettype().fullname}

> 8900
> System.Int32

我错过了什么吗?

最佳答案

不知道为什么,但这有效(也许foreach-object scriptblock中的$args超出范围):

Invoke-Command -ComputerName $selected_server.ServerName `
-ArgumentList $selected_server.ProcessId -ScriptBlock `
{param ($x) Get-Process -Name "winlogon" | where{$_.Id -like $x} }

关于powershell - 调用命令未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15199683/

相关文章:

powershell - 如何在 PowerShell 中使用 curl 命令?

powershell - 使用 Invoke-Command 格式化输出

arrays - 使用 Invoke-Command 将数组传递给另一个脚本

powershell-3.0 - 在远程 session 上使用 Powershell Invoke-Command 通过字符串调用可执行文件

powershell - 使用 PowerShell Invoke 命令安装软件

function - 无法在函数的Where-Object 中使用变量

powershell - 根据文件中每行文本的第一个字符追加文本

windows - Windows 中用于应用程序白名单的代码签名应用程序

powershell - 同时使用桌面 Powershell 5.1 和 Powershell Core 6.1

powershell - 使用 2008 R2 域功能级别将文件复制到远程 session 时出现 Kerberos 委派问题