PowerShell Scriptからさらに処理するために、さまざまなシステムメトリックをPythonに取り込もうとしています。私が必要とするデータを選んでエコーを使用して、それをPythonで読み込もうとしているtxtファイルに配置しましたが、Pythonデータを見るとちょっとばかげています。 Powershellはtxtファイルに出力するときに奇妙なエンコーディングを使用しますか?もしそうなら、PowerShellがPowerShellの形式を読むためにPythonが読むことができるか、または指示する形式でPowerShellを出力する方法がありますか?PowerShellのテキストをPythonに読み込んで出力する
PowerShellのコードは次のようになります。
$Make = Get-CimInstance CIM_ComputerSystem | Select Manufacturer
echo $Make.manufacturer > c:\Mike\Output\SysConfig.txt
$Model = Get-CimInstance CIM_ComputerSystem | Select Model
echo $Model.model >> c:\Mike\Output\SysConfig.txt
$Os = Get-CimInstance Win32_OperatingSystem | Select-Object Caption
echo $Os.caption >> c:\Mike\Output\SysConfig.txt
$CPU = Get-WmiObject Win32_Processor | Select *
echo $CPU.Name >> c:\Mike\Output\SysConfig.txt
echo $CPU.NumberOfCores >> c:\Mike\Output\SysConfig.txt
echo $CPU.NumberOfLogicalProcessors >> c:\Mike\Output\SysConfig.txt
echo $CPU.ThreadCount >> c:\Mike\Output\SysConfig.txt
echo $CPU.MaxClockSpeed >> c:\Mike\Output\SysConfig.txt
echo $CPU.CurrentClockSpeed >> c:\Mike\Output\SysConfig.txt
テキスト出力は次のようになります。
Hewlett-Packard
HP EliteBook 2570p
Microsoft Windows 10 Pro
Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz
2
4
4
2901
2901
とPythonのコードは次のようになります。
with open('c:\mike\output\SysConfig.txt', mode='r') as f:
Manufacturer = f.readlines(1)
Make = f.readlines(2)
OS = f.readlines(3)
CPU_Name = f.readlines(4)
CPU_Phys_Cores = f.readlines(5)
CPU_Log_Cores = f.readlines(6)
CPU_Threads = f.readlines(7)
CPU_Max_Clock = f.readlines(8)
CPU_Curr_Clock = f.readlines(9)
print(Manufacturer)
print(Make)
print(OS)
print(CPU_Name)
print(CPU_Phys_Cores)
print(CPU_Log_Cores)
print(CPU_Threads)
print(CPU_Max_Clock)
print(CPU_Curr_Clock)
使用 '| Out-File -FilePath C:\ Mike \ Output \ SysConfig.txt -Encoding UTF8 -Append'、リダイレクト演算子 '>>'ではありません。また、すでにPowerShellを使用しているときにPythonを使用するポイントは何ですか? – TheIncorrigible1
私はpowershellで動かすことができないが、Pythonは私のマシン上で信頼できるシステムメトリクスを生成しないことがわかっているはるかに大きなプログラムを作成しています。 –
あなたは['readlines()'](https://docs.python.org/3/library/io.html#io.IOBase.readlines)を間違って使用しています。引数は、読み込む行の最大数** **を示します。これは、ファイル内の行のインデックスではありません。代わりに['readline()'](https://docs.python.org/3/library/io.html#io.IOBase.readline)を使用し、どこにでも 'f.readline()'を置くことをお勧めします。 – martineau