您可以使用Powershell脚本创建Powershell脚本吗?

时间:2019-03-27 19:57:37

标签: powershell

所以这可能是一个奇怪的请求,也许我正在解决所有错误,但是我也有一个独特的情况。我的服务器有时会被克隆,我需要运行在克隆服务器上创建的脚本。由于克隆的性质,它们无法连接到网络。

当前,我在克隆之前将通用脚本手动放置在每台服务器上,然后在克隆服务器上运行该脚本。

我想做的是有一个脚本来运行并收集所有信息,例如以已安装的程序为例,并在克隆之前在服务器上生成我当前脚本的自定义版本。

我既拥有用于获取服务器信息的powershell脚本,也具有用于对克隆进行更改的通用脚本,但是我还没有找到一种将两者或任何文档合并的方法,所以我不知道我是否遇到了限制。

编辑以获取更多说明和示例。我正在通过电话自动取款机执行此操作,因此我没有可以发布的示例。

当前,我有一个脚本,该脚本具有一组要卸载的应用程序,要删除的注册表项和要停止的服务。在另一个应用程序中,我列出了每个服务器拥有的所有软件,并且可以提取每个服务器的数据。我需要做的是提取每个服务器的数据,并在每个服务器上放置一个脚本,该脚本将仅卸载该服务器的程序。

当前,该脚本必须在所有潜在软件中运行并尝试将其卸载,然后检查其他应用程序,以查看是否还需要卸载其他程序。

希望这些额外的信息有所帮助。

谢谢。

1 个答案:

答案 0 :(得分:1)

停止将其视为代码。

使用脚本1将文本块导出到新文件中。例如,您可能有一个配置,说明所有Dell服务器必须运行以下代码行:

Set-DELL -attribute1 unmanaged

在HP上,脚本应该是

Set-HP -attribute1 unmanaged

在Web服务器上,您需要:

set-web -active yes

如果不是Web服务器,那么您什么都不想要..因此,您的父脚本代码如下:

$Dell = "Set-DELL -attribute1 unmanaged"
$HP = "Set-HP -attribute1 unmanaged"
$web = "set-web -active yes"

if (Get-servermake -eq "Dell")
{
    $dell | out-file Child.ps1 -append
}

if (Get-servermake -eq "HP")
{
    $HP | out-file Child.ps1 -append
}

if (Get-webserver -eq $true)
{
    $web | out-file Child.ps1 -append
}

结果是针对特定服务器child.ps1的自定义脚本。

现在,您可以使用它并运行它。您可以说向子脚本添加功能,例如“是否是AD控制器”等等。

但是,最好将所有这些都放在一个脚本中,而只阻止例如在if语句中不适用的部分。

我仍然不确定我是否理解您的要求。如果我错过了分数,请告诉我如何做,我会告诉你如何更好地进行调整。 (希望显而易见的是,Get-whatever是示例代码。我不希望这成为您用来确定计算机品牌/型号/等的方式)