2015-11-16 34 views
0

希望有人可以帮忙,因为我的头撞墙在这里一点... 我有一个简单的CSV文件,2列,1为HostName和1为密码。例如, ;PowerShell调用基于HostName的特定CSV

主机名,密码

计算机1,密码1

计算机2,密码2

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

干杯家伙,

+1

欢迎来到SO。你有什么尝试,这是行不通的。这只是'import-csv'和'where-object'的一个例子。 – Matt

+0

我会尽力在这里表现! :)请向我们展示一些cdoe,你已经尝试了什么,失败了什么,等等。 – sodawillow

+0

这是当前用于加密的PS。但是,我遇到的问题是根据HOSTNAME查询CSV密码,而不是设置“默认”密码并更改后加密。 $ SecureString的=的ConvertTo-SecureString的 “DEFAULT” -AsPlainText -Force THEN 启用-BitLocker的-MountPoint “C:” $ -pin SecureString的-TPMandPinProtector -SkipHardWareTest – RBambs

回答

1

在一个非常普遍的方式,你可以抓住你的对象(CSV)文件,过滤器,在那里对象。一旦填入变量,您可以使用“。”来调用该属性。

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

这是目前的PS用于加密。但是,我遇到的问题是根据HOSTNAME查询CSV密码,而不是设置“默认”密码并更改后加密。 $ SecureString = ConvertTo-SecureString“DEFAULT”-AsPlainText -Force THEN启用BitLocker -MountPoint“C:”-Pin $ SecureString -TPMandPinProtector -SkipHardWareTest - – RBambs

0

现在解决了感谢输入chaps。

$ InSecureString =导入-CSV “C:\ EncryptionPasswords.csv” $ BitLockerPassword = $ InSecureString.Where({$ PSItem.ComputerName当量$ ENV:计算机})。密码 $ BitLockerPassword

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

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