Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.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
Powershell 创建桌面映像以快速确定服务器的用途_Powershell_Amazon Ec2_Virtual Machine_Devops_Windows Server - Fatal编程技术网

Powershell 创建桌面映像以快速确定服务器的用途

Powershell 创建桌面映像以快速确定服务器的用途,powershell,amazon-ec2,virtual-machine,devops,windows-server,Powershell,Amazon Ec2,Virtual Machine,Devops,Windows Server,这是我的背景故事,但我认为我的要求可能适用于更广泛的场景: 我正在为AWS构建一个部署管道。使用AWS,您可以获得一个VM的实例id,一旦登录到,您将获得一个带有一些无用文本注释的桌面。由于EC2实例VM带有表示每个VM用途的标记,因此我希望在登录服务器时以某种方式将这些信息可视化 我不是一个操作人员,我不习惯打开许多远程桌面并记住它们各自的功能。在我看来,一个大的可识别的可见符号会有很大帮助 我已经考虑了几个选项,这些选项集中在设置桌面壁纸上 当操作系统是Windows Server时,使用渲

这是我的背景故事,但我认为我的要求可能适用于更广泛的场景:

我正在为AWS构建一个部署管道。使用AWS,您可以获得一个VM的实例id,一旦登录到,您将获得一个带有一些无用文本注释的桌面。由于EC2实例VM带有表示每个VM用途的标记,因此我希望在登录服务器时以某种方式将这些信息可视化

我不是一个操作人员,我不习惯打开许多远程桌面并记住它们各自的功能。在我看来,一个大的可识别的可见符号会有很大帮助

我已经考虑了几个选项,这些选项集中在设置桌面壁纸上

当操作系统是Windows Server时,使用渲染一些文本。我会将标签转换成文本,然后使用BGInfo。输出不是很清晰 找到一个可以表达组件或用途等概念的API,它将呈现一幅图片。找不到。 使用一种有趣的图片渲染,通常在图片的占位符上添加文本。这是很容易区分的,但在信息密度方面有一定的局限性。比如这个。 例如,我考虑过从中生成徽章,然后将它们组合成一个图像。 我或更好的人与更好的美学,创造了一对夫妇的图片,代表可能的组成部分,然后结合成一个更大的图片使用作为墙纸的来源。 所有的选项都需要通过组合较小的图像来呈现大图像,这是相当费劲的,我想知道我是否真的遗漏了一些东西,或者没有在谷歌上用正确的关键字查询这个主题。经常在云环境中使用许多虚拟机的人会做什么?如何快速确定VM或操作系统的用途


我的问题显然是希望有一个UI可用的操作系统,因为我要求有一个可见的、易于识别的标记。但是如果你有一个命令行的解决方案,也请分享。例如,我已经修改了PowerShell控制台的状态,就像修改git状态一样。我也关注Windows Server操作系统,但如果有基于unix的解决方案,请与我们分享,也许我们可以推广这个想法。

在对AWS EC2实例进行了一些关于这个主题的实验之后,我对这个主题实施了一个初步的第一种方法。不是很有活力,但它现在能帮我完成任务

我正在驱动图片选择不从EC2实例信息生成。例如,来自标签或名称的一部分

然后,我的CodeDeploy包将为目标用户修改AppData文件夹中的ec2wallpar.jpg。例如,对于管理员,它是C:\Users\administrator\AppData\Local\ec2wallpar.jpg。我这样做是因为在分析了一个EC2实例上发生的事情之后,我意识到我的代码和来自EC2Launch的代码之间会有一场竞争。因此,由于AWS的模块EC2Launch已经完成了它的工作,并设置了一张带有一些额外信息的增强壁纸,我选择修改原始图片,让它完成它的工作

# This is the original wallpaper for the Administrator user that the EC2Launch tries to modify (Windows Server 2016) upon logon
$originalEC2WallpaperPath="C:\Users\Administrator\AppData\Local\Ec2Wallpaper.jpg"
Write-Debug "originalEC2WallpaperPath=$originalEC2WallpaperPath"
if(Test-Path $originalEC2WallpaperPath)
{
    # Script that will decides which wallpaper to use and returns it's item back
    # Need to decide on location.
    $getWallPaperItemPath=Join-Path -Path $PSScriptRoot -ChildPath "Get-WallpaperItem.ps1"
    Write-Debug "getWallPaperItemPath=$getWallPaperItemPath"

    # Execute the Get-WallpaperItem.ps1
    $wallPaperItem=& $getWallPaperItemPath

    if($wallPaperItem)
    {

        Copy-Item -Path $originalEC2WallpaperPath -Destination "$($originalEC2WallpaperPath).bak"
        Write-Verbose "Copied $originalEC2WallpaperPath to $($originalEC2WallpaperPath).bak"

        Copy-Item -Path $wallPaperItem.FullName -Destination $originalEC2WallpaperPath -Force
        Write-Verbose "Copied $($wallPaperItem.FullName) to $originalEC2WallpaperPath"
    }
    else
    {
        Write-Warning "$getWallPaperItemPath returned a null item"
    }
}
else
{
    Write-Debug "$originalEC2WallpaperPath doesn't exist. Not supported changing the wallpaper via EC2Launch"
}
请注意,Get-wallperItem.ps1是负责决定使用哪种墙纸并将有效的powershell项目返回到脚本的脚本。Get-WallpaperItem.ps1可以使用EC2的名称、标签或其他信息来决定使用预定列表中的图片,或者以某种方式生成图片


我最初的问题是解决更多的动态部分,这对我来说仍然是一个增强。此时,最好的选择是使用ImageMagick将预先渲染的图片和动态图片从文本整理到画布上。

有趣的问题。我发现了这一点:可能有一种方法可以通过html5将文本转换成图片。我当然找不到任何命令行实用程序来做这件事。如果您想使用AWS标记,那么我认为您需要在AWS外部编写一些内容,以提取标记并在blob Storages中生成文件。我也注意到了这一点。你将不得不生成一个文本,这是很容易的,然后使它成为一个图片,然后设置为壁纸。在Windows中,除了第一步之外,其他操作都会执行。问题是所有文本的大小和颜色都相同,因此不容易识别。尽管这是最便宜、最简单的方法。我只是想知道是否有一种更直接可见的刺激方法。Alex,你可能会因为1问了一个非常开放的问题,2没有真正专注于解决代码问题而被否决。如果你运气不好,可以考虑在服务器故障论坛上提问。所有需要一些小图像渲染的选项,通过组合更小,都是相当费力的,比如像IVEMAGEKIK。“米迦勒SqLBOT感谢和自然。我只是想知道,是否有一些开箱即用的东西,不仅仅是为了努力,而是为了它的标准化。