5.[PG1]パワーシェルで状態監視してみよう~Debug編~
こちらは前回作成したスタートアップフォルダに入れたCMDからパワーシェルを実行するプログラムが、実は動いていなかった件についての、修正方法や、検証手順などのお勉強になります。
前回の記事は[5.[PG1]パワーシェルで状態監視してみよう]
気づき
師匠・・・。実は、状態監視のパワーシェル、あれから数日たってテキストファイル見てみたんですけど、どうも動いてないっぽいです。。。
なんと・・・。
一瞬で閉じちゃうから、わからないですね・・・。あ、ちょっと赤字がでていたような・・・。
こうですかね?
powershell c:\work\pc-check\main.ps1
pause
あ、エラーが見れるようになりました!
エラーの正体
c:\work\pc-check\main.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル C:\work\pc-check\main.ps1
を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170
) を参照してください。
発生場所 行:1 文字:1
+ c:\work\pc-check\main.ps1
+
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
「このシステムではスクリプトの実行が無効になっているため・・・」とか出ていました。セキュリティエラー?
うーん。これでいいのかな? 調べたところ、設定をいじらないと実行できないって出てきました。
では、こんな感じでしょうか?
#確認
Get-ExecutionPolicy
#Restricted だった
#変更
Set-ExecutionPolicy RemoteSigned
#戻し
Set-ExecutionPolicy Restricted
わかりました! こんな感じですかね。
あ、変更後は「morning.bat」を実行しても赤字がでなくなりました!
え!? 1個目!?
2個目のデバッグ
え、どういうことでしょうか?ちゃんとテキストファイルの中身が追加で入ってるし、これで解消されてると思うのですけど?
あれ、出てないでしょうか!? おかしいなぁ「Get-Volume」をパワーシェルで実行するとちゃんと表示されますけど、テキストファイルに出力されてない?
確かに、何も表示されないから少し不安でしたが、確かにそれだとわかりやすいですね。それにしても、「Get-Volume」はどうしてテキストファイルに書き込まれないんだろう・・・? 手動だとちゃんと書き込まれるのに・・・。あれ、「-eq」に変えたら、1番目と3番目が表示されなくなって、2番目のファイルに内容がまとめて出るようになった・・・?
詰んだってことでしょうか・・・? 最初のプログラムなのに・・・。
師匠の力を借りて、結果、以下のように修正しました!
#ディスクの残容量などの出力
Start-Transcript c:\work\pc-check\1.disk.txt -Append
Get-Volume | Out-Default
Stop-Transcript
#不明なデバイスの抽出
Start-Transcript c:\work\pc-check\2.device.txt -Append
#Get-WmiObject Win32_PnpEntity | ?{ $_.ConfigManagerErrorCode -eq 0 } | ft Caption,PNPDeviceID,ConfigManagerErrorCode -AutoSize
Get-WmiObject Win32_PnpEntity | ?{ $_.ConfigManagerErrorCode -ne 0 } | ft Caption,PNPDeviceID,ConfigManagerErrorCode -AutoSize
Stop-Transcript
#エラーとクリティカルの抽出(直近100件中)
Start-Transcript c:\work\pc-check\3.eventlog.txt -Append
Get-EventLog -LogName system -Newest 100 | Where-Object {$_.EntryType -match "Err|Critical"}
Stop-Transcript
順調に言っていると思っていましたが、一度うまくいかなくなると、ほんとプログラムが何も言うことを聞いてくれなくて、泣きそうでした・・・。
今回で、デバッグが大変だし、大事ってことと、
機能の確認は最後までやりましょう、というお話でした!
この記事が気に入ったらサポートをしてみませんか?