同僚と私は、同社のネットワーク上にあるすべてのコンピュータの名前を含むCSVファイルを使用し、リモートレジストリに接続するためにこれらの名前を使用するpowershellスクリプトを作成しようとしています。特定の値を抽出する。powershellを使用して複数のコンピュータからレジストリ値を抽出する
これは、我々がこれまで持っているものです。
今$strMachineName = import-csv .\computer_name.csv
foreach ($line in $strMachineName)
{
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $line.computer)
$regkey = $reg.OpenSubkey("SOFTWARE\\Olympus\\DSSPlayerPro\\Transcription Module\\UserInformation")
$serialkey = $regkey.GetValue("SerialNumber")
write-host $line","$serialkey
}
、このスクリプトが正常に動作しますが、それは難しい多くのコンピュータに理解するために作る出力の問題があります。
stdoutをcsvまたはtxtのいずれかの別のファイルに出力できます。また、stderrをnullに出力したい場合や、後で検査できるように別のファイルを出力したい場合もあります。
write-host
は、変数が使用されているときにファイルに出力できないため、適切なコマンドではないと考えられているため、エコーを使用しようとしましたが、変数の取得に問題があります私が望むように働くこと。
ありがとうございました。
ありがとう、私は明日それを試してみます。 **( '"{0}"、 "{1}"' -f ...)**の部分をもっと説明できますか?私は、最初の変数をゼロの代わりに置き、2番目の変数を1の代わりに置き、コンマをその間に置くと推測しています。このテクニックは何と呼んでいますか?私はそれについて私自身の読書をしたいと思います。 – smierdziel
@smierdzielあなたにスポットがあります。それは文字列フォーマットと呼ばれます。ここには良い[ブログ記事](http://devcentral.f5.com/weblogs/Joe/archive/2008/12/19/powershell-abcs---f-is-for-format-operator.aspx)があります。 –
@smierdziel注 - catchブロックの '$ _'は例外のオブジェクトになります。パイプを 'Get-Member'にパイプするか、PowerGUIでデバッグすれば、面白いものがすべて見つかります。 –