根据计算机名称的不同代码。效率最高的过程?

时间:2012-07-12 14:45:34

标签: powershell

我正在运行一个解析相对较大的csv的脚本。根据它运行的机器,它会搜索不同的东西。

我对powershell相当新,所以我不确定最有效的方法是什么。将所有内容保存在一个文件中是最好的,因为我希望能够让所有机器调用相同的脚本。

我在考虑将$ env:computername与我将在其上运行的机器的名称相匹配的案例陈述?

2 个答案:

答案 0 :(得分:2)

如果逻辑总是解析一个.csv文件而不同的东西是匹配的模式我会使用基于switch statementhostname来设置我将在稍后使用的所有变量脚本的逻辑。 如果逻辑需要根据主机名进行更改,我会在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"}        
    }
...