【问题标题】:Powershell Call Specific CSV Based On HostName基于主机名的 Powershell 调用特定 CSV
【发布时间】:2015-11-16 17:52:36
【问题描述】:

希望有人能帮忙,因为我在这里把我的头撞到墙上一点...... 我有一个简单的 CSV 文件,2 列,1 列用于主机名,1 列用于密码。 例如;

主机名、密码

计算机1,密码1

计算机2,密码2

我需要做的是根据运行脚本的设备的主机名从 CSV 中读取密码。 这是用于 BitLocker PIN 加密的,因此不是我在当前的 PowerShell 脚本中指定 PIN,而是从 CSV 读取值并使用它进行加密。

大家好,

【问题讨论】:

  • 欢迎来到 SO。你试过什么不起作用。这只是import-csvwhere-object 的情况。
  • 我会尽量表现得在这里! :) 请告诉我们一些 cdoe,你尝试了什么,失败了什么,等等
  • 这是目前用来加密的PS。但是,我遇到的问题是根据主机名查询 CSV 密码,而不是设置“默认”密码并更改后加密。 $SecureString = ConvertTo-SecureString "DEFAULT" -AsPlainText -Force THEN Enable-BitLocker -MountPoint "C:" -Pin $SecureString -TPMandPinProtector -SkipHardWareTest

标签: csv powershell


【解决方案1】:

以一种非常通用的方式,您可以获取对象 (CSV) 文件并使用 where-object 进行过滤。一旦将其填充到变量中,您就可以使用“。”调用该属性

$Comp1 = Get-MyCSV  | Where {$_.HostName -eq Computer1}
$Comp1.Password

【讨论】:

  • 这是目前用来加密的PS。但是,我遇到的问题是根据主机名查询 CSV 密码,而不是设置“默认”密码并更改后加密。 $SecureString = ConvertTo-SecureString "DEFAULT" -AsPlainText -Force THEN Enable-BitLocker -MountPoint "C:" -Pin $SecureString -TPMandPinProtector -SkipHardWareTest –
【解决方案2】:

现在已解决,感谢您的输入。

$InSecureString = Import-Csv "C:\EncryptionPasswords.csv" $BitLockerPassword = $InSecureString.Where({$PSItem.ComputerName -eq $env:COMPUTERNAME}).Password $BitLocker密码

然后调用 $BitLockerPassword 变量并转换为 SecureString。

【讨论】:

    【解决方案3】:

    每次需要根据主机名检索密码时使用Where-Object 的替代方法是从值创建hashtable

    $LookupTable = @{}
    Import-Csv .\passwords.csv |ForEach-Object { 
        $LookupTable[$_.HostName] = ConvertTo-SecureString $_.Password -AsPlainText -Force 
    }
    

    现在您可以直接从哈希表中检索相应的密码作为安全字符串:

    $MachineName = $env:ComputerName
    Enable-BitLocker -MountPoint "C:" -Pin $LookupTable[$MachineName] -TPMandPinProtector
    

    【讨论】:

      猜你喜欢
      • 2014-02-04
      • 2022-07-03
      • 1970-01-01
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 2023-04-03
      相关资源
      最近更新 更多