[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2ch.scのread.cgiへ]
Update time : 12/13 19:01 / Filesize : 192 KB / Number-of Response : 689
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

PowerShell -Part 7



1 名前:デフォルトの名無しさん [2023/11/29(水) 16:07:49.46 ID:0g8RZ7sB.net]
前スレ
PowerShell -Part 6
https://mevius.5ch.net/test/read.cgi/tech/1644744972/

次スレは>>980が立ててね!!

369 名前:デフォルトの名無しさん [2024/12/21(土) 19:56:38.76 ID:IOryZJAZ.net]
>>368
間違って実行してしまわないよう、わざわざそういう仕様になっていることを忘れないように

370 名前:デフォルトの名無しさん [2024/12/21(土) 19:57:11.83 ID:IOryZJAZ.net]
>>368
バッチファイルというものを知った方がいい

371 名前:デフォルトの名無しさん [2024/12/21(土) 20:34:08.41 ID:kQ229ZTv.net]
的外れなレス付いてんなw

372 名前:デフォルトの名無しさん mailto:sage [2024/12/23(月) 10:35:42.88 ID:8lbwsaDk.net]
バッチこい

373 名前:デフォルトの名無しさん [2024/12/24(火) 22:41:53.48 ID:S4CkJ4V1.net]
>>371
そもそもGUIで人間の操作で実行というのが変

何のための自動化なのかわからない

374 名前:デフォルトの名無しさん mailto:sage [2024/12/24(火) 23:14:00.94 ID:ALyk/+99.net]
どこからGUIの話が出てきたんだ…?

375 名前:デフォルトの名無しさん [2024/12/25(水) 17:59:30.20 ID:YmcCoB80.net]
>>374
「右クリック」と書いてある

376 名前:デフォルトの名無しさん mailto:sage [2024/12/25(水) 21:34:02.80 ID:G9TljzDw.net]
ps1で思考停止するような子を見てるとそう
もっと頭を使う訓練を教育機関で受けさせとかないとやばいのではと総務省に問い質したくなるね

377 名前:デフォルトの名無しさん mailto:sage [2024/12/26(木) 00:31:28.78 ID:3BPBxHkr.net]
総務省…?



378 名前:デフォルトの名無しさん mailto:sage [2024/12/27(金) 11:14:09.84 ID:nSbaFnN8.net]
>>373
ps1ファイルを右クリでpwshコンソールが起動してスクリプトが実行される
て普通にあることだと思うが

379 名前:デフォルトの名無しさん mailto:sage [2024/12/27(金) 12:09:30.67 ID:+TT5rJ9I.net]
もう既に解決して終わってるし、>>366に書いてることをもう一度書く必要はない

380 名前:デフォルトの名無しさん mailto:sage [2025/01/02(木) 12:24:43.46 ID:XSssqHtC.net]
$s = "昔し羅馬にこう云う話しがある。後学のため聞いておけと云うんです"
Write-Host -ForegroundColor Red -BackgroundColor Black "$($s[12]) $($s[24]) $($s[23]) $($s[19])"

381 名前:デフォルトの名無しさん [2025/01/07(火) 17:30:11.98 ID:150rExn4.net]
>>378
それはGUIの操作

382 名前:デフォルトの名無しさん [2025/01/07(火) 17:33:24.53 ID:150rExn4.net]
実行形式のファイルを実行するときにしつこく確認する仕組みに変化した歴史も知らないんだろ。

383 名前:デフォルトの名無しさん mailto:sage [2025/01/08(水) 01:30:32.18 ID:T5jAWt2M.net]
的外れ過ぎる

384 名前:デフォルトの名無しさん mailto:sage [2025/01/08(水) 09:05:49.08 ID:DiodmN71.net]
>実行形式のファイルを実行するときにしつこく確認する仕組み

何それ

385 名前:デフォルトの名無しさん mailto:sage [2025/01/12(日) 01:09:34.15 ID:7sMi3UMV.net]
gci C:\Windows -include *.log,*.dat
は要素が一つも出なくて
gci C:\Windows\*.* -include *.log,*.dat
gci C:\Windows -recurse -include *.log,*.dat
はOKってどういう理屈なの?
できれば一番上の書きかたしたい…

386 名前:デフォルトの名無しさん mailto:sage [2025/01/12(日) 10:26:34.53 ID:+COVob5t.net]
>>385
仕様。
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-5.1#4-include

理屈は知らん。過去ログになんかあったような、ちょっと違ったような。(-Filterの話だったような)

387 名前:デフォルトの名無しさん mailto:sage [2025/01/12(日) 14:27:17.12 ID:+gCgMQG7.net]
初期リリースで適当に用意されたコマンドレットの仕様が残ってるだけだから理屈なんて無いだろうよ
gciのオプションは普通の人の感覚と違うからWhere-Objectにパイプで渡してフィルタする方がおかしな事にならないよ



388 名前:デフォルトの名無しさん mailto:sage [2025/01/14(火) 14:43:26.79 ID:It61Xpnn.net]
末尾のスラッシュの有無でフォルダ自体を指すのかその配下を指すのかを区別するのはUNIXでは割と珍しくないだろう
Windowsだとファイルパスを文字列というより何らかのエンティティを参照するものと考える傾向があるから馴染みにくいわな

389 名前:デフォルトの名無しさん mailto:sage [2025/01/14(火) 19:43:42.33 ID:yWOGeGxK.net]
この話は末尾がスラッシュかどうかは関係ないよ
Include, Excludeを使うときはワイルドカードを含めないとPathで指定した項目自身しかヒットしなくなるというこのコマンドレット固有ルールの話

390 名前:デフォルトの名無しさん [2025/01/27(月) 01:42:20.03 ID:hFrLE9a7.net]
V7.47
https://github.com/PowerShell/PowerShell/releases/tag/v7.4.7
V7.5
https://github.com/PowerShell/PowerShell/releases/tag/v7.5.0
が出ました

391 名前:デフォルトの名無しさん [2025/01/27(月) 01:43:08.84 ID:hFrLE9a7.net]
今回から.exeがある。

392 名前:デフォルトの名無しさん mailto:sage [2025/01/27(月) 21:48:58.99 ID:sL8l+nw9.net]
.exe版と.msi版の違いが分からん
.msiだと問題が起きる環境でもあるのか

393 名前:デフォルトの名無しさん mailto:sage [2025/01/27(月) 22:00:26.88 ID:PdZna4r2.net]
MDMで配れない

394 名前:デフォルトの名無しさん mailto:sage [2025/02/05(水) 01:17:36.51 ID:lMdV6DH3.net]
powershellの実行権限デフォルトで縛ってるのなんでなの
batは縛ってないのに

395 名前:デフォルトの名無しさん mailto:sage [2025/02/05(水) 09:34:59.87 ID:RMyxJ4z6.net]
batが作られた時代はセキュリティという概念がほとんどなかった
いまや甘いと社会的影響も甚大で徹底的に叩かれる時代
何もわからない初心者がメールに添付されたスクリプトを実行できなくて困惑するくらいで丁度いい
batという穴が残っているといってもいまは過渡期
移行する選択肢がありたとえば組織のルールで禁止してメールフィルタで弾けばいい

396 名前:デフォルトの名無しさん mailto:sage [2025/02/05(水) 11:32:38.10 ID:Mu7T1O7D.net]
情弱は我慢して使えってこと

397 名前:デフォルトの名無しさん [2025/02/07(金) 21:28:42.53 ID:lNWVt+S0.net]
>>394
誰でも間違って重大ミスをする方がいいのか?



398 名前:デフォルトの名無しさん mailto:sage [2025/02/08(土) 08:16:37.94 ID:cxNGtJGK.net]
https://learn.microsoft.com/ja-jp/powershell/scripting/security/security-features
> 実行ポリシーは、Windows プラットフォームにのみ適用されます。

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_execution_policies
> Windows 以外のコンピューターでは、既定の実行ポリシーは Unrestricted され、変更できません。 Set-ExecutionPolicy コマンドレットは使用可能ですが、PowerShell はサポートされていないというコンソール メッセージが表示されます。 Windows 以外のプラットフォームでは Get-ExecutionPolicy は Unrestricted を返しますが、これらのプラットフォームは Windows セキュリティ ゾーンを実装していないため、実際の動作は Bypass と一致します。

なんだこの差は

399 名前:デフォルトの名無しさん mailto:sage [2025/02/08(土) 08:24:47.70 ID:26aAk0ye.net]


400 名前:デフォルトの名無しさん mailto:sage [2025/02/08(土) 08:47:04.49 ID:Tj0Icuu5.net]
マルチプラットフォームで社外の全システムに対応するのもめんどくさそうだしある程度はええやろ
UNIXならパーミッションを適切に設定する文化が馴染んでるしな
100点満点じゃないと人様に叩かれる文化は新しいものが生み出せずに萎縮する

401 名前:デフォルトの名無しさん mailto:sage [2025/02/08(土) 13:21:14.91 ID:1vi9xXrm.net]
バッチファイルでも実行権限を持たせる事はできるんだから
powershell独自のやつは余計なんだよ

402 名前:デフォルトの名無しさん mailto:sage [2025/02/08(土) 15:13:57.11 ID:k/NTaFUS.net]
.ps1はエディタに紐付け

403 名前:デフォルトの名無しさん mailto:sage [2025/02/08(土) 15:51:11.00 ID:6WBbu+9W.net]
メモ帳に紐付けてます

404 名前:デフォルトの名無しさん mailto:sage [2025/02/13(木) 09:12:08.62 ID:/wbXAgvm.net]
PowerShell 7.5 GA is now available
https://devblogs.microsoft.com/powershell/announcing-powershell-7-5-ga/

405 名前:デフォルトの名無しさん [2025/02/18(火) 06:18:26.96 ID:YFjssuad.net]
Selectボタンでファイルを選択した後にOKボタンを押下しても、$filePathにファイル名が代入されていません。何が原因でしょうか?
ttps://pastebin.com/a3EwP1Lw

406 名前:デフォルトの名無しさん mailto:sage [2025/02/18(火) 07:51:32.12 ID:WQjhH71Q.net]
>>405
テキストボックスには選択したファイルのパスが表示されてるのに、ってこと?

407 名前:デフォルトの名無しさん mailto:sage [2025/02/18(火) 07:53:13.44 ID:hC2ChTFa.net]
scope的に$filePath揮発してたりしない?



408 名前:デフォルトの名無しさん mailto:sage [2025/02/18(火) 08:02:55.62 ID:WQjhH71Q.net]
関数内で外のスコープの変数に代入する場合はスコープ指定(script: や global:)が必要だったかも

409 名前:デフォルトの名無しさん [2025/02/18(火) 19:01:09.96 ID:cVYWxauq.net]
>>406
はい、そうです。

>>407
多分$filePathが揮発しているのだと思うのですが、何故そうなるのかが正直分かっておりません。

>>408
$global:filePath = $null
$script:filePath = $null
に書き換えても結果は同じでした。orz

410 名前:デフォルトの名無しさん mailto:sage [2025/02/18(火) 21:38:36.15 ID:Zhun0sKt.net]
>>409
408の内容理解してないだろ

411 名前:デフォルトの名無しさん mailto:sage [2025/02/18(火) 21:45:12.87 ID:X9R6h3Dz.net]
$button_Select.Add_Clickの中の $filePath = $dialog_fileSelection.FileName を $script:filePath に変える

そもそもイベントハンドラの書き方おかしくない?
Add_Click{} じゃなくて Add_Click({}) でしょ

412 名前:デフォルトの名無しさん mailto:sage [2025/02/18(火) 21:45:47.23 ID:pnZByoKT.net]
>>409
惜しいw

スコープ指定が必要なのは関数内の代入文側であって、外にある変数定義側ではないよ

413 名前:デフォルトの名無しさん [2025/02/19(水) 05:46:44.36 ID:95a5Qlah.net]
>>411
ありがとうございます!
$filePathにファイルパスが代入されるようになりました。

>>412
ありがとうございます。
そうだったんですね。勉強になりました。

414 名前:デフォルトの名無しさん [2025/03/01(土) 22:23:09.05 ID:yrcKQQ99.net]
ttps://pastebin.com/THGpvEsL

ファイルを何も選択していない状態でOKボタンを押下すると、メッセージダイアログボックス「"Please select a file."」が表示され、そのダイアログボックスのOKボタンを押下すると、処理?が終了してしまいます。
OKボタンを押下した際に、そのメッセージダイアログボックス「"Please select a file."」だけ消すにはどうしたらいいでしょうか?

415 名前:デフォルトの名無しさん mailto:sage [2025/03/02(日) 03:09:52.22 ID:9brWkkbH.net]
>>414
当たり前だけど、下記を削除するしかない

$button_OK.DialogResult = "OK"

416 名前:デフォルトの名無しさん [2025/03/02(日) 07:10:25.55 ID:yaeCdLgC.net]
>>415
ありがとうございます!

417 名前:デフォルトの名無しさん mailto:sage [2025/03/04(火) 14:43:31.10 ID:p/g0UiTR.net]
Microsoft Update changes for PowerShell 7
https://devblogs.microsoft.com/powershell/microsoft-update-changes-for-powershell-7/
「Microsoft Update」を用いた「PowerShell 7」のアップデート計画が変更
まだ「PowerShell 7.2」を利用している場合、米国時間3月14日より7.4へ更新開始
https://forest.watch.impress.co.jp/docs/news/1667304.html



418 名前:デフォルトの名無しさん [2025/03/07(金) 19:36:07.86 ID:zJfq1/au.net]
Input Folder用のボタンを押下して対象のフォルダを選択した後、OKボタンを押下すると選択した対象のInputフォルダのパスが取得されていません。
変数スコープまたは"function setSelectButton"におけるswitchが機能していないのおもうのですが、何が原因でしょうか?
Copilotに聞いてもダメでした。ボタンなどの部品は関数化しないほうがいいのでしょうか?

ttps://pastebin.com/ULTy9dM8

419 名前:デフォルトの名無しさん mailto:sage [2025/03/07(金) 23:19:13.53 ID:6K+ignj1.net]
Add_Clickに渡したスクリプトブロックが実行されるのはボタンクリック時。
その時にはもうsetSelectButtonを抜けてるから、setSelectButton実行時に渡した$folderTypeはもう見えない。

最後の手段的なglobalスコープの使用を避けて手っ取り早く解決するなら、
{〜〜〜}.GetNewClosure()でsetSelectButton実行中の変数スコープを記憶(?)したうえで
自前のクラスとかハッシュテーブル等で入出力しちゃう。とか。適当実装だとこんな。

function setSelectButton($def){
$conf = New-Object System.Windows.Forms.Button
$conf.Location = New-Object System.Drawing.Point($def.xAxis,$def.yAxis)
$conf.Size = New-Object System.Drawing.Size($def.xSize, $def.ySize)
$conf.Text = "Select"
$conf.Add_Click({
  $dialog_FolderSelection = New-Object Windows.Forms.FolderBrowserDialog
  if($dialog_FolderSelection.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK){
    $def.textBox.Text = $dialog_FolderSelection.SelectedPath
  }
}.GetNewClosure())
return $conf
}
(略)
$inputDef = [Ordered] @{xAxis = 370; yAxis = 50; xSize = 70; ySize = 20; textBox = $textBox_inputFolder;}
$outputDef = [Ordered] @{xAxis = 370; yAxis = 70; xSize = 70; ySize = 20; textBox = $textBox_outputFolder;}
# create Select button
$button_Select_inputFolder = setSelectButton $inputDef
$button_Select_outputFolder = setSelectButton $outputDef
(略)
if([String]::IsNullOrEmpty($inputDef.textBox.Text)){ # show a message dialog if no file is selected

※これで入力欄にフォルダパスをコピペする人(=私)も安心

420 名前:デフォルトの名無しさん [2025/03/08(土) 23:41:12.69 ID:zOJ1gnEL.net]
画面用のコードがひどすぎるのがPowerShell

421 名前:デフォルトの名無しさん [2025/03/09(日) 07:42:20.13 ID:RXTu5Tqn.net]
>>419
ありがとうございます!
setSelectButton実行時に渡した$folderTypeはもう見えないんですね。

422 名前:デフォルトの名無しさん mailto:sage [2025/03/11(火) 21:13:50.84 ID:LUWD7xFy.net]
Windows 11 バージョン 24H2 で netsh.exe の出力を PowerShell の変数に代入すると、非 ASCII 文字が文字化けする事象について
https://jpwinsup.github.io/blog/2025/03/11/Networking/TCPIP/NetshEncodingChange24h2/

423 名前:デフォルトの名無しさん [2025/04/26(土) 01:37:45.27 ID:1l1C1hqe.net]
ttps://pastebin.com/0HrXEMvc
のHTMLソースから特定のDIVクラス「KW」とそのクラスないを削除する方法はありましでしょうか?
以下ではきえませんでした
# HTML読み込み
$targetDir = "D:\Download\test\sample.html"
$html = Get-Content "D:\Download\test\sample.html" -Raw

# KWクラスdivを正規表現で削除
$pattern = '<div\s+class="KW">[\s\S]*?<\/div>'
$modifiedContent = $htmlContent -replace $pattern, ''

# 結果出力
$processedHtml | Out-File "D:\Download\test\pit.html" -Encoding UTF8

424 名前:デフォルトの名無しさん mailto:sage [2025/04/26(土) 21:00:04.39 ID:arwW7ZGW.net]
>>423
なんで変数の対応がめちゃくちゃなの?
正規表現で力技でやるとこんなところだが
xmlとして読み込めばnode削除でいけそうな気がする
Add-Type -AssemblyName Microsoft.VisualBasic
$html = Get-Content "D:\Download\test\sample.html" -Raw

# KWクラスdivを正規表現で削除
$pattern = [regex]"^((?:(?'open'<div[^>]*?>[\r\n]*))|(?'close-open'</div>)|(?:(?!</?div[^>]*>)[\s\S])+?)*(?(open)(?!))"
$processedHtml=$pattern.replace($html,{
$r=$args.value
$e=0
$args.groups['3'].captures|
sort index|
?{$_.index+$_.length -gt $e -and $_.value -cmatch '<div.*class="KW"'}|
%{$e=$_.index+$_.length; $r=[Microsoft.VisualBasic.Strings]::replace($r,$_.value,"",1,1)}
$r
})
$processedHtml | Out-File "D:\Download\test\pit.html" -Encoding UTF8

425 名前:デフォルトの名無しさん [2025/04/26(土) 23:51:52.55 ID:p1PcxSuO.net]
ttps://pastebin.com/0M9pbEJt
みたいなHTMLから特定のDIVクラス(kw)で定義されている要素を全部削除したいのですが、何かいい方法ありますでしょうか?

426 名前:デフォルトの名無しさん [2025/04/27(日) 15:25:40.97 ID:/1DxBHsK.net]
>>425 (>>423と同一人物だよね)
>>424に礼を言ったうえで、どの点が自身の質問意図に合ってなかったか説明して、
それからもっと具体的に追加質問した方がいいと思うよ。
ところで「xmlとして読み込めばnode削除でいけそう」は試してから言ってるの?何が合わなかったの?

427 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 16:50:54.99 ID:ce45ltSU.net]
滝川クリトリスです



428 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 20:14:14.77 ID:/O0GUF2P.net]
楽しようとして初回マッチ部分のみのreplace使ったけど
やっぱり別のが消えちゃうという一抹の不安があるのでreplaceを使うのはやめた
最終行に改行がないままにしたいのかな?
$html = Get-Content "D:\Download\test\sample.html" -Encoding UTF8 -Raw

# KWクラスdivを正規表現で削除
$pattern = [regex]"^((?:(?'open'<div[^>]*?>[\r\n]*))|(?'close-open'</div>)|(?:(?!</?div[^>]*>)[\s\S])+?)*(?(open)(?!))"
$processedHtml=$pattern.replace($html,{
$r=$args.value
$text=''
$e=0
$args.groups['3'].captures|
sort index|
?{$_.index+$_.length -gt $e -and $_.value -cmatch '<div[^>]*?class="KW"'}|
%{
$text = $text + $html.substring($e, $_.index-$e-1);
$e = $_.index + $_.length - 1
}
if($r.length -gt $e) {$text = $text + $r.substring($e, $r.length-$e)}
$text
})

[Text.Encoding]::GetEncoding("UTF-8").GetBytes($processedHtml) | Set-Content -Path "D:\Download\test\pit.html" -Encoding Byte

429 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 20:24:25.83 ID:/O0GUF2P.net]
>>426
試してませんでした
HTMLやxmlを扱うことはほぼ無いのであんまり知識が無い
で、>>423の場合では[xml]で読み込めてnode削除でうまくいくんだが
入れ子になってる場合
<div class="KW">
<span>
<div class="KW">
</div>
</span>
</div>
とかにはどうやったら簡単に対応できるのかと思ってるところ

430 名前:デフォルトの名無しさん [2025/04/27(日) 22:05:35.62 ID:aGrpQ/Rq.net]
中身全部消すのであれば内側のKWは無視していいのでは

431 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 22:11:37.95 ID:/1DxBHsK.net]
簡単には
$text = DOCTYPE宣言を除いた<html>〜</html>とかXMLとして読み込めるテキストデータ
$xml = [xml] $text
while($node=$xml.SelectSingleNode("//div[@class='KW']")){
  $null = $node.ParentNode.RemoveChild($node)
}
$xml.OuterXml | Out-File 〜〜〜
## class="aaa KW bbb"の存在とか、インデント等を完璧に維持したい、とかは考慮外。

432 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 22:22:47.91 ID:/O0GUF2P.net]
>>431
なるほど
こんな感じにしてたんだよ
$list=@()
$doc.GetElementsByTagName('div')|?{$_.class -eq "KW"}|%{$list+=$_}
$list|%{[void]$_.ParentNode.RemoveChild($_)}

433 名前:デフォルトの名無しさん mailto:sage [2025/04/27(日) 22:48:33.11 ID:/O0GUF2P.net]
悩んでたのは
既に削除しちゃてて存在しない場合にエラー無視はやりたくないなあってところ

434 名前:デフォルトの名無しさん mailto:sage [2025/05/02(金) 21:45:21.05 ID:TuuGRLh6.net]
powershellって日本語に厳しい?
日本語名のフォルダに入れた時だけエラー吐く
英語名フォルダは動く
UTF-8BOMで保存してるのに文字化けエラーが治らない

435 名前:デフォルトの名無しさん [2025/05/02(金) 22:24:03.09 ID:OrgxTXnx.net]
いわゆる「マルチバイト文字」のことを「日本語」と呼ぶのはジジイ

436 名前:デフォルトの名無しさん [2025/05/03(土) 07:39:35.24 ID:ERFTsxnY.net]
UTF-8にBOMは不要

437 名前:デフォルトの名無しさん [2025/05/03(土) 17:59:32.71 ID:0tHkB26n.net]
文字コードが混在するシステムではBOMがあると便利です



438 名前:デフォルトの名無しさん mailto:sage [2025/05/03(土) 18:08:41.88 ID:qBega2UP.net]
それが更に文字コードのバリエーションを増やし失敗を生むのだから本末転倒です

439 名前:デフォルトの名無しさん [2025/05/03(土) 18:08:56.03 ID:PV3Uf1QS.net]
PowerShellスクリプトは「UTF-8 with BOM」が前提

>>434
実行時(コンソール)のコードページを確認してみては?

440 名前:デフォルトの名無しさん mailto:sage [2025/05/04(日) 07:07:42.38 ID:kiovYued.net]
shift-jisにすればいいんじゃないの?

441 名前:デフォルトの名無しさん mailto:sage [2025/05/04(日) 08:23:30.18 ID:GZLENS5k.net]
適切なエンコードの選択
https://learn.microsoft.com/ja-jp/powershell/scripting/dev-cross-plat/vscode/understanding-file-encoding#choosing-the-right-encoding

442 名前:デフォルトの名無しさん mailto:sage [2025/05/04(日) 11:02:36.68 ID:Bff2jlZm.net]
文字化け対策は
 [Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
こういうのをpowershellのプロファイルに書き込んで
powershell起動時に文字エンコードが適切な値になるようにしておく
そしてコンソールのタイトルバーを右クリして設定で適切なフォントが使用されてるか確認

443 名前:デフォルトの名無しさん mailto:sage [2025/05/09(金) 16:18:47.82 ID:LImQScat.net]
>>434 とは別人だが、レジストリ弄ったら文字化けしなくなったわ
初心者泣かせのクソ仕様だな

444 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 10:47:55.61 ID:ARU6YZDD.net]
>>443
powershellをアップデートしたらリセットされそうな予感

445 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 15:03:05.65 ID:L74jL6NI.net]
>>444
文字化けするようになったのはプロパティでコンソール画面の調整を行ってから
デフォルトの状態では文字化けしていなかったのでたぶん大丈夫…と思う

446 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 16:44:31.56 ID:w/29XAyn.net]
$a = powercfg.exe -lastwake
$aは文字列かと思ったら文字列の配列だった…

コマンドの出力に改行が無ければ文字列、含む場合は配列とかいうヘンテコ仕様は何なんだ

447 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 19:51:20.44 ID:xRSUEbTb.net]
この振る舞いを知らないと、$a.Lengthが時により文字列長だったり配列長だったりして、例外やバグになる。
さらには標準出力が何もないと文字列型である空文字ではなくNULL(AutomationNull)になるし。
外部プログラムの標準出力を受け手が改行ごとに分割して解釈するのはgrep等でよくあるからヘンテコ仕様とは思わないけど、
沢山あるpowershellの落とし穴の1つだと思ってる。



448 名前:デフォルトの名無しさん mailto:sage [2025/05/19(月) 10:22:41.03 ID:Z1VKFLAg.net]
$a = @(powercfg.exe -lastwake)
こんなふうにして必ず配列で返るようにするといいです

449 名前:デフォルトの名無しさん mailto:sage [2025/05/19(月) 21:43:03.14 ID:qL6NUCv5.net]
キモい記法だな

450 名前:デフォルトの名無しさん mailto:sage [2025/05/19(月) 23:54:30.60 ID:2rbfAZ+2.net]
このキモい記法ってコレクション返す関数書くと使わざるを得ないんだよな…
関数とかスクリプト最後のreturnにコレクションを渡すと勝手にバラす謎仕様

最初知らなくてDataTableのつもりがDataRowの配列で返ってきたときはびっくりした

451 名前:デフォルトの名無しさん mailto:sage [2025/05/20(火) 01:53:43.90 ID:yO05o0Kw.net]
[string[]]$aで受け取る

452 名前:デフォルトの名無しさん mailto:sage [2025/05/20(火) 12:57:58.71 ID:NKLxZTlt.net]
時刻データ(ISO 8601)が入った JSON を invoke-RestMethod で受け取る
あるいは ConvertFrom-JSON すると時刻が powershell 形式になる
データの内容を見て勝手に変換してるんか…

453 名前:デフォルトの名無しさん mailto:sage [2025/05/20(火) 14:18:35.07 ID:Xl2+DDPz.net]
>>452
勝手にDateTime型でだしてくるってこと?

454 名前:デフォルトの名無しさん mailto:sage [2025/05/20(火) 15:30:07.39 ID:NKLxZTlt.net]
>>453
こうなる

(ConvertFrom-Json('{"data":"2025-05-19T16:35:42.000Z"}')).data

2025年5月19日 16:35:42

455 名前:デフォルトの名無しさん mailto:sage [2025/05/20(火) 15:52:27.90 ID:NKLxZTlt.net]
括弧いらなかった(どうでもいい)
(ConvertFrom-Json '{"data":"2025-05-19T16:35:42.000Z"}').data

456 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 09:54:31.02 ID:rXr/G70T.net]
ならんが(Win10, Win11, PSv5.1 -nop)

PS C:\Users\User5> (ConvertFrom-Json '{"data":"2025-05-19T16:35:42.000Z"}').data
2025-05-19T16:35:42.000Z
PS C:\Users\User5> (ConvertFrom-Json '{"data":"2025-05-19T16:35:42.000Z"}').data.GetType().FullName
System.String

457 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 09:59:36.90 ID:2NJ41Wyd.net]
powershell5とpowershell7で動作が違うね
powershell7だと変換される



458 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 17:10:41.92 ID:NEzFfeHM.net]
大半が5.1しか使わないから7の方が合わせろよって事

459 名前:デフォルトの名無しさん [2025/05/21(水) 18:50:19.37 ID:UAEUk5lE.net]
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/convertfrom-json?view=powershell-7.5#notes

PowerShell 6 以降、 ConvertTo-Json はタイムスタンプとして書式設定された文字列を DateTime 値に変換しようとします。

PowerShell 7.5 では、DateKind パラメーターが追加されました。これにより、タイムスタンプ文字列の変換方法を制御できます。 このパラメーターは、次の値を受け入れます。

460 名前:デフォルトの名無しさん mailto:sage [2025/06/24(火) 00:10:17.72 ID:9HpiqCeZ.net]
powershell7っていつになったらOS標準搭載されるんだろう
スクリプト配れないから困るんだよね

461 名前:デフォルトの名無しさん mailto:sage [2025/06/24(火) 11:26:30.59 ID:F3nFA9Ml.net]
配ればいいじゃん
7で動作確認してますって書いとけばいいだけ

462 名前:デフォルトの名無しさん mailto:sage [2025/06/24(火) 11:45:12.25 ID:jKpO0eO6.net]
その小学生低学年みたいな書き込み必要か?

463 名前:デフォルトの名無しさん mailto:sage [2025/06/24(火) 12:05:00.87 ID:KEAdRoBs.net]
いつになってもされないよ
Windowsのサポート期間と合わないから、標準で入れたところで結局塩漬けされて第二のPowerShell5になるだけ
そして最新のバージョンのPowerShellは今以上に誰も使わなくなる
.NET4.8のサポートが終了する頃にはとっくにPowerShellは開発終了してるだろうし、無理に移行させる理由がないんだよ

464 名前:デフォルトの名無しさん mailto:sage [2025/06/24(火) 12:24:16.18 ID:uXNyGdUq.net]
OS標準搭載とか安定が必要なのはv5を使え、v7は破壊的変更を加えながら育ててくって棲み分けになってるから標準搭載はナイだろうなあ

465 名前:デフォルトの名無しさん mailto:sage [2025/06/24(火) 18:03:39.76 ID:sjc0o4g2.net]
6以降はWindowsファーストでUNIXでも動くシェルとしてわりとユニークな立ち位置なのでそれなりに存在価値はあり、
MSスタックどっぷりな人間がAzureをはじめとしてクラウドでLinuxに触れざるを得ないときのハードルを下げるのに役立っている
Winのオンプレ鯖やPCのシェルとしては5までで終わり

466 名前:デフォルトの名無しさん mailto:sage [2025/06/24(火) 19:36:57.27 ID:ZrkIV361.net]
.NET Framework 4系(4.8.x)がWindowsに同梱され続ける限り、PowerShell 7.xが標準になることはなさそう
Unicodeの年次アプデがもう何年も反映されてなかったり、色々とキツいけど仕方ない

467 名前:デフォルトの名無しさん mailto:sage [2025/06/25(水) 00:38:29.01 ID:6PeRjodX.net]
powershellで攻めた使い方するくらいならpythonで書くよなぁ
インストール不要で動くという最大のメリットがない7系はpowershell好きにしか響かないと思う



468 名前:デフォルトの名無しさん mailto:sage [2025/06/25(水) 13:28:46.57 ID:zWuAHPd0.net]
>>467
逆にpowershell7をインストールしないメリットて何だ

469 名前:デフォルトの名無しさん mailto:sage [2025/06/25(水) 15:20:42.55 ID:TZWJXUbx.net]
Pythonをインストールしないメリットと似たようなもん






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<192KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef