PowerShell调用基于HostName的特定CSV
希望有人可以帮忙,因为我的头撞墙在这里一点... 我有一个简单的CSV文件,2列,1为HostName和1为密码。例如, ;PowerShell调用基于HostName的特定CSV
主机名,密码
计算机1,密码1
计算机2,密码2
等
我需要做的是阅读从CSV密码,基于设备的主机名该脚本正在运行。 这是用于BitLocker PIN加密的,因此不是我在当前的PowerShell脚本中指定PIN,而是从CSV中读取值并使用它进行加密。
干杯家伙,
在一个非常普遍的方式,你可以抓住你的对象(CSV)文件,过滤器,在那里对象。一旦填入变量,您可以使用“。”来调用该属性。
$Comp1 = Get-MyCSV | Where {$_.HostName -eq Computer1}
$Comp1.Password
这是目前的PS用于加密。但是,我遇到的问题是根据HOSTNAME查询CSV密码,而不是设置“默认”密码并更改后加密。 $ SecureString = ConvertTo-SecureString“DEFAULT”-AsPlainText -Force THEN启用BitLocker -MountPoint“C:”-Pin $ SecureString -TPMandPinProtector -SkipHardWareTest - – RBambs
现在解决了感谢输入chaps。
$ InSecureString =导入-CSV “C:\ EncryptionPasswords.csv” $ BitLockerPassword = $ InSecureString.Where({$ PSItem.ComputerName当量$ ENV:计算机})。密码 $ BitLockerPassword
然后称为$ BitLockerPassword变量并转换为SecureString。
到每一个需要检索基于主机名密码时使用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
欢迎来到SO。你有什么尝试,这是行不通的。这只是'import-csv'和'where-object'的一个例子。 – Matt
我会尽力在这里表现! :)请向我们展示一些cdoe,你已经尝试了什么,失败了什么,等等。 – sodawillow
这是当前用于加密的PS。但是,我遇到的问题是根据HOSTNAME查询CSV密码,而不是设置“默认”密码并更改后加密。 $ SecureString的=的ConvertTo-SecureString的 “DEFAULT” -AsPlainText -Force THEN 启用-BitLocker的-MountPoint “C:” $ -pin SecureString的-TPMandPinProtector -SkipHardWareTest – RBambs