【问题标题】:SetEnvironmentVariable from integer held in a csv cellSetEnvironmentVariable 来自 csv 单元格中保存的整数
【发布时间】:2018-05-28 15:05:27
【问题描述】:

我有一个用例,我希望能够将端口号写入与正在运行脚本的 PC 名称匹配的系统环境变量。

为此,我有一个脚本,它在 2 列 csv 文件中查找计算机名,并将设备的相应端口号写入系统环境变量。问题是我无法获取将端口号添加到环境变量的脚本。 如果我在最后一行的 $port 周围加上括号。添加了一个条目,但它添加了字符串 $port,而不是端口号。 如果有人可以提供一些帮助,我将不胜感激。提前致谢。

$COMPUTERNAME = "$env:COMPUTERNAME"
$data = import-csv "C:\PS stuff\Port assign.csv" | Where-Object 
{$_."computer" -eq "$COMPUTERNAME"}
$data | Select -ExpandProperty "port" $port
[System.Environment]::SetEnvironmentVariable('TCP_PORT', "$port", 
[System.EnvironmentVariableTarget]::User)

【问题讨论】:

  • Select -ExpandProperty "port" $port 没有意义。 $port = $data.port 有什么问题?

标签: powershell


【解决方案1】:
$port=Import-Csv -Path 'C:\PS stuff\Port assign.csv'| Where-Object {$_.computer -eq "$COMPUTERNAME"}|Select -ExpandProperty "port"

【讨论】:

  • 虽然这个答案可能是正确且有用的,但最好在其中附上一些解释来解释它如何帮助解决问题。如果有更改(可能不相关)导致它停止工作并且用户需要了解它曾经是如何工作的,这在未来变得特别有用。
【解决方案2】:

由于我构建代码的方式,似乎没有写入变量 $port。它现在已更改为以下内容,并根据需要进行所有工作。感谢大家的帮助。

$COMPUTERNAME = "$env:COMPUTERNAME"
$data = import-csv "C:\PS stuff\Port assign.csv" | Where-Object 
{$_."computer" -eq "$COMPUTERNAME"}
$port = $data | Select -ExpandProperty "port"
[System.Environment]::SetEnvironmentVariable('TCP_PORT', "$port", 
[System.EnvironmentVariableTarget]::User)

【讨论】:

    猜你喜欢
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    相关资源
    最近更新 更多