0

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

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

我在想可能是一个 case 语句将 $env:computername 与我将运行它的机器的名称相匹配?

4

2 回答 2

2

如果逻辑总是解析 .csv 文件并且不同的是匹配模式 ,我将使用基于主机名的switch 语句来设置我稍后将在脚本逻辑中使用的所有变量。如果逻辑也需要根据主机名进行更改,我将在 switch 语句中设置它们一些 脚本块,以便稍后在脚本逻辑中调用。

例子:

$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
于 2012-07-12T15:00:16.143 回答
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"}        
    }
...
于 2012-07-16T17:18:28.430 回答