ドッフの喫茶店

色々好きに書いてます。 昔はROとか艦これとかingressしていました。

前記事もヨロシク

WindowsPowerShellを使ってみる1
http://doplxyz.livedoor.biz/archives/52166964.html



ログ取り実装はバッチ処理の宿命である、コレが出来ないと「で、何が原因だったの?」が突き止められないのだ。
というわけでコレを重点的に調べる。

まず、打ち込んだコマンドだけ出力するだけならコレでいいようだ。
$LogOutputDateはオジリナル変数なので各自適当に。
保存フォルダは各自適当に。

$LogOutputDate = Get-Date -Format "yyyyMMddhhss"
Get-history > ( 'C:\Users\xxx\Desktop\仕事\script\log\' + $LogOutputDate + '.log' )


で、これををそのままps1に書き出して読み込んだらエラー。

out-file : パス 'C:\Users\xxx\Desktop\莉穂コ欺script\log\202105050320.log' の一部が見つかりませんでした。
発生場所 C:\Users\xxx\Desktop\仕事\script\ps1\logoutput.ps1:2 文字:1
+ Get-history > ( 'C:\Users\xxx\Desktop\莉穂コ欺script\log\' + $LogOutputDa ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (:) [Out-File], DirectoryNotFoundException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand


原因は文字化けでピンときた、UTF-8(BOM付き)でコードを保存していなかった。
こんな所で躓くとかWindowsのデフォルト設定でPowerShell使わせる気無いだろって気分になる。

ちなみに関数化してないので直接呼び出せる。
なんかこういう所ってプログラムの良く分からん所だよね。

そもそも関数化する理由はハードコーティングを避けて出来るだけ手直し部分をへらす事だと思う。
別に毎回同じファイル名を指定する作り方でもいいんだけど同じ単語100回使ってると、それを変更する場合死ぬほど置換えないといけないし、不要文字巻き込んだ置換え事故が発生するからね。

尚ココで日付コードがミスりまくってたので修正した。


yyyyMMddhhss
👇
yyyyMMddHHmmss

function global:commandhistory {
$LogOutputDate = Get-Date -Format "yyyyMMddHHmmss"
Get-history > ( 'C:\Users\xxx\Desktop\仕事\script\log\' + $LogOutputDate + '.log' )
}


とりあえず関数化するとこう?
余計な重複を避けるため秒まで数えて保存するという安直さだけどまあ使えるべ。

で、そもそもこんな手間かけなくてもログ取りでは根本的に便利なコマンドがあって超有名どころだと
Start-Transcript
Stop-Transcript
だと思う。
これの制御が全然出来ないので頑張ろう。
企業人は難しく作り杉なんだよ・・

まず、単にコマンドだけ使うとログ吐き出し先がC:\Users\xxx\Documentsと勝手に決められてしまうのでここの制御をする必要がある。安直に組むならこれだけでよい。

Start-Transcript C:\WORK\histry.log

ただしこれだと常に同じファイルを上書きするのでスクリプトが走った時のタイムスタンプを付けて上書き防止を兼ねるならこう。

$LogOutputDate = Get-Date -Format "yyyyMMddHHmmss"
Start-Transcript ( 'C:\WORK\' + $LogOutputDate + '.log' )


もうひと工夫付けて保存先フォルダも関数化するならこう。


$LogOutputDate = Get-Date -Format "yyyyMMddHHmmss"
$HistoryLogDir = "C:\WORK\'"
Start-Transcript ( $HistoryLogDir + $LogOutputDate + '.log' )


あとはこれを関数で括るなりすればOK?
この辺りの挙動で分からないのが、関数で括った処理の中で変数組むとその処理の中でしか変数が使われないんだよね。

ある程度はps1を呼び出す前の段階で変数定義しておかないと言うこと聞いてくれないモノが出来上がりそうで次はこの辺りを制御したい。
このエントリーをはてなブックマークに追加 mixiチェック

1年くらい前から開発と構築(のド素人)に配属変わりました。
日々慣れないことの連続でホゲェーってなってますがまぁ死にはしないので頑張りましょう(げそ

今日のお題目です。

  • WindowsPowerShellを導入してみる

からの、注意事項ですがコマンドプロンプトで出来ることはPowershellで全てできます。コマンドも全て所有しています。余裕があればCMDは全部PowerShellに置き換えて良いと思いますが、細かい所で出力結果と挙動が違うので検証的な意味でも単純置き換えは相当難しいでしょう。
dirコマンドを入れた場合分かりやすく顕著かと思います。



サーバに入れて使うことを前提にしてるのでだいたいは導入有無判断からスタートです。
あまりにも古いServerで無い限りデフォルトでWindowsPowerShellが入っているのでアップデートする必要はありません。
ただAzurePowerShellを使う場合7.xが必要だったりするので、アップデートしておいた方が根本的には対応楽です。
WindowsPowerShellのバージョンを上げずにAzurePowerShellを使わせろとなった場合.Net Frameworkを更新しないといけない場合もあり、調整がクソ面倒になります。

余談ですがWindowsUpdateで.Net Frameworkが勝手に更新された場合、開発アプリが動かなくなる等があるのでバージョン変動には本当気を配る必要があります。企業製品のバージョンがいつまでも古いのは動かない原因を探す、対応するが面倒な点もあるので致し方ない所ですね。


WindowsPowerShellの最新版はGithubにあります。
余程の事が無い限りプレビュー版を使うのはやめておきましょう。
開発途上にありがちなバグが入ってたらどうするんだ?となります。


大抵のWindows環境であれば執筆時点で「PowerShell-7.1.3-win-x64.msi」が適合すると思います。
余程の事情が無い限りOSの最大bit数に合わせたVerで良いと思います。
64bitOSに32bitアプリを入れるのは殆どの場合、納品時の説明で「無用な何故?」の質問を招くのでオススメできません。

GITHUB|WINDOWS POWERSHELL
https://github.com/PowerShell/powershell/releases

インストール方法はダウンロードしたインストーラをそのまま実行すればOKです。
ただし「数百台のパソコンにまとめてインストールさせる」ような特殊な事例がある場合は、MSサイトのサイレントインストールコマンドを応用すると良いと思います。
手法は玉石混交だと思うので次の機会にでも。




実は初期環境では殆ど何も動きません。
原因はセキュリティレベルによる動作停止です。

WindowsでPowerShellスクリプトの実行セキュリティポリシーを変更する
https://www.atmarkit.co.jp/ait/articles/0805/16/news139.html

大抵Restrictedになっており躓くと思います。
企業のノウハウって意外とこういう初動が抜けてる事が多いです。

次。

このBlog書いてる時点でも漠然と何学べば良いか分からない状態なのでサンプルを探します。
色々と有ると思いますが、企業人としては大抵はログ取得辺りで難儀するのではないでしょうか。
あと、引き算割り算は良いんですが構文としてよく見るのはfunctionでコレがいまいち分かりませんのでまずこれから。

Windows PowerShell 入門(6)−関数編1
https://codezine.jp/article/detail/2491

というわけでコードを作った。

PS C:\WINDOWS\system32> function hello { write-host "hello powershell world!!" }
PS C:\WINDOWS\system32> hello
hello powershell world!!
PS C:\WINDOWS\system32>


ワイの中の理解ではこう

function 関数呼び出し用文字 { コード } と組む事で必要な時に呼び出しが可能になる。
で、ps1で作ったコードの中は

function 関数呼び出し用文字1 { コード }
function 関数呼び出し用文字2 { コード }
function 関数呼び出し用文字3 { コード }

みたいな塊で作られてて
ps1を単体で読み込んだだけでは実行されないように作る。
そうしないとps1読んだ時点で直列に動作しちゃうからね。

なのでお遊びコードを作った

function hello { write-host "hello powershell world!!" }
function enl { write-host "青は灰に" }
function res { write-host "緑は塵に" }

powershellに直接読ませて使った結果はコレである

PS C:\WINDOWS\system32> function hello { write-host "hello powershell world!!" }
PS C:\WINDOWS\system32> function enl { write-host "青は灰に" }
PS C:\WINDOWS\system32> function res { write-host "緑は塵に" }
PS C:\WINDOWS\system32> hello
hello powershell world!!
PS C:\WINDOWS\system32> enl
青は灰に
PS C:\WINDOWS\system32> res
緑は塵に
PS C:\WINDOWS\system32>


じゃあコレをps1ファイルに記述して食わせた場合どうなるか

PS C:\WINDOWS\system32> C:\Users\xxx\Desktop\仕事\script\ps1\hello.ps1
PS C:\WINDOWS\system32> hello
hello : 用語 'hello' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されませ
ん。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してくだ
さい。
発生場所 行:1 文字:1
+ hello
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (hello:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

PS C:\WINDOWS\system32>


認識しない。
どうやら関数の前にglobal:がついてないと呼び出しても使えないらしい。
コードを以下に書き換えて実施した。

function global:hello { write-host "hello powershell world!!" }
function global:enl { write-host "青は灰に" }
function global:res { write-host "緑は塵に" }

結果は・・・

PS C:\WINDOWS\system32> C:\Users\xxx\Desktop\仕事\script\ps1\hello.ps1
PS C:\WINDOWS\system32> hello
hello powershell world!!
PS C:\WINDOWS\system32> enl
髱偵・轣ー縺ォ
PS C:\WINDOWS\system32> res
邱代・蝪オ縺ォ
PS C:\WINDOWS\system32>



関数で呼び出した文字が何故か化ける。
これは$OutputEncodingがUS-ASCIIになっている事が問題かと思ったのだが
ps1のファイル保存時文字コードが「UTF-8(BOM付き)」じゃないとなるらしい。

PS C:\WINDOWS\system32> C:\Users\xxx\Desktop\仕事\script\ps1\hello.ps1
PS C:\WINDOWS\system32> enl
青は灰に
PS C:\WINDOWS\system32> res
緑は塵に
PS C:\WINDOWS\system32> $OutputEncoding = New-Object System.Text.ASCIIEncoding
PS C:\WINDOWS\system32> $OutputEncoding


IsSingleByte : True
BodyName : us-ascii
EncodingName : US-ASCII
HeaderName : us-ascii
WebName : us-ascii
WindowsCodePage : 1252
IsBrowserDisplay : False
IsBrowserSave : False
IsMailNewsDisplay : True
IsMailNewsSave : True
EncoderFallback : System.Text.EncoderReplacementFallback
DecoderFallback : System.Text.DecoderReplacementFallback
IsReadOnly : True
CodePage : 20127



PS C:\WINDOWS\system32> enl
青は灰に
PS C:\WINDOWS\system32> res
緑は塵に
PS C:\WINDOWS\system32>


というわけでシェル化した文字の呼び出しだけでもコレだけトラブルがある。
企業でこれをやると「問い合わせして答えもらって解決して」「影響も聞いて」「ネットにある答えは最終手段」となるので非常に鈍足となるのである。

次記事もヨロシク

WindowsPowerShellを使ってみる2
http://doplxyz.livedoor.biz/archives/52166986.html
このエントリーをはてなブックマークに追加 mixiチェック

未だこれって正直どうなん
それともスマホから編集出来るような管理画面てある?

追記
ストアからアプリを見つけた
使いやすいかどうかはちょっと分からん

chrome

このエントリーをはてなブックマークに追加 mixiチェック

はいこんにちは、私です。
今日はタイトル通りですが、どうやって使うのコレ?の典型なAMD Ryzen Masterの使い方を解説していこうと思います。

何故この記事作ろうかと思ったんですが、図解で分かりやすい記事が見つからなかったので自分で作ろうと思ったからです(๑╹ᆺ╹)デーン

■目次
1.ダウンロード
2.設定
3.関連サイト



1.ダウンロード
AMD公式サイトから落とせます
https://www.amd.com/ja/technologies/ryzen-master

2503

ダウンロードボタンはサイト下部にあります。
サイズは130MB位ですが特に問題無いでしょう。

インストールも大丈夫だと思うので進めてください。



2.設定
サンプルCPUがRyzen 5 3600ですが、ブーストが効きすぎてアッチッチになるので、効きすぎない程度に調整をします。
で、結論からいいますと
PBOでPPT、TDC、EDCを全部45にしました。

2504


私のやり方
(1)生贄として「Profile 2」を選択
(2)Precision Boost Overdriveを選択
(3)PPTを45に設定
   TDCを45に設定
   EDCを45に設定
(4)画面下の「Apply & Test」を実行してフリーズ等しないことを確認。
(5)画面下の「Save Profile」を実行してRyzen Masterを終了
(6)Ryzen Masterをもう一回起動して設定が生きている事を確認


で、多少使ってみて以下を確認。
PPT、TDC、EDCが設定した値に反映されているかどうか。
CPU温度とかが下がっているかどうか。
ちなみに、Voltage Controlは「負荷が低いと1.35v」「負荷が上がると1.1v」くらいに変動します。
この辺りの挙動はPPT等を守れるかに準拠してる感じです。
どんなに負荷を掛けてもリテールクーラー60度〜70度で、90度いかなくなりました。
これは大きい!!!!!
なのでここを気にし過ぎて「高いままやん」って思わなくてOKです。


2505

なので例えば、3.6GHzで1.1vをずっと維持したい!とかそういう人は、UEFI(BIOS)で全部制御したほうが良いと思いますが、安定運行まで時間かかるしソフトウェア制御が楽で安全かと思います。
設定をミスるとフリーズしますが、CMOSクリアとかいらないのが楽ですね。



3.関連サイト
記事作成にあたり参考にしたサイトです。感謝!

Ryzen Master で遊んでみる (2) Eco Mode
https://hiro20180901.hatenablog.com/entry/2020/02/04/070000

Ryzen Masterでエコモード・オーバークロックを楽しむ
https://pcmanabu.com/ryzen-master/

「Precision Boost Overdrive(PBO)」の実効果を検証
https://sanpoaruku.com/amd-ryzen-pbo-settings/



間違ってる所とか、解説補足あったらコメントよろしゅ!
このエントリーをはてなブックマークに追加 mixiチェック


の15:30辺りより


ネットスラングとしてDDがあって
DD=誰でも大好き(※出典は以下より)


DDとは、アイドルファンを表す若者言葉です。

特定のアイドルではなく、複数のアイドルのファンのこと。または、アイドルと呼ばれる人全員を好きな人。
『誰でも大好き』の略。

■出店
若者言葉辞典〜あなたはわかりますか?〜
https://bosesound.blog.fc2.com/blog-entry-270.html



※言葉のルーツは日本らしいけど向こうでよく使われているとか。
 sorenaとか。

というものらしいけども

ナナカグラ先生がネタで言った、使った意味としては
「わたしだけを見てね〜」
というニュアンスの模様・・・(๑´ڡ`๑)コワイ!

で、広まっているとか・・・コワイ!
このエントリーをはてなブックマークに追加 mixiチェック

↑このページのトップヘ