基于HostName的Powershell调用特定CSV

时间:2015-11-16 17:52:37

标签: csv powershell

希望有人可以帮忙,因为我在这里碰到了一点我的头... 我有一个简单的CSV文件,2列,1个用于HostName,1个用于密码。 例如;

主机名,密码

计算机1,密码1

计算机2,密码2

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

干杯,

3 个答案:

答案 0 :(得分:1)

通常,您可以获取对象(CSV)文件并使用where-object进行过滤。一旦将其填入变量,您就可以使用"来调用该属性。"

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

答案 1 :(得分:0)

现在解决了感谢输入的问题。

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

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

答案 2 :(得分:0)

每次需要根据主机名检索密码时,使用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