使用Powershell Invoke Command Cmdlet在本地和远程系统中运行命令

null

在本地和远程系统中运行命令有不同的方法。我们可以用 psexec ,命令自己的功能或 Invoke-Command cmdlet。在本教程中,我们将了解如何使用 Invoke-Command 在powershell里。 Invoke-Command 远程运行命令并返回成功或错误消息等输出。

救命

有关的详细帮助 Invoke-Command 可以是下面这样。

PS> Run Powershell Script On Remote Computer
Help
救命

此外,还可以通过添加 -full 选项如下。这将提供巨大的输出,并提供参数细节、使用示例等帮助。

PS> Get-Help Invoke-Command -full
Help
救命

启用PSRemoting

为了在远程系统上运行Powershell命令,应将远程系统配置为通过接受远程Powershell命令 PSRemoting . 下面的文章展示了如何在windows操作系统中启用PSRemoting。

如何启用Powershell远程处理PSRemoting或WinRM?

在远程计算机上运行命令

最常用的例子之一 Invoke-Command 正在远程系统上运行命令。我们将指定以下参数来远程运行命令。

  • -ComputerName 指定远程系统的主机名或IP地址
  • Credentials 指定具有域名或计算机名的远程系统登录用户
  • -ScriptBlock 用大括号指定将在远程系统上运行的命令块。
PS> Invoke-Command -ComputerName  192.168.122.66 -Credential Administrator  -ScriptBlock {Get-Culture}
Run Command On Remote Computer
在远程计算机上运行命令

如果我们不提供密码或任何凭据,Powershell将当前可用的本地凭据验证远程系统。

Run Command On Remote Computer
在远程计算机上运行命令

我们可以从给定的命令输出中看到,它在远程系统上成功执行,并且在本地系统shell中打印响应。

在远程计算机上运行Powershell脚本

在前面的示例中,我们提供了一个shell命令来在远程系统上运行。Powershell还具有在远程系统上运行本地Powershell脚本的功能。我们将提供Powershell文件以在远程系统上运行内容 myscript.ps1

Get-HostGet-Culture

我们将使用 -FilePath 选项提供如下所示的脚本文件路径。

PS> Invoke-Command -ComputerName 192.168.122.66 -Credential Administrator  -FilePath c:myscript.ps1
Run Powershell Script On Remote Computer
在远程计算机上运行Powershell脚本

我们可以从输出中看到,所提供的脚本文件命令是在给定的远程系统上一行执行的。

了解更多: Teamviewer安装和远程桌面连接

在多台远程计算机上运行命令

现在,前面的示例很有用,但效果较差,因为我们只提供了一个远程系统。世界的力量 Invoke-Command 来自运行多个远程系统的命令。在此步骤中,我们将指定多个远程系统。我们将对以前的命令使用相同的语法,但会在命令中添加更多的远程系统IP地址或主机名 -ComputerName 选项,用逗号分隔。我们将提供远程系统IP地址作为 192.168.122.66 和主机名 localhost . 我们可以再添加更多的远程系统

PS> Invoke-Command -ComputerName 192.168.122.66 , localhost -Credential Administrator  -ScriptBlock {Get-Culture}
Run Command On Multiple Remote Computers
在多台远程计算机上运行命令

我们可以看到,每个远程系统输出在同一个表和列中都列为新行。这种类型的输出使过滤和搜索更容易,可读性更强。

在多台远程计算机上运行Powershell脚本

我们将合并前面的示例,并在多个远程系统上运行给定的Powershell脚本文件。命令将如下面所示。

PS>  Invoke-Command -ComputerName 192.168.122.66 , localhost -Credential Administrator  -FilePath C:myscript.ps1
Run Powershell Script On Multiple Remote Computer
在多台远程计算机上运行Powershell脚本

从远程计算机上的局部变量运行命令

在远程系统上运行命令的另一个有用资源是Powershell local 变量。我们可以在命令块中使用Powershell局部变量,就像使用常规Powershell命令一样。我们将使用 ScriptBlock 同样,我们将通过前缀 $Using: 关键字。在本例中,我们创建一个局部变量名 $dir 并设置其值 Get-Host . 然后我们在ScriptBlock中使用这个变量,如前所述。

PS> $dir="C:"

我们已经设置了本地变量,它是我们想要列出文件和文件夹的路径。

PS> Invoke-Command -ComputerName 192.168.122.66  -Credential Administrator  -ScriptBlock {Dir $Using:dir}
Run Command From Local Variable On Remote Computer
从远程计算机上的局部变量运行命令

我们可以看到远程系统 C: 路径按预期列出。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享