【发布时间】:2020-05-28 07:33:08
【问题描述】:
我正在尝试从包含任务序列名称的下拉列表中在多台计算机上重新运行任务序列, 并通过文本文件加载计算机列表。
我尝试了 2 个不同的功能,但没有触发操作,没有错误或来自 ISE 的输出。
我怎样才能做到这一点?
#Removed #foreach ($Computer in $Computers)
#TaskSequences
$W10_PRELOAD_1809 = "W10_PRELOAD_1809"
$W10_UPG_1809 = "W10_UPG_1809"
$W10_UPG_1809_FORCE = "W10_UPG_1809_FORCE"
$Browse_OnClick = {
$FileName = Select-FileDialog
$Computers = Get-Content $FileName
$Install.enabled = $true
}
$TaskSequence = "$W10_PRELOAD_1809", "$W10_UPG_1809", "$W10_UPG_1809_FORCE", "$W7_CHECK_PRELOAD", "$W7_1809_PRELOAD", "$W7_UPG_1809", "$W7_UPG_1809_FORCE"
$TaskSequence | % { $ListApps.Items.Add($_) }
$Install_OnClick= {
if (!$ListApps.SelectedItem) {[System.Windows.Forms.MessageBox]::Show("Please select a Task-Sequence from the drop down menu")
}
else {
$TaskSequenceItem = $ListApps.SelectedItem.ToString()
if ($TaskSequenceItem -eq "W10_PRELOAD_1809")
{
New-Item -Path \\emeamai-rs08\TEMP\Baseline_FMT\test_PRELOAD_$Computer.txt -Force
}
if ($TaskSequenceItem -eq "W10_UPG_1809")
{
New-Item -Path \\emeamai-rs08\TEMP\Baseline_FMT\test_UPG_$Computer.txt -Force
}
if ($TaskSequenceItem -eq "W10_UPG_1809_FORCE")
{
New-Item -Path \\emeamai-rs08\TEMP\Baseline_FMT\test_Force_$Computer.txt -Force
}
}
}
【问题讨论】:
-
这应该是脚本文件,还是直接在 Powershell 中运行?目前尚不清楚您的某些变量(
$Computers、$ListApps)是如何定义的。我会先在那里检查他们是否按照您的预期在 foreach 循环中工作,也不要使用$TaskSequence在不同的地方保存不同的东西。您可能会发现咨询How to Ask 页面以获取使您的问题更清晰的指导很有帮助。您可能还需要考虑在此处使用 switch 语句而不是 ifs -
你好@sinaraheneba,代码告诉 $Computers = Get-Content $FileName 和 $ListApps 是一个组合框/下拉列表来选择任务序列名称。这是一个 Powershell GUI,Install_OnClick 是触发动作的按钮
-
我了解您正在尝试将此功能构建到 GUI 中以及您如何尝试为这些变量分配值,我的意思是从您的示例中不清楚这些值实际上是什么.如果其中任何一个不是您期望的值,
foreach循环将无法按预期工作。在将其放入 GUI 之前,您是否在命令行上对此进行了测试以确保该功能正常工作? -
再次感谢您的帮助,我将尝试提供我正在尝试做的示例 $Computers = 'PC1','PC2' $Fruits/"Drop-DownList"= 'Pears', 'Oranges' 如果从下拉列表中选择 Oranges,然后点击安装按钮,它会在 PC1 和 PC2 中创建一个名为 Oranges.txt 的文件 如果从下拉列表中选择梨,然后点击安装按钮,它在 PC1 和 PC2 中创建了一个名为 Pears.txt 的文件希望这会有所帮助:) 我无法实现的是使用 2 个 foreach 语句,尝试了 2 个不同的函数,如 Install_OnClick 和 Install_OnClick2
-
以下代码正在运行,执行了测试,在远程服务器上创建了一个文本文件进行测试,这意味着当从列表中选择任务序列时,我可以为每个操作使用我想要的代码。但是我删除了最重要的部分,在多台计算机上运行它,或者为每台计算机创建文本文件,这是我无法弄清楚如何让它在多台计算机上运行或在任务时包含 foreach 语句的部分- 选择序列
标签: powershell if-statement foreach