【发布时间】:2019-04-11 12:24:18
【问题描述】:
我想为每个服务器加载一个包含服务器和 ID 的 csv。第 1 列是服务器名称,第 2 列是 ID 字符串。将有 40 个服务器,每个服务器都有一个特定的 ID 字符串。在我的脚本中,我想提取主机名,然后在我的数组中搜索它。一旦找到,我想将与服务器名称对应的ID输出到变量中。我对powershell很陌生,所以请记住这一点。我最好用例子来解决问题。
$Server = @()
$ID = @()
Import-Csv C:\SecuredFiles\ID.csv | ForEach-Object {$Server += $_.Server ;
$ID += $_.ID}
$ServerName = Invoke-Command -ScriptBlock {hostname}
if ($Server -contains $ServerName)
{
$Where = [array]::IndexOf($Server, $ServerName)
$InputID = $ID[$Where]
}
Start-Process -FilePath 'C:\MyFolder\App.exe' "-id $InputID -d C:\MyFolder"
我已经研究了几个小时,我知道我的工作比需要的更努力,但我很固执,喜欢自己寻找答案,但我迷路了,偏头痛,哈哈,也许我做错了。
我尝试了各种格式,但得到了不同的错误,例如“在语句块或类型定义中缺少关闭 '}'”,即使它显然存在。我当前的错误是“if”语句开头的“if(条件)之后缺少语句块”。非常感谢任何帮助。
【问题讨论】:
-
为什么要把它拉出阵列?就地使用它,你不需要管理额外的变量。
-
系统如何知道使用哪个 Id 作为参数列表?我不需要它来搜索和匹配,然后提取关联的 ID 吗?
-
如果您知道该项目在数组中的位置,您可以通过
$Collection[$Index].Parameter简单地引用它。您的方法有效,但似乎是不需要的额外步骤。但是,请使用最适合您对问题的思考方式的方法!你是必须维护它的人... [grin]
标签: powershell csv variables