我正在运行一个解析相对较大的csv的脚本。根据它运行的机器,它会搜索不同的东西。
我对powershell相当新,所以我不确定最有效的方法是什么。将所有内容保存在一个文件中是最好的,因为我希望能够让所有机器调用相同的脚本。
我在考虑将$ env:computername与我将在其上运行的机器的名称相匹配的案例陈述?
答案 0 :(得分:2)
如果逻辑总是解析一个.csv文件而不同的东西是匹配的模式我会使用基于switch statement的hostname来设置我将在稍后使用的所有变量脚本的逻辑。 如果逻辑需要根据主机名进行更改,我会在switch语句中设置一些script blocks,以便稍后在脚本的逻辑中调用。
示例:
$a = hostname
switch ($a)
{
"WS001" { $sb = {dir} ; $txt = "Computer name: " + $a }
"WS003" { $sb = { get-process } ; $txt = "Computer name: " + $a }
default { $sb = $null ; $txt = "This Computer can't run this script"}
}
if ($sb) { &$sb }
$txt
答案 1 :(得分:0)
@Christian给答案的一小部分。
在每个主机名的脚本块末尾,您可能需要考虑添加break语句。这样你就可以避免对所有可能的主机测试$ a - 一旦找到主机并执行特定于主机的东西,Break语句就会跳出Switch的脚本块。
因此它看起来像这样:
$a = hostname
switch ($a)
{
"WS001" { $sb = {dir} ; $txt = "Computer name: " + $a ; break }
"WS003" { $sb = { get-process } ; $txt = "Computer name: " + $a; break }
default { $sb = $null ; $txt = "This Computer can't run this script"}
}
...