当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 远程处理会话和容器

作者:精品下载站 日期:2024-12-14 07:54:48 浏览:15 分类:玩电脑

PowerShell 远程处理会话和容器


今年,我通过 Docker 桌面应用程序加强了容器方面的工作。当 Windows Server 2016 预览版时,微软尝试了一些 PowerShell cmdlet 来处理容器,但它们从未取得任何进展。本质上,docker 命令行已经成为事实上的管理工具。我见过 PowerShell Gallery 中的一些模块,但我认为其中许多都是 docker 命令的包装器。现在我会继续学习 docker。最终,如果我转向 PowerShell 工具,我将对底层技术有深入的了解。这些挑战之一是利用 Windows 服务器容器解决 PowerShell 远程处理问题。

创建容器

我已经从 Windows 10 桌面上的 docker 中提取了官方 microsoft/windowserver 映像。然后我创建了一个新网络,以便我可以更好地控制我打算创建的容器。

docker network create --driver nat --internal --subnet 192.168.4.0/24 company

然后我创建了一个分配 IP 地址和主机名的容器。

docker container create --name srv4 --interactive --dns 1.1.1.1 --network company --memory (2gb) --ip 192.168.4.20 --hostname SRV4 microsoft/windowsservercore

docker start srv4

此时,容器正在运行。我可以正常 ping 通它。

[玩转系统] PowerShell 远程处理会话和容器

配置容器

接下来,我决定更新图像。我不知道管理员是什么,但使用 docker 我可以运行命令来添加新的本地管理员帐户。

docker exec srv4 net user localadmin P@ssw0rd /add
docker exec srv4 net localgroup administrators localadmin /add

您可能还需要调整受信任的主机设置以允许远程访问容器名称或 IP 地址。您可能还想在 LMHOSTS 文件中添加一个条目以方便名称解析。从所有迹象来看,这看起来很有希望。

[玩转系统] PowerShell 远程处理会话和容器

连接到容器

因为我有一个本地管理员帐户,所以设置 CIMSession 并使用它来查询容器很简单。

$cs = new-cimsession -ComputerName 192.168.4.20 -Credential localadmin

大多数具有 Cimsession 参数的 cmdlet 应该可以正常工作。

[玩转系统] PowerShell 远程处理会话和容器

出色的。所以 PSSession 应该也能工作。

[玩转系统] PowerShell 远程处理会话和容器

这让我很困惑。我在 Cimsession 中使用了相同的凭据,没有出现错误。这是您需要记住容器不是虚拟机的地方。它不是一个具有完整操作系统的完整服务器。在查看帮助时我发现有一个容器 ID 的参数。参加过我的会议或课程的人都知道,我总是在谈论阅读和重读帮助的重要性。这是一个很好的例子。

[玩转系统] PowerShell 远程处理会话和容器

连接容器 PSSession

这看起来非常简单。我已经使用 docker ps 命令看到了容器 ID。

[玩转系统] PowerShell 远程处理会话和容器

现在,我只需复制并粘贴并尝试新语法。

[玩转系统] PowerShell 远程处理会话和容器

我再次感到困惑,不得不阅读更多有关 docker 命令的内容。就在那时,我了解到容器 ID 实际上是一个更长的值。 docker ps 命令给了我一个截断的版本。我需要告诉 docker 给我完整的值。

[玩转系统] PowerShell 远程处理会话和容器

文字太多,复制和粘贴显然无法扩展。幸运的是,我找到了一个只显示id的docker命令。

$id = docker container ls -q --no-trunc

就我而言,这工作得很好,因为我只运行 1 个容器。最终,我需要找到一种更好的扩展方法。但现在,让我们尝试一下。

[玩转系统] PowerShell 远程处理会话和容器

连接速度不是很快,但很有效。如您所见,我使用容器管理员帐户进行连接。获得容器 ID 后,我还可以将其与 Invoke-Command 一起使用。

[玩转系统] PowerShell 远程处理会话和容器

我不确定这里是否比使用本机 docker exec 命令更有价值。

[玩转系统] PowerShell 远程处理会话和容器

使用 Invoke-Command 花了 14 秒,而 docker 命令花了 11 秒。不过,如果我需要的话,知道如何连接和使用 PSSession 到 docker 容器还是很高兴的。

您是否曾深入研究过容器?尝试集成您的 PowerShell 工作?你学到了什么?有哪些陷阱?我知道我很想听听他们的事。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯