探検


PowerShell -Part 7

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

次スレは>>980が立ててね!!
2023/11/29(水) 20:26:02.61ID:aabs5txO
ドライバのinfファイルに署名がない古いハードを使うために
オレオレ証明書を作って勝手に署名する方法があるが
ググって出る手順のままではダメでいまはWindows Design KitとWindows SDKが必要で
SDKにあるmakecertコマンドはマイクロソフト公式に推奨されないとも…
PowerShellでできるからということらしいがどう使ったら同じ結果になるかはわからなかった
makecertのような非推奨コマンドと1対1のPowerShellでの使用例ってどこかにないだろうか
今後同じような事態に陥った時のため備えておきたい
マイクロソフトのサイトにはオプションの説明はあるけど
makecertとの対比表とかはない
2023/11/30(木) 19:34:57.73ID:4nwqW1NG
powershell関係あるのかしら
古い環境そのものやP2V化して動作確認取れる環境を保存していくのが簡単だよ
ドライバへの署名はあくまで1企業の都合という事をお忘れなく
4デフォルトの名無しさん
垢版 |
2023/12/01(金) 21:00:19.47ID:0gNLMIqi
直下にあるファイルをgciの-Includeでフィルタリングしつつ取得する際に
Get-ChildItem -Include *hoge*.txt
はだめで
Get-ChildItem -Recurse -Include *hoge*.txt
-Recurseを入れると動くのはなぜですか?
サブディレクトリを含まない直下のみのファイル検索なら-Recurseなしでもいける認識なんですが間違ってますか
2023/12/01(金) 21:20:55.43ID:Jz3SJDE5
>>4
gciで-Includeを使う場合gciに与えるデフォルト引数としてアスタリスク「*」を含んだパス名が必要なんだよ特に書いてないけど
つまり「Get-ChildItem -Include *hoge*.txt *」で意図通りになるはず
というかね、-Includeなんか忘れていい。フィルタならwhere-objectでやった方が判りやすい
gci | where Name -like "*hoge*.txt"
コマンドレットは変な仕様が多いから妙だな…と思ったらそれ以上深入りする必要はない
2023/12/01(金) 22:24:22.03ID:nrjrox6C
そもそもワイルドカードの単純なフィルタならデフォルトの-pathでできるから-includeとか基本使わないな

learn見たら「-includeは-pathの末尾が*じゃないと動かない(-recurseなら省略可)」ってはっきり書いてたわ
2023/12/01(金) 22:30:34.62ID:S2lEQVa3
ファイルシステム側に検索オプションを指定するのが-Filterで
PowerShell自信でフィルタリングするのが-Includeだっけ、懐かしい話だ
2023/12/02(土) 08:48:18.48ID:Fkw0aBk3
gciの表示が間延びしてるのを詰めたい
ModeとLastWriteTimeにあんなに幅いらんやろ
9デフォルトの名無しさん
垢版 |
2023/12/02(土) 20:49:53.53ID:CMdctbaC
4ですみなさんありがとうございます
当然質問する前にLearnで確認していたのですが、てっきりワイルドカードも使えるよ!ぐらいのニュアンスだと思っていました
大人しくwhere-object使います。すっきりしましたm(_ _)m
2023/12/02(土) 21:42:01.24ID:B4ObjCpy
>>8
Format-Table -AutoSize
2023/12/03(日) 07:28:03.75ID:tKLbRUl7
すまんコマンド追加で整形したいんじゃない
デフォルトの形式をいじりたい
2023/12/03(日) 09:12:08.68ID:GWzH2m5A
about_Format.ps1xml
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_format.ps1xml
2023/12/03(日) 09:40:08.91ID:tKLbRUl7
Get-FormatData -TypeName 'System.IO.*' -PowerShellVersion $PSVersionTable.PSVersion | Export-FormatData -Path fd.ps1xml
gc .\fd.ps1xml | % { $_ -replace '7', '5' } | % { $_ -replace '26', '20' } | % { $_ -replace '14', '12' } > fd-mod.ps1xml
Update-FormatData -PrependPath .\fd-mod.ps1xml

としてみたら全然違う結果になってしまった
出てきたものの数字を変えるだけじゃだめなのかな
2023/12/03(日) 13:55:42.15ID:tKLbRUl7
なぜTable形式でなくList形式になるのでしょうか
2023/12/03(日) 17:41:11.89ID:tKLbRUl7
ファイルとディレクトリが混ざってるからだった
あとは日付と時刻を詰めたい
16デフォルトの名無しさん
垢版 |
2023/12/05(火) 09:46:48.52ID:RGe8cD49
引数付きエイリアスの作り方を教えてください

'ABC' > file
tar -c -f - file | tar -x -O -f - file

の 「tar -x -O -f」 をエイリアス tarout にして

tar -c -f - file | tarout - file

として使うにはどうするのでしょうか
2023/12/05(火) 14:36:11.77ID:lXd0pnoy
できない
そういうのはfunctionとかfilter作ってやる
2023/12/05(火) 14:53:09.61ID:7QjuGoaz
パラメーターを持つコマンドの代替名
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_aliases#alternate-names-for-commands-with-parameters
19デフォルトの名無しさん
垢版 |
2023/12/05(火) 15:54:15.98ID:RGe8cD49
そこまではたどり着いたのですが苦戦しています
正直言って手も足も出ません
どうすればよいのでしょうか
2023/12/05(火) 21:04:00.28ID:rxI6O073
何がしたいのか知らんけどpowershellのパイプはオブジェクトに変換しないとだからtarが期待する入出力にはならんだろうな
ほれ
function tarout {
tar -x -O -f $args
}
tarout - file
2023/12/05(火) 21:27:27.93ID:7QjuGoaz
>powershellのパイプはオブジェクトに変換しないとだからtarが期待する入出力にはならんだろうな

PSNativeCommandPreserveBytePipe
https://learn.microsoft.com/ja-jp/powershell/scripting/learn/experimental-features#psnativecommandpreservebytepipe
22デフォルトの名無しさん
垢版 |
2023/12/05(火) 21:47:53.20ID:RGe8cD49
>>0020
それは最初に自分で試してだめだったやつですな
パイプでなく標準入力を読もうとしてCtrl-Z待ちで止まるやつ
Windows 10 から tar.exe あるんで試してから回答してもらえると嬉しい

>>0021
PowerShellからネイティブは通る
ネイティブからネイティブは通る
ネイティブからPowerShellは通らない
だからPowerShellでtaroutは書けないってこと?
だとしたらPowerShellくそすぎる
23デフォルトの名無しさん
垢版 |
2023/12/06(水) 09:58:34.06ID:pwwMUfVm
一応整理

PS 1> 'Success' > testfile
PS 2> tar -c -j -f test.tar.bz2 testfile
PS 3> Get-Content -Path test.tar.bz2 -AsByteStream | tar -x -O -f - testfile
Success
PS 4> tar -c -j -f - testfile | tar -x -O -f - testfile
Success
PS 5> . { tar -c -j -f - testfile } | tar -x -O -f - testfile
tar.exe: Error opening archive: bzip decompression failed

PowerShellからのバイトストリームはネイティブに通る (PS 3>)
ネイティブからネイティブもバイトのまま壊れずに通る (PS 4>)
ネイティブからPowerShell(経由でネイティブ)は通らない (PS 5>)

だからPowerShellでtaroutは書けない
Start-Processで頑張れば書けるのかもしれない、知らんけど
進歩はしたがtarout程度に苦労多すぎなPowerShellはくそ
2023/12/07(木) 08:28:41.09ID:c+XrIY2G
beginブロックで$inputを使うとバイトストリームが出てくるようになって欲しい
そしたらtaroutもこう書けるようになるのに

function tarout { begin { $input | tar -x -O -f $args }}

でもこれは難しいだろうな
2023/12/07(木) 15:51:22.78ID:X0+oSYJ4
beginじゃない別のキーワード用意するレベルじゃないと難しいだろうなぁ
2023/12/08(金) 08:18:26.16ID:tWmRPca2
いやbeginブロックで十分でしょ
今はbeginブロックの$inputは無意味なんだから有効活用

難しいと思うのは
・beginブロックに$inputがあったら、そのfunction,ScriptBlockにパイプでバイトよこせマークをつける
・バイトよこせマークがあったらパイプラインでネイティブコマンド扱いしてバイトを流す
処理が必要だからで・・・難しく・・・な・・・い、かも
2023/12/08(金) 08:33:10.45ID:xElvY7bj
本気で難しくないと思うならお前が実装してPR送れよ
2023/12/08(金) 20:15:49.14ID:8rS6bPls
公式で7.3にもなって直してないんじゃそんなのを気にしてるのは少数派なんだろ
むしろお前が動くしかなかろうよ
2023/12/09(土) 13:31:46.58ID:F2smNVkX
個人的にはpythonのライブラリ群をそのままPSObjectにぶっこ抜きして動かせるようにして欲しい
2023/12/09(土) 15:21:51.18ID:NdJUV/GZ
Python - Support · Issue #19418
https://github.com/PowerShell/PowerShell/issues/19418
2023/12/09(土) 18:40:01.66ID:F2smNVkX
>>30
なんかそのスレッドはpython使いの声がでかいのかpython主導でpython起動すりゃいいだろ的な話がされてて俺の意図とは違うな
俺の考えはそれとは真逆でpythonの便利ライブラリだけpowereshellで拝借してキモいpython処理系自体を入れたくないのよね
俺の言いたいこと判るよね
32デフォルトの名無しさん
垢版 |
2023/12/09(土) 18:46:30.00ID:iYG1bkmj
キモいpython処理www
キモいのはpowershellじゃぼけww
2023/12/09(土) 19:18:53.30ID:F2smNVkX
>>32
たしかにpowershellもキモいと言えばそうだがpythonとはキモさのベクトルが違うんだよ
>>30にはいい事も書いてある
>PowerShell チームに対して、これらの Python ライブラリをネイティブ PowerShell パッケージの一部として直接実装するよう求めているのであれば、私は同意しなければなりません。
いずれこういう俺と同じ考えを持つ輩がpythonライブラリのぶっこ抜きに成功し
キモいpython処理系が駆除された明るい未来を創り上げてくれる事に期待している
34デフォルトの名無しさん
垢版 |
2023/12/09(土) 20:18:03.05ID:P3Dp1Ib1
$null | %{'hoge'+$_}

これでなんでhogeが出力されるんですか?
Nullになるかとおもったんですが
2023/12/09(土) 21:01:47.88ID:2orRcob9
型を合わせるために、NULLが空文字に変換されるから。

そこでNULLを期待するのはRDBとかの場合だね。(RDBにもよるけど。)
2023/12/09(土) 21:38:52.15ID:NdJUV/GZ
https://learn.microsoft.com/ja-jp/powershell/scripting/lang-spec/chapter-06?view=powershell-7.3#68-conversion-to-string

string 型に値を変換する規則は次のとおりです。

・null 型の値は、空の文字列に変換されます。
37デフォルトの名無しさん
垢版 |
2023/12/09(土) 21:38:52.87ID:P3Dp1Ib1
>>35
なるほど
ありがとうございます

ためしに
$null | %{$_+$hoge}
にしたらNullになりました
+演算子の左辺の型に合わせて右が型変換されるんですね

…PowerShellは難しい
38デフォルトの名無しさん
垢版 |
2023/12/09(土) 21:42:29.77ID:P3Dp1Ib1
>>36
ありがとうございます
2023/12/13(水) 09:57:50.32ID:RVDAjcVA
PowerShellでファイルの詳細なプロパティを編集することってできますか?
評価とかタグとか下のurlに載っている300種類ぐらいの拡張プロパティです
Windows プロパティ - Win32 apps | Microsoft Learn
https://learn.microsoft.com/ja-jp/windows/win32/properties/props

プロパティの取得だけなら
$shell = New-Object -COMObject Shell.Application
$folder = Split-Path $path
$file = Split-Path $path -Leaf
$Getfolder = $shell.Namespace($folder)
$Getfile = $Getfolder.ParseName($file)
$Getfile.ExtendedProperty("System.SimpleRating")
これでできたんですけど
プロパティの編集方法は色々調べてみたんですがわかりませんでした
2023/12/13(水) 21:26:19.77ID:SOLvnyCP
https://www.powershellgallery.com/packages/PSSystemProperties/
2023/12/13(水) 23:49:36.01ID:RVDAjcVA
>>40
インストールでちょっとつまづいちゃいましたが
やりたいことができました ありがとうございます!
2023/12/14(木) 03:02:02.55ID:EBZTu/MN
中見たら7時代のWindows-API-Code-Packとやらを拾ってきて使うのか
本来シェル名前空間からやれそうな事なのにWritePropertyへ辿りつくまでかなり遠回りしたな
NGNG
あぼーん
2023/12/16(土) 07:52:34.43ID:fGCT2KhW
ps1ファイルをユーザーに手軽に実行してもらう方法ってないですかね

batだと単にダブルクリックするだけでいいところが、
ps1だとショートカット作って↓↓をくっつけてと、とても運用に耐えられないんですが
「powershell.exe -ExecutionPolicy Unrestricted 」
2023/12/16(土) 08:42:06.64ID:5tZpbEW3
>>43
これならできそう
2023/12/16(土) 09:34:51.52ID:pgUnJUCg
>>44
ググればバッチファイルにPowerShellスクリプトを埋め込む方法が見つかるよ
2023/12/16(土) 10:07:55.43ID:fGCT2KhW
>>46
ps1単独で解決できないものか
将来性を考えて、ps1使ってみようと思ったが、
バッチやvbsの助けがないと使いにくいんじゃイマイチだな
2023/12/16(土) 10:42:25.24ID:nDmmdgrP
ps1はコード署名して、グループポリシーで証明書配付しよう
2023/12/16(土) 12:13:16.06ID:fGCT2KhW
>>48
そこまでするなら、スクリプトよりexe作った方が早・・・
2023/12/16(土) 12:35:03.91ID:K5lUjnCI
>>43
やってみない手はない
2023/12/16(土) 16:03:42.74ID:XRhqtdk+
埋め込むやつって結局iex経由の特殊環境だから一部の変数とか使えなくて困る
無理に使わなくていいよ
2023/12/16(土) 23:27:25.62ID:yw6xDge+
横からすみません
>>40
のインストールにチャレンジしたのですが、管理者権限のPowerShellでInstall-ModuleをしたのにImport-Moduleでdllが無いみたいなエラーが出て使えません
どなたかアドバイス頂けないでしょうか
2023/12/17(日) 00:21:34.60ID:OHxpVvei
>>52
下のURLの2つのnupkgをダウンロードして、ファイル名の後ろの拡張子を.zipに変更する
https://www.nuget.org/api/v2/package/Microsoft-WindowsAPICodePack-Core/1.1.4
https://www.nuget.org/api/v2/package/Microsoft-WindowsAPICodePack-Shell/1.1.4

microsoft-windowsapicodepack-core.1.1.4.nupkg.zip
microsoft-windowsapicodepack-shell.1.1.4.nupkg.zip
この2つのzipを適当なフォルダに解凍して、libフォルダその他が作成される事を確認。ここで必要なのはlib配下の*.dllのみ
libフォルダ内の自分のpowershell環境と適合する.NETのバージョンのフォルダから*.dllを取り出してカレントディレクトリに配置
でいけるんじゃないかな
2023/12/22(金) 07:48:19.63ID:wPcChJb5
$PROFILE ってなんなのでしょうか
$PROFILE.GetType() だと String のようですが
$PROFILE | Select-Object * で AllUsersAllHosts などが出てくるのがわかりません
$PROFILE | Select-Object * で何が起きているのでしょうか
2023/12/22(金) 09:01:10.81ID:FudXFPqY
PowerShellはAdd-Memberでオブジェクトにプロパティやメソッドを追加できる
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/add-member

$PROFILE | Get-Member を実行してみればわかるけど
AllUsersAllHostsとかは$PROFILEに追加されたNotePropertyって種類のプロパティ
2023/12/22(金) 09:10:30.60ID:nFOKM4xK
>>54
中身がPSCustomObjectでない変数にもNotePropertyを設定できる
ただしその変数に他の値を代入するとNotePropertyの情報は消えてしまうから用途は限定される
$a = "aaa"
$a = $a | Add-Member -PassThru "Value" "xxx"
$a = $a | Add-Member -PassThru "Value2" "yyy"
$a # aaa
$a.Value # xxx
$a.Value2 # yyy
$a | select *
$a = "bbb"
$a.Value # $null
2023/12/22(金) 09:51:40.03ID:wPcChJb5
('str' | Add-Member -type NoteProperty -Name 'wao' -Value 'Wao!' -passThru).wao
→ Wao!
(123 | Add-Member -type NoteProperty -Name 'wao' -Value 'Wao!' -passThru).wao
→ Wao!

理解した
2023/12/23(土) 21:24:52.21ID:xtnhDuDo
>>56
Add-Member は変数ではなくオブジェクトにメンバーを追加する
"aaa" と "bbb" は違うオブジェクトなんだから "aaa" に追加したメンバーが "bbb" に無いのは当たり前
2023/12/25(月) 07:53:26.01ID:5GC0Dj8P
ネイティブコマンドの出力ってPowerShell界に入るとString列になるけど
Stringのそれぞれにプロパティで元のバイナリ付けて欲しい
2023/12/25(月) 08:58:53.82ID:xlHQ3YOr
>>59
PSNativeCommandPreserveBytePipe
https://learn.microsoft.com/ja-jp/powershell/scripting/learn/experimental-features#psnativecommandpreservebytepipe
2023/12/25(月) 11:02:44.18ID:5GC0Dj8P
バイナリが通るようになったのは
「ネイティブからネイティブ」と「PowerShellからネイティブ」だけ
「ネイティブからPowerShell」に手軽にバイナリ通したい

バイナリ出力ネイティブ | バイナリ入力ネイティブ

として使うバイナリ入力ネイティブ用にラッパーが書きたいのに今は書けない
2023/12/25(月) 12:37:48.60ID:5GC0Dj8P
自分には必要ないから触れなかったけど
バイナリ出力ネイティブのラッパーも書けない
2023/12/25(月) 12:38:42.52ID:5GC0Dj8P
あ、手間をかければ書けるな
2023/12/26(火) 07:36:13.49ID:ghNGRT5G
引数に -i を複数回指定したいので param() を使わずに function を書いています
get-help で SYNTAX に使い方を表示するにはどうすれば良いのでしょうか
2023/12/26(火) 12:19:47.21ID:hM6Ywi/0
about_Comment_Based_Help
ttps://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_comment_based_help?view=powershell-7.4

このページの中の項目で
 スクリプト モジュールでのコメント ベースのヘルプの構文
 コメントベースのヘルプ キーワード
 関数のコメント ベースのヘルプ
 関数構文でのパラメーターの説明
 スクリプトのコメントベースのヘルプ
あたりが参考になるかも
2023/12/26(火) 16:47:47.85ID:ghNGRT5G
paramを使わずにSYNTAXを表示する方法を尋ねたのはそこを見たからでして
方法がありましたら具体的にご教示くださいませ
2023/12/26(火) 19:16:46.24ID:CTT8zMQ8
nugetに上がってるモジュールのソースでも嫁
2023/12/26(火) 21:29:18.59ID:QC0ZGJu/
そもそもなんで -i を複数回指定したいんだろう
引数$i の型を配列にするのとは違うの?
690064
垢版 |
2023/12/27(水) 12:51:53.61ID:1jSqRJ5E
ffmpeg.exeに毎回付けたいオプションがありまして
オプション付きエイリアス代わりのfunctionが欲しかったのです
ffmpeg -f aac -i audio.bin -f hevc -i video.bin -c copy out.mp4
のようにffmpeg.exeと同じ使い方だと嬉しい

ちなみにValueFromRemainingArgumentsで受けようとしても
ffmpeg: Parameter cannot be processed because the parameter name 'i' is ambiguous. Possible matches include: -InformationAction -InformationVariable.
と怒られます
2023/12/27(水) 13:02:29.78ID:X+3+vX99
指定する対象はaudioとvideoと決まってるんだから
-aiや-viにすりゃいい
変態的なffmpegのオナニーに付き合う必要はない
710064
垢版 |
2023/12/27(水) 13:12:15.16ID:1jSqRJ5E
いやaudioとvideoに限らんし個数も不定なのよ
audioが言語別複数で、videoはチャプターごとに分かれて、字幕もあったり
結局ffmpegと同じ使い方ができるようにするのが面倒ない
2023/12/27(水) 13:59:38.84ID:Fe+mtIWC
ffmpegはシーケンスが意味を持つ引数になってるのよね
どういう順で記述するかによって適用される範囲が異なってくる
2023/12/27(水) 20:51:25.44ID:85uYBZGc
なら引数は$argsで受け取って好きなように解釈したらええがな
740064
垢版 |
2023/12/27(水) 22:38:05.51ID:1jSqRJ5E
だからそうしてるのが理解できないのかな
paramを使わないというのは $args を自分で解釈するということ
その上でparamを使わない場合のget-helpの出力について相談したんだが
聞いた相手が想像を超えたバカだったたようだ
邪魔したな
2023/12/28(木) 08:55:34.70ID:xGxlWVWv
PowerShellにはPowerShellの流儀があるわけで
それに合わないことをやろうとすれば苦労するのは当たり前
C言語で関数型プログラミングをしたいって騒いでるのと同レベル
2023/12/28(木) 09:27:10.14ID:i2ZdA1S0
・質問者がget-helpのやり方をスレで質問
・そもそもこうすればいいんじゃね?と別解について疑問があがる
・さほど適した別解はないことが判明
・質問者に対して怒り出す

別に苦労したと文句たれてるわけでもないのに質問者がウザ絡みされて気の毒すぎる
2023/12/28(木) 10:13:47.89ID:DhrTF4+F
助言・回答者に対しキレ散らかすパターン多いな。同一人物か?
2023/12/28(木) 10:20:56.59ID:4ANODT1z
よく見たら>>16のtarと同じ奴か
2023/12/29(金) 08:36:49.58ID:KamNl0ts
PowerShellよりdoskeyのマクロにしたほうが簡単そう
2023/12/29(金) 11:07:50.54ID:HpMDoHHU
get-helpでヘルプを表示させる
コメントベースのヘルプを記述する
param()を使わない
という条件だったら単純にスクリプトの先頭にコメントベースで
.SYNOPSIS または .DESCRIPTION に「-iが複数使える」旨を書けばいいのでは

もしくは
param()を使わず$Argsを自前で解釈しなきゃいけないので
引数の解釈を構築するついでに
$Args.Countがゼロもしくは -help -h -? /h /?
あたりの引数で独自のヘルプを表示させちゃうとか

まぁ普通に考えたらこうならね?
81デフォルトの名無しさん
垢版 |
2023/12/29(金) 15:57:16.18ID:SsN2lKB9
質問して答えにキレ散らかすキチゲエきてるねw
2023/12/29(金) 17:50:55.94ID:6zkU+tYe
>>73 がコントすぎてさすがに擁護できない
2023/12/30(土) 20:28:29.74ID:pfiAiXAK
XMLヘルプファイル用意して参照させればParam()のないfunctionに対し「構文」部分を書ける。
2023/12/30(土) 21:23:05.61ID:pfiAiXAK
PowerShell標準から外れた「引数に -i を複数回指定」みたいな内容を書けるかは知らん。
85デフォルトの名無しさん
垢版 |
2023/12/31(日) 16:06:42.19ID:gGg0M1TZ
国内公式からLenovoのノートPC買ったら何故かISEが英語環境になって意味わからん。
どこに言語設定あるの?当然OSは日本語設定にしてるし、他のアプリも日本語になってる。
これまでLenovoのPCは5台くらい買ってきたのにISEだけ英語になるの初めてなんだが。
https://i.imgur.com/H4NVkKH.png
2023/12/31(日) 17:55:15.89ID:s/6k3+Yx
そういうのsurfaceでもあったな
OSセットアップ時の国設定が半端に適用された状態だから入れ直した方が早いかも
87デフォルトの名無しさん
垢版 |
2024/01/01(月) 01:36:45.15ID:/rCM9JK/
>>85
Windowsは英語版を日本語に切り替えると日本語にならないところがある

だから日本語版でインストールした方がいい

ちなみにいまどきISEを使っているのもよくわからない
2024/01/01(月) 21:51:12.11ID:uj2mjMNR
Windows PowerShell ISEでPowerShell Coreを利用する
https://dev.classmethod.jp/articles/using-powershell-core-in-the-windows-powershell-ise/

勝手にアプリをインストールできない環境なら意味あるかもしれない
89デフォルトの名無しさん
垢版 |
2024/01/02(火) 12:27:48.68ID:TDOOgc4U
powershell iseってのを知らなかったけど起動したらUIシンプルで美しいな
VSCodeもこれくらいシンプルになってくれんかな
2024/01/02(火) 12:49:42.78ID:ztgjURNX
カスタマイズしてシンプルにすればいいと思うよ
俺はどちらかというとVSCodeのほうが機能美を感じる
デフォルトで万人の感性にフィットするモノは存在しない
カスタマイズも嫌なら自分で作るか作らせるか
91デフォルトの名無しさん
垢版 |
2024/01/02(火) 20:24:20.63ID:G9bvfkvl
>>88
ヤベーもの見てるんだなw
2024/01/15(月) 23:56:13.49ID:0fJNPgiU
Class C { $a = '失敗' }

function f { Param([ref]$r); $r.Value = '成功' }

$o = [C]::new()
f ([ref]$o.a)
$o.a

$t = '失敗'
f ([ref]$t)
$t

こんなの聞いてないよ
2024/01/16(火) 12:08:02.87ID:YM90ubox
何が言いたいのかわからないw
コードを実行した結果が書かれてないので
何を言いたいのか知るにはこのコードを実行しなきゃならない
めんどくさいw
2024/01/16(火) 18:55:49.27ID:6T/+PhGk
プロパティがgetterだから
2024/01/17(水) 09:27:27.73ID:HArby8R7
$o | Get-Member を実行してみれば分かるけど$o.aはフィールドじゃなくてプロパティだからな
$o.aのgetter( $o.get_a() )の戻り値を関数に渡しても$o.aの値は変わらない
2024/02/11(日) 23:33:57.66ID:Z05z2D4x
パワーシェルすげえな
仕事がどんどん片付いていくよ
2024/02/27(火) 14:14:12.56ID:JyRut9xW
2つのCSV(どちらも同じヘッダー)で両方に一致するデータ行があった場合にその行を2つのCSVから取り除きたいんだけどどうしたらいいの?
ヘッダーがDate,Shop,Sales だとしてユニークな項目がなく全く同じデータが1つ目のCSVに1行、2つ目のCSVに2行あった場合に2つ目のCSVは1行だけ消したい
Where-object だと2行とも消えちゃう
2024/02/27(火) 18:46:20.00ID:hxHkafQb
2つのCSVをどうやってwhere-objectに渡してんだよ
その2行が消える間抜けコード晒してみなよ
2024/02/27(火) 19:14:40.76ID:JyRut9xW
chatgptに聞いたらそうなった
2024/02/27(火) 22:08:44.15ID:JyRut9xW
# CSVファイルを読み込む
$csv1 = Import-Csv -Path 'csv1.csv'
$csv2 = Import-Csv -Path 'csv2.csv'

# CSV1の各行について
foreach ($row1 in $csv1) {
 # CSV2の中で一致する行を探す
 $match = $csv2 | Where-Object { $_.Date -eq $row1.Date -and $_.Shop -eq $row1.Shop -and $_.Sales -eq $row1.Sales }

 # 一致する行が見つかった場合
 if ($match) {
  # CSV1とCSV2から一致する行を削除
  $csv1 = $csv1 | Where-Object { $_ -ne $row1 }
  $csv2 = $csv2 | Where-Object { $_ -ne $match[0] }
 }
}

# 結果を出力
$csv1 | Export-Csv -Path 'csv1.csv' -NoTypeInformation
$csv2 | Export-Csv -Path 'csv2.csv' -NoTypeInformation
2024/02/27(火) 23:21:34.71ID:j3BJYXF1
わーいできたー

$csv1=gc csv1.csv
$csv2=csv2.csv
#どうせ全一致ならテキストのまま比較すりゃいいだろ

$i=0
foreach($row in $csv1){
$csv2|%{
$j=$k=0
}{
if($_ -eq $row -and $i -eq 0){
$csv1[$i]=$csv2[$j]=$null
$k=1
}
$j++
}
$i++
}
$csv1|sc csv1.csv
$csv2|sc csv2.csv
2024/02/27(火) 23:58:09.98ID:IJ26J3uc
$i1 = "csv1.csv"
$i2 = "csv2.csv"
$o1 = "csv1_out.csv"
$o2 = "csv2_out.csv"
gc $i1, $i2 | group readcount | ?{$_.group[0] -ne $_.group[1]} | foreach{$_.group[0] | ac $o1; $_.group[1] | ac $o2; $_.group[0].readcount}
103デフォルトの名無しさん
垢版 |
2024/02/28(水) 00:21:41.74ID:JjFjLo/S
段階を踏まないのは謎だよな
ファイルをコピーする概念もなさそう
2024/02/28(水) 00:54:14.86ID:hPdEXjNd
これで良かったわ
$csv1=gc csv1.csv
$csv2=gc csv2.csv
$compare=compare $csv1 $csv2
$compare|?{$_.SideIndicator -eq "<="}|% InputObject|sc csv1.csv
$compare|?{$_.SideIndicator -eq "=>"}|% InputObject|sc csv2.csv
105デフォルトの名無しさん
垢版 |
2024/02/28(水) 01:32:49.70ID:anWSvM2g
CSVファイルに想定外のデータがあることを考慮しないのか
2024/02/28(水) 02:17:43.88ID:gh65zyvf
わ仕事早い…

csv1の方はDateがYYYY/MM/DDの10桁固定で
csv2の方はDateがYYYY/M/Dで8〜10桁になってて
日付としてみれば同じなんですが1行を文字ででみると違う可能性があります…
後出しですいません
またShopはだいたい一致してるのですが
「ローソン札幌店」と「ローソン札幌」や「ローソンサッポロ」みたいな内容が異なることがあってそこを必ず自前のfunctionの変換リストかましてから比較する予定でした
私の想定を超えるプログラムでfunctionを挟むこともできない
2024/02/28(水) 02:24:06.13ID:yYqm5P+g
カラムの曖昧さとかは全く興味沸かないなあ自分でやんな
2024/02/29(木) 08:30:06.44ID:Qx0i34px
ファイルのサイズが大きければ実装が変わる
109デフォルトの名無しさん
垢版 |
2024/02/29(木) 08:47:23.80ID:8KhlEQjj
チンコのサイズが大きければ実績が変わる
2024/03/01(金) 15:53:36.57ID:bh14ivY9
昨日の少し試しましたが

$compare=compare $csv1 $csv2
$compare|?{$_.SideIndicator -eq "<="}|% InputObject|sc csv1.csv
$compare|?{$_.SideIndicator -eq "=>"}|% InputObject|sc csv2.csv

でうまくいきそうです
ありがとうございます

自分でつけてる家計簿からクレジットで相殺してる項目だけ出力したcsvと
三井住友のVpassの明細(ファイルの日付的には翌月)を突き合わせを自動でやって7割ぐらい減ってくれたらいいなと思って
AIにプログラム書かせたらすぐにできるかなと思ったけどAIもまだまだアホでした

土日に頑張ります
111デフォルトの名無しさん
垢版 |
2024/03/02(土) 23:39:14.56ID:XQV1Pqn6
目的よりも手段にこだわっていると思われる

テキストファイルとPowerShellだけで、イレギュラーなデータがあるかもしれないデータを操作をするのは、かなり面倒なやり方だぞ。
112デフォルトの名無しさん
垢版 |
2024/03/02(土) 23:40:34.42ID:XQV1Pqn6
>>110 はキャラクタセットも気にしてなさそうなんだよな
2024/03/03(日) 03:11:25.14ID:CrVe/94r
行比較が出来るようになれば対象が何だろうが応用できるだろ
話はとっくに終わってんのよ
>目的よりも手段にこだわっていると思われる
これまんまお前のことじゃね?
2024/03/05(火) 01:41:57.29ID:Mm4X91cX
そんなに複雑なら、シェルの範囲を超えている。
Ruby など動的言語の出番

>>106
RubyのCSV では、コンバーターで変換器を自作する
2024/03/06(水) 05:34:48.47ID:oDRlZbsC
Ruby では、2024-01-01 のみ、Date 型へ変換できる。
2024/1/1,2024/01/01,2024-1-1 は変換できない。
以下のように、自分で変換器・コンバーターを定義すれば変換できる

でも表記揺れは別の処理として、最初に一括して変換した方が安全

require 'csv'

input_csv = <<"EOT"
2024/1/1,2024-1-2
2024/02/01,2024-02-02
EOT

# Date 型へ変換する
proc = Proc.new do |field, field_info|
case field_info.index
when 0 then Date.strptime( field, "%Y/%m/%d" ) # 0列目
when 1 then Date.strptime( field, "%Y-%m-%d" ) # 1列目
else
field # 処理なし
end
end

options = { :converters => proc }

p CSV.parse( input_csv, options )

出力
[ [#<Date: 2024-01-01>, #<Date: 2024-01-02>],
[#<Date: 2024-02-01>, #<Date: 2024-02-02>] ]
2024/03/06(水) 07:42:44.20ID:wzhaiXwv
PowerShellだと何も考えずにDateTime変換できるのに、Rubyだとそんなに手間かかるのか
もうそんな言語使うの止めて大人しくPowerShell使ったら?
2024/03/06(水) 17:02:39.85ID:8FQ+1AZx
すいません初心者でとんちんかんな質問だったらごめんなさい
PowerShellからarduinoにデータを送ってOLEDで表示するセンサーモニターを作ってます
CPU・GPUの使用率や温度は取り出せて表示できたのですが
FPSってどこからか取り出す方法ってありますか?
使用率や温度と違うのでPresentMonやAfterburnerからGet-Counterで取得する?
とか考えて調べてるのですが分からなくて
とんちんかんなこと言ってたらすいません
できるできない含めて教えてください
118115
垢版 |
2024/03/07(木) 01:47:21.31ID:Z/86eyX0
基本的に、Go でも、こういうのしかない

2024-01-01
2024-01-01 15:01:01

それか、RFC 3339, RFC 3339 Nano

これら以外を使っているシステムは、バグるからダメ!
2024/03/07(木) 01:55:49.10ID:yhOhiWWp
>>117
FPSて。要するにモニタのリフレッシュレートが欲しいんじゃろ?
ほれ
$RefreshRate = Get-WmiObject -Class:Win32_videocontroller | Select-Object -ExpandProperty CurrentRefreshRate
2024/03/07(木) 10:15:46.32ID:s2RGChkv
>>119
返事ありがとうございます
言葉足らずですいません
頂いた情報は現在設定しているリフレッシュレートが表示されるようです
欲しいデータはGeForce ExperienceやMSI Afterburnerで画面上でオーバーレイさせて
表示しているリアルタイムのFPSとして表示されている数値なんです
FPSやフレームレートで検索してましたがリフレッシュレートでも探してみます
2024/03/07(木) 10:15:52.25ID:s2RGChkv
>>119
返事ありがとうございます
言葉足らずですいません
頂いた情報は現在設定しているリフレッシュレートが表示されるようです
欲しいデータはGeForce ExperienceやMSI Afterburnerで画面上でオーバーレイさせて
表示しているリアルタイムのFPSとして表示されている数値なんです
FPSやフレームレートで検索してましたがリフレッシュレートでも探してみます
2024/03/07(木) 10:51:01.07ID:s2RGChkv
連投してましたすいません
引き続き皆さんの知恵を貸してください
2024/03/07(木) 13:04:08.87ID:9xBYf94s
まずそれらがfps値返すようなAPI持ってるか調べなよ
無いなら値として取得は無理だろうね
fps表示部分が単色ならそのエリアをキャプチャして数字認識でもした方が早そう
2024/03/07(木) 14:35:34.66ID:s2RGChkv
>>123
ヒントありがとうございます
APIを調べてみたらNVIDIAにNVAPIと言うのがありました
ここからどうやって取り出すか調べてます
もし良かったらもう少し何かヒントをください
2024/03/07(木) 17:21:43.79ID:9xBYf94s
もうpowershell関係ないがPresentMon64に計測対象のPID渡せばfps取得できるみたいね
2024/03/07(木) 17:56:53.13ID:YZU0b9T9
>>125
はいPresentMonでもFPSを取れるみたいなのは調べました
ただ、今arduinoㇸpowarshellからCPUGPUのデータを
受け取ってたのでそこと一緒に入れる方法が見つけられなくて
127110
垢版 |
2024/03/07(木) 22:55:03.61ID:PPl+ScPv
Add-Type -AssemblyName System.Windows.Forms

function ConvertShopName([string]$shopName) {
 switch -Wildcard ($shopName) {
  "ファミリーマート*" { $shopName2 = [regex]::Replace($shopName, "(ファミリーマート)([  ]*)(.*)(店)", { $args.groups[1].value + " " + $args.groups[3].value }) }
  "ローソン*" { $shopName2 = [regex]::Replace($shopName, "(ローソン)([  ]*)(.*)", { $args.groups[1].value }) }
  "セブンイレブン*" { $shopName2 = "セブンイレブン" }
  "マクドナルド*" { $shopName2 = "マクドナルド" }
  "すき家*" { $shopName2 = "すき家" }
  "Amazonで注文" { $shopName2 = "AMAZON.CO.JP" }

  default { $shopName2 = $shopName }

 }
 return $shopName2
}


if ($Args.Count -eq 0) {
 [System.Windows.Forms.MessageBox]::Show("引数にファイルを指定してください", "エラー")
 return 0
}

# 家計簿から抽出した csv ファイルを読み込む
$excelData = Import-Csv $Args[0] -Encoding Default -Header "Date", "Shop", "Amount" |
 Select-Object @{ label = 'Date'; expression = { [DateTime]$_.Date} }, Shop, @{ label = 'Amount'; expression = { [int]$_.Amount } }

# 引数で指定されたファイルをフォルダパスとファイル名(拡張子なし)に分離する
$baseName = [System.IO.Path]::GetFileNameWithoutExtension($Args[0])
$folderPath = [System.IO.Path]::GetDirectoryName($Args[0])
128110
垢版 |
2024/03/07(木) 22:56:30.34ID:PPl+ScPv
# ファイル名から日付に変換する
$targetDate = [DateTime]::ParseExact($baseName + "01日","yyyy年MM月dd日", $null)

# 引数と同じフォルダにある Vpass からダウンロードした csv ファイル(ファイル名は翌月) を読み込む
$vpassFile = $folderPath + "\" + $targetDate.AddMonths(1).ToString("yyyyMM") + ".csv"
$vpassData = Import-Csv $vpassFile -Encoding Default -Header "Date", "Shop", "TotalAmount", "Type", "Count", "PaymentAmount", "ShopDetail" |
 Select-Object @{ label = 'Date'; expression = { [DateTime]$_.Date } }, Shop, @{ label = 'TotalAmount'; expression = { [int]$_.TotalAmount } }, Type, Count, @{ label = 'PaymentAmount'; expression = { [int]$_.PaymentAmount } }, ShopDetail


echo "実行します . . ."
# 家計簿データの Shop が "自動引き落とし" で Amount がプラスのデータを削除する
$excelDataList = [System.Collections.ArrayList]$excelData | Where-Object { $_.Shop -ne "自動引き落とし" -and $_.Amount -lt 0 }

# 家計簿データの 2項目目が空のデータ行を削除する
$excelDataList = [System.Collections.ArrayList]$excelData | Where-Object { ![string]::IsNullOrEmpty($_.Shop) }

# 家計簿のマイナスになっている消し込みデータをプラスに変換し、店名をクレジット明細側に変換する
foreach($data in $excelDataList) {
 $data.Amount = $data.Amount * -1
 $data.Shop = ConvertShopName($data.Shop)
}

# vpass データの Type, Count, PaymentAmount, ShopDetail が null のデータを削除する
$vpassData2 = $vpassData | Where-Object { ![string]::IsNullOrEmpty($_.Type) -or ![string]::IsNullOrEmpty($_.Count) -or ![string]::IsNullOrEmpty($_.PaymentAmount) -or ![string]::IsNullOrEmpty($_.ShopDetail) }
129110
垢版 |
2024/03/07(木) 22:57:21.99ID:PPl+ScPv
# vpass の Date, Shop, TotalAmount, Type, Count, Count, ShopDetail が null のデータを削除する
$vpassData3 = $vpassData2 | Where-Object { ![string]::IsNullOrEmpty($_.Date) -or ![string]::IsNullOrEmpty($_.Shop) -or ![string]::IsNullOrEmpty($_.TotalAmount) -or ![string]::IsNullOrEmpty($_.Type) -or ![string]::IsNullOrEmpty($_.Count) -or ![string]::IsNullOrEmpty($_.ShopDetail) }

# 抽出後のデータを格納するための変数
[System.Collections.ArrayList]$vpassDataList = @()
[System.Collections.ArrayList]$unknownhDataList = @()

# vpass データのデータを必要な項目のみにする
foreach($data in $vpassData3) {
 if ( $data.Type -eq "1" -and $data.Count -eq "1" -and $data.TotalAmount -eq $data.PaymentAmount -and $data.ShopDetail -eq "" ) {
  $temp = $data | Select-Object Date, Shop, @{ label = 'Amount'; expression = { [int]$_.TotalAmount } }
  $vpassDataList += $temp
 } elseif ( $data.Type -eq "1" -and $data.Count -eq "1" -and $data.TotalAmount -eq $data.PaymentAmount -and $data.ShopDetail -ne $null ) {
  $temp = $data | Select-Object Date, @{ label = 'Shop'; expression = { $_.ShopDetail } }, @{ label = 'Amount'; expression = { [int]$_.TotalAmount } }
  $vpassDataList += $temp
 } else {
  $unknownhDataList += $data
 }
}

# 重複するオブジェクトを探す
$commonObjects1 = Compare-Object -ReferenceObject $excelDataList -DifferenceObject $vpassDataList -Property Date, Shop, Amount -IncludeEqual | Where-Object { $_.SideIndicator -eq '<=' }
$commonObjects2 = Compare-Object -ReferenceObject $excelDataList -DifferenceObject $vpassDataList -Property Date, Shop, Amount -IncludeEqual | Where-Object { $_.SideIndicator -eq '=>' }
130110
垢版 |
2024/03/07(木) 23:00:00.89ID:PPl+ScPv
Add-Content $Args[0] "`r`n`r`n--------`r`n`r`n"
Add-Content $Args[0] $unknownhDataList
Add-Content $Args[0] "`r`n`r`n"
Add-Content $Args[0] $commonObjects1
Add-Content $Args[0] "`r`n`r`n"
Add-Content $Args[0] $commonObjects2


echo "終了しました。続行するには何かキーを押してください . . ."
$host.UI.RawUI.ReadKey()

-----
とりあえず形にはなりました。ありがとうございました!
2024/03/08(金) 02:02:18.05ID:nneR3Lgu
それだけプログラミングできるなら、
データベースもある、Ruby on Rails で稼げ

PowerShell では稼げないだろ
132デフォルトの名無しさん
垢版 |
2024/03/08(金) 19:54:09.17ID:kAti37wZ
無償のRDBに取り込んで操作すれば楽なのにな
SQL Server ExpressもSQLもわからないのかもしれないが
2024/03/08(金) 23:00:20.01ID:swFfFcBY
いや、それならSQLiteでええやん
134デフォルトの名無しさん
垢版 |
2024/03/09(土) 21:26:55.41ID:HJGXBhOf
>>133
それマイクロソフト製品じゃないぞ?
2024/03/10(日) 01:11:42.47ID:AxZkOQF1
sqliteはnugetから落とせるだろ
2024/03/10(日) 02:22:29.61ID:dZzOrK8S
マイクロソフト製品じゃないとダメな理由がよく分からない
137デフォルトの名無しさん
垢版 |
2024/03/10(日) 12:24:51.84ID:2l3n+JcC
>>136
マイクロソフトのサポートが対応を渋る
138デフォルトの名無しさん
垢版 |
2024/03/10(日) 12:25:36.50ID:2l3n+JcC
SQL Server Expressを嫌がる理由がわからない
2024/03/13(水) 12:54:32.04ID:dDXeoITb
FPS値を取得したがっていた者です
あれから色々調べてHWiNFOから取得する事ができました
ご協力ありがとうございました
2024/03/14(木) 01:25:06.87ID:3xDTJGqn
ウェブ開発では、Ruby on Rails 一択。
Railsは、PostgreSQL, MySQL, SQLite の3大データベースに対応している。
ただし本番用では、PostgreSQL一択。
SQLiteは開発用・個人用など

AWS Aurora は、PostgreSQL, MySQLに対応している。
SQLiteはブラウザなど、多くのアプリに含まれて使われている
2024/03/14(木) 04:08:32.14ID:XOsoQn4t
ORACLE「え?ワイは?」
2024/03/14(木) 04:11:13.73ID:MTVljuIS
Rubyとかいう20年前の言語w
2024/03/14(木) 14:26:49.02ID:i9kIdifV
デフォで存在してるところが良いんじゃないか
わざわざインストールするのなら今更新規にRubyを入れるのは無いだろうな
144デフォルトの名無しさん
垢版 |
2024/03/14(木) 21:10:47.40ID:xE50NtDY
>>141
オラクル社とマイクロソフト社がクラウドの世界では提携しているのを知らないのか?
2024/03/15(金) 03:50:52.94ID:d5IiPK+0
「主なRDB」でググった結果
Microsoft SQL Server.
Oracle Database
PostgreSQL.
MySQL
Amazon Relational Database Service.
IBM Db2 Database.
2024/03/15(金) 08:13:53.75ID:X0BgzxQ9
まだ続くの?家計簿に適してるのはどれよ
2024/03/15(金) 19:27:44.40ID:Yppsp93L
家計簿レベルなら1ヶ月に多くても1000件ないでしょ
csvをそのままOS標準で使える言語で処理するのがいいよ
148デフォルトの名無しさん
垢版 |
2024/03/16(土) 23:37:28.12ID:5O1O3AvE
>>147
複式簿記というものを知らないのがバレているぞ
149140
垢版 |
2024/03/17(日) 01:43:19.61ID:02imyFwJ
複式簿記の自作なんて無理。
テーブル数も、100 ぐらい行きそう

総勘定元帳とか、複数のテーブルを紐付けしないといけないから、
プログラムがめちゃめちゃ複雑。
これは有料の会計ソフトを使うべき

自作では、単純な単式簿記しかできない

Ruby のCSV Table や、データベースを使うなら、Ruby on Rails とか。
Railsなら、3大データベースに対応している

参照、>>140
2024/03/17(日) 10:50:03.64ID:b6WSYS3s
Rubyガイジってどこにでもわくんだな
トコジラミ並み
2024/03/19(火) 02:21:32.51ID:ilfn8WqH
>>97
Ruby のCSV.Table で作ってみた

https://paiza.io/projects/7dyw8_lDWimUANwD5E5GSw?language=ruby
2024/03/19(火) 13:20:31.92ID:xCYlYIv4
このスレは

PowerShell -Part 7

です
2024/04/05(金) 00:59:22.85ID:VnIedoxP
Set-ExecutionPolicyとSudoって何が違うん?
とあるps1ファイルを実行する時にそのプロセスだけ実行ポリシーを変更するSet-ExecutionPolicy -ExecutionPolicy Bypass -Scope Processを実行後にxxx.ps1を実行してるんだが
Sudoが実装されたし楽ちんになるなとSudo xxx.ps1を入力するとエラーになる
どっちも一時的にパーミッションを変更してアクセス権限を付与するコマンドだと思うんだが何が違うんだ?
154デフォルトの名無しさん
垢版 |
2024/04/05(金) 01:03:46.96ID:Lw8p7kTG
窓の杜のニュース記事だけど、ここの情報参考になる?
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1579041.html
155デフォルトの名無しさん
垢版 |
2024/04/05(金) 01:55:57.21ID:3ECyzj96
>>153
そもそもいつからあなたのなかでは、ps1ファイルが実行形式ファイルになったのか?
2024/04/05(金) 20:13:09.22ID:Uri/y4c1
Powershell コンソールで、xxx.ps1 とするとエラーになる!

パス付きで、./xxx.ps1, .\xxx.ps1 か、
powershell ./xxx.ps1, powershell .\xxx.ps1 なら実行できる
157デフォルトの名無しさん
垢版 |
2024/04/06(土) 01:56:00.53ID:q9eV9Q7I
だいたい間違って実行してしまわないような仕様にしたのがわからない世代がいるのか

ダブルクリックのような感覚で簡単実行なんてUACすら邪魔だと思ってんのかな?

自分で作って自分かミスして自分だけの問題で終わるならかまわないが、そんな趣味でPowerShellを使っている人間なんてほとんどいないと思う。
158デフォルトの名無しさん
垢版 |
2024/04/06(土) 01:58:23.66ID:q9eV9Q7I
コマンドレベルまで作り込んでテストされつくされているものと、自作のスクリプトをPATHに設定してどこからでも実行できるものが同列とはおそろしいな
2024/04/06(土) 02:15:20.68ID:9cPJ1AnL
vscodeのターミナルと、windowsターミナルで同じpowershellでも認識できるコマンドが違うのなんでだろ
プロファイル見るとそれぞれ同じpowershellのexe参照してるのに
160デフォルトの名無しさん
垢版 |
2024/04/06(土) 02:50:42.29ID:q9eV9Q7I
>>159
VSCodeはWindowsの一部じゃないぞ?

VSCodeアプリケーションは、同じような動きと結果をマネているだけで、エミュレーションのようなことをしているのだから、完全に同じようにするのは困難。
2024/04/06(土) 02:58:46.88ID:Zc90rRma
大体ps1の1って何なのとか
vbsやcmdやらがそのまま実行できるのにps1だけ半端に縛るのもおかしな話だし
>間違って実行してしまわないような仕様
こんなのいつ決まったんだ
MSでポリシーが統一されてるようには全く思えないんだが
2024/04/06(土) 07:02:00.61ID:jPXaIytz
世を取り巻くセキュリティ事情が日々刻々と変わっているのにかなり先発のvbsやcmdと同じじゃないからおかしいとな
少なくともある程度シェアを占める見込みがあるのだし前例踏襲に固執して0か100か思考に陥るほうがまずい
そういう脊髄反射的な他責や論点ずらしの癖は周囲を白眼視させるだけじゃよ
2024/04/06(土) 07:25:25.77ID:6zl9Uxmg
>>161
>>間違って実行してしまわないような仕様
>こんなのいつ決まったんだ
powershellが出たばかりの頃に中の人が言ってたよ
2024/04/06(土) 08:19:52.54ID:NGHFFTyQ
>大体ps1の1って何なのとか

バージョン1の事
元々の計画ではPowerShell2向けのスクリプトファイルは.ps2にするつもりだった
2024/04/06(土) 15:04:28.66ID:M3AJuz+l
拡張子にバージョン含めるアホは初めて見たかも
Windowsの技術者の発想ではないね
Powershellはこの拡張子含めて起動周りだけ残念
2024/04/06(土) 20:16:29.68ID:qfnATLfz
まぁMSはOSも言語も開発環境も既に人気もなく寿命もつきようとしてるから
Windows最後の砦だったゲームもValveがProtonとSteam OS作ったからLinuxでほぼすべてのゲームが動いてパフォーマンスもWindowsより良い場合もある
ただしあくまでエミュレートだからカーネルモードで動くアンチチートだけは動かなくてフォトナやヴァロやApexなんかの人気FPSが動かなかったり永久BAN対象になる
まぁこれも時間の問題でWindowsが必要とされなくなるのは間近だな
2024/04/06(土) 20:56:33.00ID:9cPJ1AnL
いるよねこういう極論振り回す人
脳内で完結してるから聞く耳を持たない
2024/04/07(日) 09:15:27.80ID:nb2SxK5J
プログラマに限らずIT界隈はMS批判するのがカッコいいと勘違いしてる人多いからね
169デフォルトの名無しさん
垢版 |
2024/04/07(日) 10:22:00.29ID:K0Taf7XF
>>165
まあ、マイクロソフトだから、拡張子を3文字にする慣習が伝統的にあるせいかな。
170デフォルトの名無しさん
垢版 |
2024/04/07(日) 10:23:05.93ID:K0Taf7XF
>>167
いまでもシェアのほとんどがWindowsなのにね
2024/04/08(月) 21:40:31.39ID:bL5gAXu8
PowerShell の ps1 ファイルは 何故 1なのか
https://tech.guitarrapc.com/entry/2013/09/06/220944
2024/04/09(火) 00:15:02.63ID:32z8iBj9
powershell 7.xってどういう立ち位置なんだろ
windows標準では入ってないから、開発者向けなのかな
Rubookは7.2が標準だけど
2024/04/09(火) 03:22:25.95ID:Gy4/KbO3
PowerShell Core(6.0以降) では
・.NET Coreインストール可能なWindows以外のOSでも実行可能
・デフォルト文字コードがUTF8(BOMなし)、改行がLF
・WorkFlowなど機能の一部は使用不可

あと
WindowsPowerShell → PowerShell Coreで破壊的変更あり(PowerShell Core 破壊的変更でBingってください)

C#のソースを流用する場合ジェネリックが使える7.3が便利かなと思います

自分は未だPowerShell Coreに移行出来ていません
2024/04/09(火) 20:15:01.39ID:ru6IFaGR
>>172
解釈はまかせるけど技術ブログでは以下の記載がある
https://devblogs.microsoft.com/powershell/powershell-openssh-team-investments-for-2023/
> As a reminder, PowerShell 7 is built on the latest .NET which does not have the same support lifecycle as Windows. We can’t ship something as a feature in Windows that does not align with Windows’ support lifecycle.
2024/04/09(火) 21:52:45.57ID:yR8KPsJp
用がないなら関わる必要ないんじゃね
OSに標準で入ってる事しかメリット無いんだし
176デフォルトの名無しさん
垢版 |
2024/04/13(土) 22:49:21.10ID:7ey9vG0h
SJISで出力しようとするとエラーで怒られるのはなんでなんですか
仕方がないのでnkf -s --overwriteでしのいでるんですが

うまくいく
>dir | Out-File -Encoding 'utf8' output.txt

どちらもエラーが出る
>dir | Out-File -Encoding 'shift-jif' output.txt
>dir | Out-File -Encoding [System.Text.Encoding]::GetEncoding('shift-jis') output.txt

Out-File : パラメーター 'Encoding の引数を確認できません。引数 "[System.Text.Encoding]::GetEncoding
" は、ValidateSet 属性で指定されたセット "unknown,string,unicode,bigendianunicode,utf8,utf7,
utf32,ascii,default,oem" に属していません。このセットの引数を指定して、コマンドを再度実行してください。
2024/04/13(土) 22:51:19.83ID:7ey9vG0h
shift-jifになってますがjisでもちゃんとエラーになります
2024/04/13(土) 22:52:54.00ID:OrtqC7Lq
コマンドレットの引数と.NETのそれを混同してるのでは
-Encoding Defaultでしょ
2024/04/14(日) 08:27:07.05ID:JqEwLIX+
なんでなんですかと言われても自分で貼ったエラーメッセージに書いてある通りでしょ

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/out-file?view=powershell-5.1#-encoding

どうしてもShift-JISと書きたいならPowerShell6.2以降をご利用ください

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/out-file?view=powershell-7.4#-encoding
180デフォルトの名無しさん
垢版 |
2024/04/15(月) 14:56:57.87ID:PE3M1YJ/
よく知らんけど、UTF8もSHIFT-JISもMS932
ASCIIも、全部半角英数文字なら、
完全に互換性あるよな❓
BOM付UTF8はダメだろうが

ていうか、改行はLF CR LF+CR CR+LF
のどれが正しいの❓
181デフォルトの名無しさん
垢版 |
2024/04/15(月) 15:02:21.24ID:PE3M1YJ/
ていうか、拡張子mp3は音楽で音なのに、
でもてか、拡張子mp4は動画で映像だし、ま、音声も含まれてるけど
もしかして、拡張子mp5は匂いとかになるのかな❓ なんて訳ないよね
2024/04/15(月) 15:11:13.01ID:t9UnzSYj
mp3: MPEG-1 Audio Layer-3
mp4: MPEG-4 Part 14
2024/04/15(月) 22:02:24.55ID:uMyBIzHs
>>180
0x5Cと0x7Eが違うだろ
0x5CはASCIIやUTF-8だと逆スラッシュだけどShift-JISでは円記号
0x7EはASCIIやUTF-8ではチルダでShift-JISだとオーバーライン
184デフォルトの名無しさん
垢版 |
2024/04/29(月) 03:38:58.05ID:xgq67JZI
糞言語晒しハゲ
2024/04/29(月) 21:21:17.91ID:+v7UeRZb
確かにPowerShellには糞な所はあるが
UNIXシェルはもっと糞だからなぁ
2024/04/30(火) 00:48:39.65ID:DiJVRdjR
bashはもっと高級言語っぽく書かせてくれ
2024/04/30(火) 19:49:07.28ID:C0uaYXPq
プログラムスレ自体が
スレ立ての荒らしにあってる?
188デフォルトの名無しさん
垢版 |
2024/05/12(日) 19:06:56.30ID:vKcD+EjR
入力された値(小数点以下の桁数は不明)をそのままの値でコンソールに表示させる方法ありますでしょうか?


入力値 $nyuryoku = 0.0000001
出力 0.0000001

現状
1E-07
189デフォルトの名無しさん
垢版 |
2024/05/12(日) 19:07:09.73ID:vKcD+EjR
入力された値(小数点以下の桁数は不明)をそのままの値でコンソールに表示させる方法ありますでしょうか?


入力値 $nyuryoku = 0.0000001
出力 0.0000001

現状
1E-07
2024/05/12(日) 19:36:08.58ID:09MtL+BO
最初から文字列にしとけばOK
2024/05/12(日) 20:58:46.50ID:XuEaHJPQ
そうだね。逆にE表記の入力も受けるならそっちの対応も必要になる
$nyuryoku = "0.0000001"
[double]$nyuryoku_d = 0
if ([Double]::TryParse($nyuryoku, [ref]$nyuryoku_d)) { # 入力文字列をdouble値に変換できるか確認
$dotpos = $nyuryoku_s.IndexOf(".")
if ($dotpos -ge 0) { # ドット表記
$nyuryoku_d += 0.0000001
$nyuryoku_d.ToString("N" + $nyuryoku_s.substring($dotpos + 1).length) | Write-Host #double値を計算して同桁出力する場合
}
}
2024/05/12(日) 21:52:36.80ID:i2A3IV7D
"{0:f7}" -f $nyuryoku
2024/05/13(月) 11:39:01.69ID:/Hf+00qw
.NetのBigDecimal型を使えば演算も有効数字も期待通りにコントロールできて望むものに合致するかもしれない
194デフォルトの名無しさん
垢版 |
2024/05/14(火) 06:07:17.63ID:91RzY7pD
>>0190
確かにそうですね

>>0191
ありがとうございます。

>>0192
小数点以下桁数が計算できれば行けそうです

>>0193
ありがとうございます。試してみます
2024/05/15(水) 12:16:52.10ID:NKO3JxQw
[System.Covert]::ToDecimal($nyuryoku)
2024/05/15(水) 21:14:15.32ID:dKr+esCZ
[decimal]$nyuryoku
2024/05/15(水) 23:59:01.94ID:thm7xdMe
> $x = "1.00"
> [decimal]$x
1

> [decimal]$y = "1.00"
> $y
1

簡潔でいいなと思ったけど v7.4.2 ではダメだったわ
v5 なら通る
なんでや

> [decimal]::Parse("1.00")
1.00

これならどっちもいける
2024/05/19(日) 09:37:50.88ID:CqmosUS1
1.00.ToString("0.00")
2024/05/28(火) 21:30:03.57ID:3YD/oRc3
https://www.itmedia.co.jp/news/articles/2405/28/news172.html

こういうのがあるからPowerShellはスクリプト実行禁止がデフォルトになっている
2024/05/29(水) 13:49:53.60ID:uKjwQH9U
いやいやいや…ちょっと調べればPowerShellを禁止設定のまま実行なんて簡単なんですけお^^
2024/05/29(水) 20:30:24.77ID:fSXLC2MA
俺はバッチファイル経由で実行するようにしてる
同じフォルダ内のps1ファイルを全て羅列して、どれを実行しますか?みたいな感じのバッチファイル
2024/05/29(水) 21:41:38.25ID:02Fq4mGE
それ意味あんの
2024/05/29(水) 23:35:21.72ID:nyGT0uI2
実行ポリシーに依存しない
2024/05/30(木) 00:25:29.21ID:U4JaIgka
>>199
そのせいで使い勝手が悪く普及しない
ダブクリ実行可能なショートカットは一般ユーザーには作れない
さらにウインドウ非表示実行もできず、VBSを置き換えることもできない
2024/05/30(木) 09:38:23.19ID:BwsQkw0g
>ウインドウ非表示実行

conhost.exe --headless powershell.exe -file foo.ps1
では駄目?
2024/05/30(木) 10:02:25.09ID:KpHhmNZR
非表示にする理由ある?
2024/05/30(木) 12:56:45.30ID:T4GqjJ/d
vbs廃止は神国だわw
2024/05/30(木) 17:48:39.42ID:U4JaIgka
>>205
駄目じゃない、ありがとう
タスクスケジューラーから定期実行する時、VBS以外の選択肢がなくて困ってた
引数の--headlessはどういう意味なんだ?
2024/05/30(木) 22:14:09.65ID:5L9b56Kn
https://github.com/microsoft/terminal/issues/17178
conhost.exe --headlessは終了コードを得られない致命的なバグがあるらしいな
Hiddenで起動する適当なexe作った方が早そう
2024/06/01(土) 09:49:39.74ID:GcLNDseM
>>154
なんじゃこりゃ、どんだけエアプが書いてんだ?
そもそもrunas.exeとsudoの意味論はユーザ切り替えで同一だろ
権限の昇格の概念の無いOS用のsudoと意味論が異なる事を示す為にせめてsudo以外の名前を使えよ

以下win/pwsh環境での突っ込み
>runasはパスワードの入力が必要になる
saps に-cred $me渡せ

>別ウィンドウでターミナルが起動する
-nonew渡せ

>別ターミナル再度コマンドを実行する必要
それはsu相当の動作であってsaps pwshで代替できる

全部やりたいならsaps $prog -runas -cred $me -nonewだろ?

win上のpwsh環境ではsaps上で直交するオプションとして設計された4機能が全部斜交した邪悪の極みみたいなコマンドと化してるぞ
ついでに言うとrunas.exeも若干邪悪…

テストはしてないからなんか俺もエアプしてたら突っ込んでね?
2024/06/01(土) 10:15:49.38ID:rqyUs55u
$progと-args @argsをfunction sudoに包んで渡せばとりあえず望みの挙動を得られるはず
2024/06/01(土) 22:09:53.18ID:olGfUeGO
俺の環境だと-NoNewWindowと-Credential両方指定すると新しいウインドウが開いちゃうんだが
2024/06/04(火) 22:16:09.49ID:GNPHSdGp
>>208
https://www.keyence.co.jp/ss/general/iot-glossary/headless.jsp

ヘッドレスとは、組み込み機器やサーバなど、本来対面で人が操作するためのものではない(または、その必要がない)システムで見られる運用形態のひとつです。コンピュータの場合、キーボード、マウス、タッチパネルなどの入出力機器を接続しない状態で運用すること、また、その状態で運用を行う機器などがあります。
2024/06/05(水) 00:12:03.26ID:nLwXXU6Y
https://eow.alc.co.jp/search?q=headless
例文、怖えぇ〜

【headless】
1. 頭部のない、首を切られた
 ・ I saw a headless dog lying beside the road on my way to school. :
  学校へ行く途中、道端に首のない犬が転がっているのを見た。
2. 指導者がいない
 ・ The terrorist group is a headless organization. :
  そのテロリスト集団は指導者がいない組織である。
3. ・・
2024/06/10(月) 08:02:22.79ID:KfgQc11A
ヘッドレスってCPUをなくすべきでは
2024/06/12(水) 21:40:45.55ID:68xFIGJf
>>210
>そもそもrunas.exeとsudoの意味論はユーザ切り替えで同一だろ

今のSudo for Windowsは同一じゃない

https://learn.microsoft.com/ja-jp/windows/sudo/#how-is-sudo-for-windows-different-from-the-existing-runas-command
>現時点で Windows 上の sudo コマンドは、他のユーザーとしてのプログラムの実行をサポートしていません。
2024/06/13(木) 01:51:19.96ID:I2CUi2vW
>>216
>そもそもrunas.exeとsudoの意味論はユーザ切り替えで同一だろ
ここで言及してるsudoはunix系の本家(?)sudoのことやろ
2024/06/19(水) 22:42:22.27ID:pSP80P6j
古い業務システムでデータ入力する時に自動化しようと思ったんだが、
Enterがカーソル位置以降の文字消してフォーカス移動、NumpadEnter(テンキーのEnter)がEnter、
左CtrlがCtrl、右CtrlがEnterという機能になっている。
powershellのSendkeysだとどうやってNumpadEnterか右Ctrlを選択すればいいのでしょうか?
2024/06/19(水) 22:46:04.00ID:rsgeG4yq
VBのSendKeysと変わらないと思う
220デフォルトの名無しさん
垢版 |
2024/06/21(金) 17:49:04.98ID:LwqdtCE6
>>218
無料のRPAでやる方法もあるよ
2024/06/22(土) 01:38:41.92ID:uvHlEJ4P
powershellってlinuxでも使えますっけ?
222デフォルトの名無しさん
垢版 |
2024/06/22(土) 05:23:03.55ID:dw6Bjmix
使えます
223デフォルトの名無しさん
垢版 |
2024/06/22(土) 19:51:57.56ID:dw6Bjmix
Win10のPowerShellのC#がVS2022のC#とバージョンが違って戸惑う…。
Win11ではそこまで違和感ないのだろうか?

foreach (var item in File.ReadAllLines(fileName).Select((line, i) => $"{i + 1,2}:{line}"))

としたかったのにReadAllLinesも使えないし、 $"{i + 1,2}:{line}"部分も使えない。

何か、隔世の感がある…。
2024/06/23(日) 00:24:22.40ID:Gy0jYBbT
???
225デフォルトの名無しさん
垢版 |
2024/06/23(日) 01:48:23.24ID:iAmtDmVE
PowerShell内蔵のC#スクリプトがOS毎にバージョンが違って、使えない機能があって不便だって話。

hello.ps1

Add-Type -Path .\hello.cs
[Hello]::hello()

hello.cs

using System;

public static class Hello
{
public static void hello()
{
Console.WriteLine("Hello World!!);
}
}
2024/06/23(日) 02:33:27.21ID:QkuO1K/N
まあ現在進行形でメンテされてるからな
むしろOS毎に入るバージョンが違ってくるのは当たり前なのでは…
227デフォルトの名無しさん
垢版 |
2024/06/23(日) 04:10:59.53ID:iAmtDmVE
分ってるけど、心の叫びだよ。

あ、PowerShellアップデートしてReadAllLinesの方は使えるようになった。
今更ファイルストリームでopen/closeとか嫌すぎたからホッとした。
2024/06/23(日) 13:37:48.52ID:ermJYjK6
webアプリのテキスト入力部分にpowershellスクリプトで自動的に文字入力をしています
しかし動作させるタイミングによってIMEが日本語入力になっていたり直接入力になっていたりしています
「無変換」キーに「IMEオフ」を割り当てて文字入力の前にpowershellで自動的に無変換キーを押下させましたが当方の環境では何故か期待通りの結果にならず、やむなくタスクバートレイのIMEアイコンを右クリック(メニュー表示)→「直接入力」左クリックをpowershellで自動でやって実現しています
しかしこの方法はスマートじゃないです
powershellで他のアプリに入力中のIMEの設定を「直接入力」モードにスマートに切り替える方法があれば教えてください
2024/06/23(日) 13:50:30.91ID:e+eCK7bX
望んでいる答えではないと思うがWebアプリなら素直にブラウザのプラグインでJavaScriptを動かす方法を一度覚えておいたほうが幸せになれると思う
安定性も増すしやれることの幅もかなり広がる
230デフォルトの名無しさん
垢版 |
2024/06/23(日) 13:52:52.91ID:eptuMF0K
>>227
ぷっ
バグがあったら動かないのは当然
231デフォルトの名無しさん
垢版 |
2024/06/23(日) 14:57:30.86ID:nCpb5rpZ
>>228
WindowsFormsあたり使えばできるんじゃないの?と思ってCopilotに聞いてみた

Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;

public class ImeControl {
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();

[DllImport("user32.dll")]
public static extern int ImmAssociateContext(IntPtr hWnd, IntPtr hIMC);

public static void DisableImeMode() {
IntPtr hWnd = GetForegroundWindow();
ImmAssociateContext(hWnd, IntPtr.Zero);
}
}
"@

思ってたんと違った
2024/06/23(日) 17:48:41.99ID:ermJYjK6
>>231
有難うございます
一回り難しそうですが、試しながら参考にさせて頂きます
2024/06/23(日) 18:39:00.79ID:QkuO1K/N
肝心のアレが入ってないからまともに動かなそう
AIをもっと虐めないとだよ
234デフォルトの名無しさん
垢版 |
2024/06/23(日) 23:34:40.87ID:iAmtDmVE
>>230
バグじゃなくて、互換性の問題。
古いのC#の文法を使えば良いとは言え、あんまり逆行したかったん。
235デフォルトの名無しさん
垢版 |
2024/06/23(日) 23:46:54.32ID:iAmtDmVE
xあんまり逆行したかったん。
oあんまり逆行したくなかったん。
236デフォルトの名無しさん
垢版 |
2024/06/24(月) 00:41:48.16ID:sso3G8sO
>>221
使えます。
237デフォルトの名無しさん
垢版 |
2024/06/26(水) 17:27:29.44ID:qsKWsaPH
地味にハマったからPowerShell7.5PrevewでC#コード実行の注意点書きこ。

・$Argが$argsに。(ここまではいい)

・$argsに格納されるコマンド引数がカレントディレクトリではなく、「PowerShellを起動したディレクトリ」になっている。
(なので、初期はPowerShellの本体があるフォルダー。しかもcdでカレントディレクトリ変えても、コマンド引数のディレクトリは変化しない)

解決策
(hoge.ps1は$argsを使っているスクリプト)

pwsh hoge.ps1 arg1 arg2

の様にPowerShellを起動してからスクリプトを実行すると、コマンド引数のディレクトリも(そのシェルを起動した時点の)カレントディレクトリに変わる。

238デフォルトの名無しさん
垢版 |
2024/06/26(水) 17:31:44.50ID:qsKWsaPH
あ、C#はPowerShell7.5で $"{}"(文字列補間式)使えるようになった\(^_^)/
2024/06/28(金) 09:33:29.65ID:bVzHKq+e
過去に作られたスクリプトなのですが、
$script=(New-Object System.Net.WebClient).DownloadString("https://○○/dir/file1.js")
として別Webサーバからスクリプトを毎回ダウンロードしていたのですが、
そのWebサーバが廃止されるということで、
そのfile1.jsをPCにダウンロードして、それを毎回読み込ませるようにしたいです

$script=Get-Content .\file1.js
としてみましたが、ファイルは読み込めているようですが、
その後の処理でうまく動作しません

何か方法ありますでしょうか
2024/06/28(金) 21:59:51.65ID:1ppaObvA
file1.jsのエンコーディングはどうなってるの?
2024/06/28(金) 23:09:31.36ID:YK96fiDO
>>237
説明が分かりにくい。
たぶん昔からよく混乱の元になってる
$PWD(*-Location)のカレントディレクトリと
[Environment]::CurrentDirectoryのカレントディレクトリの
両方を意識しないといけない問題について調べたらいいと思うよ。
>>239
DownloadString()の戻り値の型は[string]で
Get-Contentは大抵[Object[]]だから型の違いで動作変わってんじゃないの。
Get-Content -Rawにしてみたらどう?
2024/06/29(土) 12:31:22.88ID:AKI9JxZ5
カレントディレクトリという甘えた幻想は捨てろ
2024/07/07(日) 11:58:14.30ID:L0BIfwX5
カレンちゃんとディレクトリしたい
2024/07/07(日) 13:02:55.78ID:LfIamK5n
Get-Item カレンデバイス
2024/07/07(日) 22:31:52.21ID:gAixcUjS
カレンちゃんって誰だよ競走馬じゃないんだぞ
2024/07/08(月) 19:41:40.15ID:f8BMTbPy
きんモザ
2024/07/18(木) 01:02:53.21ID:X/v3DPD5
windows10から11に変えたらwindows10ではちゃんと動いていたスクリプトが動作しなくなりました。
ショートカットに「powershell -file スクリプトのフルパス」と書いて目的のファイルをD&Dして使用しています。
ISEからだと一応動作して「引数が足りません」になるんですが、ショートカットからでは一瞬ウインドウが開くだけで何も起きません。
-NoExitをつけてもウインドウが閉じてしまいます。閉じるのが早すぎて正確にはわかりませんがウインドウには何も表示されていないようです。
「consolehost_history.txt」がログのようなので見てみたんですが、何も実行されていないようです。
管理者権限でpowershellを起動してから「スクリプトのフルパス "引数になるファイルのフルパス"」では正常に動作しました。
powershell.exeを右クリックで管理者権限で実行にチェックを入れても動作せず。
windows11になってからpowershellのショートカットを作る方法に変化があったのでしょうか?
248デフォルトの名無しさん
垢版 |
2024/07/18(木) 01:29:27.44ID:T4qee4Qo
>>247
多分まさに>237に書いてる仕様変更の影響かと。
2024/07/18(木) 12:34:31.99ID:X/v3DPD5
>>248
ありがとうございます。 「pwsh -file スクリプトのフルパス」と書き換えたら起動できたんですが、今度は別のところでwindows10では起きなかったエラーが出てしまいました。
$cmfiletxt = Get-ChildItem -Path "$cmtemp" -Recurse -Depth 1 -Filter "$trimfile"
と書いてある行で、
Second path fragment must not be a drive or UNC name. (Parameter 'expression')
というエラーが出ます。
"$trimfile"の中身は例えば「R:\TEMP\cmtmp\amt9996774\アニメA・ダークギャザリング #1「寶月夜宵」 2023-07-10.m2v.txt」です。
windows10では正常に動作していました。
「amt9996774」の所は連携しているソフトがランダムで自動生成するのでこちらからいじることはできません。
どう修正すればいいでしょうか。
2024/07/18(木) 12:46:56.92ID:2XOaIs3w
>>249
変数名が $cmtemp になってるけど、その中身の文字列は e抜きの \cmtmp\ を含むパスなの?
2024/07/18(木) 13:09:10.50ID:X/v3DPD5
>>250
そうです。最初にパスを設定する部分を設けています。
$cmtemp = "R:\TEMP\cmtmp"
252デフォルトの名無しさん
垢版 |
2024/07/18(木) 13:13:45.35ID:g0scKYj2
>>249
ダブルコーテーションで括ってるからじゃね
2024/07/18(木) 14:22:52.00ID:eHTBk2KG
-Filterにパスを指定しちゃだめ、っていうエラーメッセージ。
ファイル名部分を指定するんだよ。(ワイルドカード)
でもWin10でもエラーになると思うんだけどな。
254デフォルトの名無しさん
垢版 |
2024/07/18(木) 14:29:18.66ID:g0scKYj2
>>252
補足
変数をダブルクォーテーションで囲むと
変数の式が展開されてから渡される
変数の中身がファイル名でスペースを含んでたりすると誤動作する
変数に入ってるんだからそのまま変数で渡せばいい
ファイル名がスペースを含んでいても大丈夫

こんな感じだと思う
255247
垢版 |
2024/07/18(木) 18:19:03.04ID:X/v3DPD5
ありがとうございます。結局$trimfileの中身をフルパスではなくファイル名のみにするようにしたら処理完了しました。
…本当にwindows10ではこれで動いていたんですけどね…?
ただし別の問題が発生しています。あらかじめ作業フォルダを指定してその下にサブフォルダを生成、そこに処理したファイルを展開するようにしてるんですが、
指定した作業フォルダ(日本語)が文字化けしており、文字化けした作業フォルダを改めて作成してさらにその下にサブフォルダを作るようになってしまいました。
write-hostで表示する日本語も同様に文字化けしており、サブフォルダの名前は正常なのでスクリプト自体の問題ではないと思います。
powershellのタイトルバーを右クリック→設定→左のアイコンからpowershellを選択→外観→フォントフェイスをMSゴシックに変更、では解決しませんでした。
2024/07/18(木) 18:48:37.59ID:2XOaIs3w
>>255
コンソール側の文字コードの問題だと思うよ
レジストリにCodePageを設定すれば解決するはず(「65001」で検索)
2024/07/18(木) 19:04:19.79ID:eHTBk2KG
pwshが動く時点で普通のwin11じゃない気がする。pwshは一部の物好きな上級者用じゃない?(もうwin11のデフォルトになった?)
pwshのままだと今後も色々問題出るよ。自己解決していける自信がないなら総合的にはwin11の再インストールが手っ取り早いと思う。
2024/07/18(木) 20:08:19.40ID:7Xw39CjT
powershellが動かなかった理由ってOS変えたからデフォルトのExecutionPolicyの問題で弾かれてただけじゃないの
pwshについては設定変更済みで通ったと
そしてv5向けのスクリプトをそのままv7で動かしたから細かい非互換の問題が出たと
259247
垢版 |
2024/07/18(木) 20:55:47.23ID:X/v3DPD5
>>256
やってみましたが結果変わらずです。

>>258
当初ISE経由でも弾かれたのでBypassに変更済みです。

>>257
powershellのバージョンの問題かと思ってMicrosoftStoreからver7をインストールしました。
試しに7をアンインストールして.5.1が強制的に動くようにしてみたんですが、挙動は振り出しに戻っちゃいました。
互換性の問題で言うとAutoHotkeyもうまくショートカットを発行できないソフトが出てきていますね…。
再セットアップで解決するもんでしょうか。
2024/07/18(木) 21:35:09.26ID:eHTBk2KG
pwshを入れたのは後退なので、スタート地点に立てたくらいに思えば。

1. ショートカットのあるディレクトリにで右クリック→ターミナルで開く
2. ショートカット(lnk)を開く

でウインドウが閉じずにエラーメッセージを確認できると思う
261247
垢版 |
2024/07/18(木) 22:55:07.91ID:X/v3DPD5
>>260
出てきたエラーをコピーしようとしたらNGワードに引っかかったみたいなので要約すると、
・名前が正しく記述されていることを確認しろ、パスを確認しろ
・ コマンドは見つかりませんでしたが、
現在の場所に存在します。Windows PowerShell は、既定では、現在の場所からコマンドを読み込みません。
このコマンドを信頼する場合は、".\(ファイル名)" と入力してください。

言われた通りに.入力したら「引数がないため処理を終了します。」となり、一応正常に終了しました。
2024/07/18(木) 23:26:42.40ID:gkVcHWUr
恐らく11から強制的に使わされてるターミナルが悪いんだろうな
MSストアで入るアプリは総じてゴミだから今すぐ使用中止しろ
ttps://qiita.com/dokimiki/items/f1075003cb37f1b542a8
263247
垢版 |
2024/07/18(木) 23:57:38.19ID:X/v3DPD5
>>262
リンク先を試してから、powershellを開いてから実行する方法では修正前のスクリプトで文字化けもせず正常に終了しました。
しかしショートカットのD&Dする方法では変わらず一瞬でウインドウが閉じました。
264デフォルトの名無しさん
垢版 |
2024/07/19(金) 11:00:27.12ID:70UaCPmY
>>263
powershellのスクリプトの最後に pause でも追加しておけばいいんじゃね
265247
垢版 |
2024/07/19(金) 12:40:24.75ID:ct1DQagX
あの…、なんか寝て起きて試したら動きました…。
昨日からマジで何も変えてない…。せいぜいUSB-DACのドライバ当てたくらい?
とりあえずこのまま様子見ます…。色々とありがとうございました。
2024/07/19(金) 15:14:54.49ID:jwlCgmdc
今のターミナルで困ることって何だろう
--headlessが使えないことくらい?
conhostより重いって意見はあるかもしれないけど.NETと比べれば誤差みたいなものだし
2024/07/21(日) 22:11:17.98ID:m0XhNdSd
Windows terminalは普通に優秀だと思うけど
2024/07/21(日) 23:51:02.31ID:vKWhifz8
無変換キーを押すと@が書き込まれること以外は完璧
2024/07/22(月) 09:11:09.38ID:C7pnRrY6
cmdと動作が異なる意味では欠陥
最初にppwershellをコンソールアプリで公開したのは失策
WSH使いからは失笑
2024/07/22(月) 13:17:32.45ID:PeYRIg1J
コンソールホストとシェルの区別がついてないお🐴🫎さんかな
2024/07/27(土) 12:32:42.70ID:+W8EF3Nh
ISEって2019年末時点でオプション機能化とか終息に向かうとか言われてたみたいだけど現行Windows11にも普通にプリインストールされてるよな
終息する話は延期になったんだろうか
まぁ弊社みたいなインストール手続きがクッソ面倒なところでは助かるんですが…
2024/07/27(土) 12:49:12.36ID:KGtSZjqO
収束するには代わりにVSCodeをプリインストールするようにしてくれないと
2024/07/27(土) 15:16:22.47ID:7uwMSqss
削除予定はないよ
今後の機能追加がないだけ

プリインストールしたらしたで欧米人がMS訴えるじゃん?
エディタはどうぞお好きなものをお使いください
未だにVSCodeすらインストール許可が出ない会社ならそこの組織の問題
淘汰されるまでそうしていればいい
客先のサーバーで作業中のエンジニアならスクリプトは事前準備したものだけ使うか一旦課題を持ち帰れ
2024/07/28(日) 21:35:37.31ID:cLn1FmEd
ISEの優位性って何?使ったことないけどvscodeにできないことができたりする?
2024/07/29(月) 07:56:32.32ID:4FIXkUHw
プリインストールされていること
276デフォルトの名無しさん
垢版 |
2024/07/30(火) 00:37:00.12ID:CUjc7QCy
hogehoge.txtの重複するレコードを
powershell -command "get-content hogehoge.txt | sort-object | get-unique | write-host"
みたいにして取り除いています。
重複除去の前に外部コマンドによる処理を追加したくなり、まずファイルからではなく標準入力から読み込んだデータの重複除去に取り組んでいますが上手く行きません。
当初get-contentをread-hostに置き換えればうまく行くかと思いましたがダメでした。
type hogehoge.txt | powershell -command "read-host | sort-object | get-unique | write-host"
考えてみればそれも当然で、いったん標準入力を丸呑みにして溜め込んでおかないとsortもuniqもできないですよね。
MSのサイトで配列に溜め込んでいくみたいな用途に使えそうな命令を探しましたが見あたりませんでした。
なんか解決法ないでしょうか?

あとついでに聞いちゃうんですけどunixのコマンド(wcとかcatとか)をその言語で書き直すみたいな本のpowershell版ってないもんですかね。
2024/07/30(火) 01:55:59.46ID:0EE76/Sc
Out-String -Stream
2024/07/30(火) 11:15:11.79ID:jBvTVZZ/
無理にワンライナーやパイプラインで繋げて書かずに
スクリプトファイルを作ってそれを呼び出す方が柔軟性があって整理もできて使いやすい
2024/07/30(火) 12:15:40.81ID:tWSTSpQm
無理にでもワンライナーやパイプラインで繋げて書くのがPowershellの醍醐味
2024/07/30(火) 12:48:31.64ID:jBvTVZZ/
>>276 みたいに困ったときはスクリプトファイルで
制御構文やら変数やらクラスやら使った方が
色々試し易くて色々整理できていいじゃん
2024/07/30(火) 21:02:35.18ID:EaRTEGq5
[Console]::In.ReadToEnd() -replace '\r?\n$' -split '\r?\n'

その外部コマンドによる処理もPowerShell内でやればいい気がする
282281
垢版 |
2024/08/01(木) 18:57:02.91ID:nKkP9XuY
そういえばと思って試したら$inputでいけたわ。なんで忘れてたんだろ
2024/08/02(金) 09:11:09.42ID:gKkfhLC1
>>276
Ruby で作ってみた

input_str = "5\n11\n33\n9\n0\n9\n11\n"

# 末尾の改行を削除してから、数値型に変換する。
# 重複を排除し、ソートする
input_ary = input_str.each_line.lazy.map do |line|
line.chomp!
line.to_i
end.uniq.force.sort

p input_ary
#=> [0, 5, 9, 11, 33]
2024/08/02(金) 21:54:58.24ID:l/+AFQUJ
Rubyの人来るの遅いぞもう飽きたのか?ww
2024/08/02(金) 21:57:08.30ID:4wv1Q78q
過疎過疎5ちゃんなんかよりツイッタランドで凸でもすれば
2024/09/27(金) 16:52:34.25ID:Qq+DEfW6
新しい Windows11マシンに pwshをインストールして
以前から使ってるファイルを そのままコピーしたら…何故だか起動時設定を読み込んでくれない

…と思って 調べたら

$PROFILE が
以前からのPCでは
C:\Users\(私のユーザー名)\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

に対して、新しいのでは
C:\Users\(私のユーザー名)\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

profileを置くディレクトリが違ってたということ.
pwshのバージョンは どちらも最新(同じ)なのに

…なのですが、特に どちらかで $PROFILEを設定するようなことは していない.
環境変数なども特に設定していないし
Program Files/7 直下には profile的なものは 置いていない
…でもどこかで指定しているのを自分で忘れたんだろうか?
複数マシンを管理するにあたって 面倒なので…とりあえず原因になりうるものを知りたいのです
2024/09/27(金) 18:13:57.62ID:J4fT6PqJ
>286
最新のWindowsにも入ってる「古いpowershell」が原因っぽい. 新しいのを入れても残ってるので そういうことはある
2024/09/27(金) 18:54:54.18ID:dRTmSCrE
>>286
デフォルトの$profileのパス設定が異なるマシンがあってその原因が知りたい、ってことなのかな?
ちなみに、新しいマシン側の$profileは5.x系(いわゆるWindows PowerShell)のデフォルトパスと一致してる
2024/09/28(土) 00:24:19.73ID:xELx2i6V
ExecutionPolicyがRestrictedのままでProfileがロードされないとか?
290デフォルトの名無しさん
垢版 |
2024/09/30(月) 10:14:56.15ID:OEXqADpi
286です すいません、自分の混乱の原因がわかりました。
新しいWindows11のマシンにも5.x系は入っていて、7.xのpwshをインストールしてもそれは残る.
そして、私は タスクバーに「ピン留め」して起動するのですが、pwshを起動した状態でピン留めしても いったん終了させてからアイコンをつつくと 5.x系が起動してしまう…というところに 気がついていなかったというわけです. ピン留めしたのは たしかに7系だったのに. なんだか納得いかない感じ
2024/09/30(月) 10:46:54.62ID:OEXqADpi
ピン留めされるのは「ターミナル」であって、その中で何を起動するのかは 右クリックで選択できるようになっており、そのデフォルトが5.x系であるように見えます。もちろん以上のことがわかっていれば ここから7.xを選んで起動するのも簡単ではあるのですが…これはカスタマイズできるんだろうか
2024/09/30(月) 13:04:09.12ID:AYohfY5N
ターミナルのデフォルトはターミナルの設定画面で選べるよ
既定のプロファイルってやつ
2024/09/30(月) 17:54:24.00ID:OEXqADpi
292← できました!ありがとうございます
…というか、これまで(Windows10)は「ターミナル」じゃなかったということを今日 知りました(笑)
2024/10/01(火) 06:43:45.64ID:/Tad9Lz2
コマンドプロンプトで、where powershell
と入力すれば、powershell.exe の絶対パスが分かる。
だから、絶対パスを書けば、exe を指定できる

C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe

ここに、2つ以上表示されたら、上の方が優先して実行される
2024/10/01(火) 08:34:51.39ID:CEO/MZ1M
ワイ氏、whereというコマンドがあることをパソコン歴20年にして初めて知る
2024/10/01(火) 08:53:10.90ID:lHW1RCWi
Powershell v5はpowershell.exe、v7はpwsh.exeなのでこれらの混在環境でパスの優先順位が問題になることは基本ない
むしろコマンド名を混同したままでは取り違えが起こりそうなので一応
2024/10/01(火) 21:40:49.64ID:+PXXCXjN
20年前のWindowsにはまだwhereコマンドは標準搭載されてなかったから知らなくても仕方ない
一応リソースキットやサポートツールには入ってたけど
2024/10/02(水) 21:22:59.58ID:PTqKnWGQ
20年ぐらい前から個人でPathが通ってるところに ls.bat や which.bat を作って同等のことをやってた
Unix(当時はまだUnixは普通に使われていた)やLinux も普通に使ってるとつい ls って入力していらっとしてしまうから必須だった
299デフォルトの名無しさん
垢版 |
2024/10/14(月) 11:07:36.62ID:iqlRL8W8
>>298
UNX・LinuxのlsコマンドだってシェルやOS依存だぜ?
300デフォルトの名無しさん
垢版 |
2024/10/14(月) 11:10:46.06ID:iqlRL8W8
Windowsの基本知識がないのにPowerShellを使うというのも何がなんだかわからないやつだ
2024/10/14(月) 21:22:43.79ID:6g0FV4Kx
>>299
UNIXでlsが使えない環境があるの?
2024/10/14(月) 22:47:46.01ID:Fd8j7Mhu
Powershellの話をする気がないなら黙れジジイ
2024/10/14(月) 23:07:14.44ID:rwiJ8lRR
>>301
無いのでecho *でやっていた環境があるのだ

そう、あれはLinuxっていうやつだった
2024/10/15(火) 06:06:09.78ID:CzVFQLgH
>>303
スレチ
305デフォルトの名無しさん
垢版 |
2024/10/15(火) 20:55:15.08ID:7T7mXQAC
>>298
PSのcatとUnix系のcatが別物ってくらい違うのがね…。
おまけにDOSコマンドのtypeもPSとコマンドプロンプトで違う。
(PSのcat/typeはget-contentの別名)

PSだとリストを受け取るので、カンマで区切る必要がある。

cat file1, file2, file3

C#で自作したコマンドとも、元からあるDOSコマンドとも違うって…。
MS謹製のIDE(VS)で自作したコマンドと連携撮れないMS謹製のシェルェ…。
2024/10/15(火) 21:47:59.44ID:lPGbp20O
エイリアスに互換性を求める人なんていたんだ
そんなの新しいコマンドを覚えやすくするための糖衣でしょ
DOSみたいなクソダサレガシー環境との互換性を尊重してたら呪縛なんてもんじゃない
シェルスクリプトって古今東西きったねえ一貫性のないもんなんだから拘っても虚しいだけよ
2024/10/15(火) 23:10:10.50ID:qo7/LMKy
>>306
どの言語でもrubyを求める奴がいるように
PowerShellにもUnix系シェルを求めちゃうんだろうな
308デフォルトの名無しさん
垢版 |
2024/10/16(水) 07:29:00.82ID:SZo2N9Nf
>>301
コマンドの実装は違うよ
2024/10/16(水) 09:56:19.21ID:NaAnwllp
>>305
Remove-Alias cat
function cat([Parameter(ValueFromRemainingArguments=$true)][string[]]$Path){Get-Content @PSBoundParameters}

これで文句ないだろ
310デフォルトの名無しさん
垢版 |
2024/10/17(木) 00:37:51.84ID:yqUeq3Bo
PowerShellでLINQをメソッドチェーンで書く方法ってある?
静的メソッドで[Enumerable]::Select()みたいに書くと()が増えてガチャガチャしちゃうのがなぁ…
311デフォルトの名無しさん
垢版 |
2024/10/17(木) 00:38:50.49ID:WrCN832N
>>309
そういうコマンドに出合うたびに毎回そんなの書くのはね…。
そんなこんなでLinux(bash)に落ち着くんだよね…。
312デフォルトの名無しさん
垢版 |
2024/10/17(木) 00:49:20.12ID:yqUeq3Bo
>>311
俺は逆に会社でWindows使う機会が多すぎてLinux(*nix)コマンド側の記憶が消えそうになってるな…
たまにLinux使うとPowershellみたいにパイプラインを文字列じゃなくてオブジェクトが通るつもりで書きそうになる
2024/10/17(木) 01:09:19.82ID:YcyvXrpH
>>311
お前は何を言ってるんだ
catエイリアスを消してbashっぽい動きの関数をcatの名前で登録し直すって内容なんだから
これをprofileにでも貼り付けて使えって意味だろうが
314デフォルトの名無しさん
垢版 |
2024/10/17(木) 02:10:19.27ID:WrCN832N
>>313
うん。
そう理解してる。
PowerShellってよりは周辺環境が追い付いてない印象だけど、まだLinuxでbash触る方が楽かな。
もうしばらく進化を待ちますね。
2024/10/17(木) 11:09:20.30ID:wdGjJarp
スクリプト書くのはbashよりpowershellの方が書きやすいし読みやすい
そしてlinuxでもpowershell使えるしで重宝してる
2024/10/17(木) 21:13:19.55ID:ooYpCywP
スペースとコンマの違い程度で発狂して上から目線でもうしばらく進化を待ちますねって面白い人だなぁ
そもそも進化してないのはUNIXシェルのほうでしょ
2024/10/18(金) 13:56:03.02ID:wVDH4S6Q
space と , はさすがに気付くと思うが
: と ; の違いは老眼にはきつい
2024/10/19(土) 10:49:56.95ID:0/OluZJS
:(コロン)ていう名前が美味しそうな響きなんだよなぁw
2024/10/20(日) 10:17:27.24ID:Y993j978
コロネじゃないんだから
2024/10/20(日) 10:22:09.68ID:/FrbdBj7
マロンかと思った
2024/10/20(日) 13:53:57.93ID:hxgHNqIu
LinuxとかDOSコマンドを、デフォルトのエイリアスでPowerShellコマンドレットに結びつけておくってのは悪手だよなー
他環境利用者の移行配慮ってなら、例えば「cat」を「Get-Help Get-Content」を実行する関数へのエイリアスにするとか、何かやりようあったんじゃないかと思う。
PSv1、v2の出来の悪さ、様々な考慮不足がずっと足引っ張ってると思う。
2024/10/20(日) 18:37:33.24ID:sfhCtbKo
curlとかシンプルな本物使いたいことの方が多いから邪魔なだけ
2024/10/21(月) 01:06:16.28ID:ursFBC+1
エイリアスはハマることがあるので不評
2024/10/21(月) 01:47:50.43ID:9ofaZL13
sh系はともかく、cmdと全く別のコマンド名覚えなおすのも慣れとはいえ面倒なのは確かだからしょうがないんじゃない
補完できても長いものは長かったし
当時からWSLがあれば別だったんだろうけど
2024/10/21(月) 02:22:41.82ID:fVCz7bM3
このスレを見ていれば分かるけど、自分がいまcmdを実行しているのかpowershellなのかpwshなのか分かってないユーザがかなりを占める
そんなごく普通のWindowsユーザーたちがdirやcdで適当にやったらなんか動いたとか、同じコマンドで動くらしいからオレも使ってみようかなとかいったハードルを下げる要素の重要性は無視できない
複数パラメータの区切りがスペースかカンマか?マジどうでもいいよw
Windowsの新しいシェルスクリプトなんて相反するニーズに縛られまくるからどんな仕様にしたところで数え切れない文句が飛んでくる
2024/10/21(月) 21:43:14.36ID:iHmIY3KR
>>324
>当時からWSLがあれば別だったんだろうけど

WindowsでUNIXシェルが使えないから仕方なく欠陥品のPowerShellを作った、とか思ってそう
2024/10/22(火) 00:45:55.83ID:CtvGpoP8
>>326
思考が卑屈すぎるわw エイリアスの話しかしてないよ
2024/10/22(火) 12:24:39.31ID:SSjePDmS
curl など誤解を招きかねないエイリアンは害悪でしかない
% とか ? は可読性上がる気がする
2024/10/22(火) 22:53:22.74ID:trzbvHFT
selectにも記号一文字のエイリアスあってもいいんじゃないかと思う
2024/10/28(月) 21:16:39.09ID:ZTog7VUm
そう思うなら自分で勝手にアイリアスを定義すればいいだけだよね
2024/10/28(月) 21:22:49.73ID:U22PtxVm
各々が好き勝手にエアリアルを使っているとコミュニケーションに支障をきたすから困る
2024/10/29(火) 09:23:16.64ID:Qywuhmt6
> WindowsでUNIXシェルが使えないから仕方なく欠陥品のPowerShellを作った、とか思ってそう
開発の経緯としてはまさにその通りなんだけどな
WindowsでUNIXシェルを整備するプロジェクトが頓挫して、根本的にWindowsに適した設計が必要であるということで生まれたのがPowerShell
なおオリジナルの開発者は現在はGoogleへ移籍し、UNIXシェルの世界へと還っていった模様
2024/10/29(火) 09:29:09.19ID:oyxmU1Yp
cygwinには長らくお世話になった
2024/10/29(火) 19:18:49.19ID:/c01W0NL
>なおオリジナルの開発者は現在はGoogleへ移籍し、UNIXシェルの世界へと還っていった模様
なおGoogleへ移籍後は何の成果も得られてない模様
2024/10/29(火) 23:17:38.65ID:/bXBK+wh
Linuxの管理マネージャやそのシェルのPowerShell化をしていたりして、
そのうちカーネルソースのPowerShellマネジメントレイヤーに取り込まれたり
Fedora、Ubuntuに適用される見込みである
2024/10/30(水) 11:01:45.95ID:cBVsI/1s
Azureならともかく、そんなもんGCP採用するような層にニーズあるかねえ
どう考えてもAzureを利することにしかならずGCPのシェアに対して悪影響しかないだろ
最近は首切りしまくってたのに最上位格エンジニアは気楽なもんだな
2024/10/30(水) 20:31:44.86ID:x0G86HEF
PowershellはAdd-Type辺りの機能は便利だけど言語としてはゴミ
2024/10/31(木) 21:50:30.83ID:uhxgBp24
UNIXシェルはもっと言語としてはゴミなんだよなぁ
2024/10/31(木) 23:02:56.00ID:va++Flqd
普段そういうゴミしか作者の周りになくて間違えて拾ってきちゃったんやな
340デフォルトの名無しさん
垢版 |
2024/11/01(金) 02:03:26.53ID:EQMsSXTB
>>338
シェルはUIだぞ?
2024/11/01(金) 04:01:30.22ID:+lXxXu7p
>>328
gal見てたらcurlだけでなくwgetもiwrだった
2024/11/01(金) 04:58:32.80ID:4H4fm5Ic
エイリアスといえばパラメータのエイリアスにも多分いろいろundocumentedなのあるよな?
-ArgmentListが-argsで通ったりとか規則的な略じゃないやつ、これは短くて分かりやすいからいいが
-argなら曖昧さのない限り頭から略せるという規則通りなんだけど

こういう個別のまとめた文書ってある?
一部は
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_commonparameters
にあるのは知ってる
2024/11/01(金) 09:06:40.20ID:vIWZBp6A
Get-Help -Fullの、パラメータのエイリアス
2024/11/17(日) 09:49:45.91ID:LBdK5SU3
Windows Server 2025 以降で削除された機能または開発されなくなった機能
https://learn.microsoft.com/ja-jp/windows-server/get-started/removed-deprecated-features-windows-server-2025

Windows PowerShell 2.0 エンジンは削除されました。アプリケーションとコンポーネントはPowerShell 5.0 以降に移行する必要があります。
345デフォルトの名無しさん
垢版 |
2024/11/20(水) 17:28:43.06ID:jLoC/a6V
AD一覧をcsv出力すると区切りが半角スペースになってExcelで取り込めない。
ググっても同じ症状の人が出て来ない
2024/11/20(水) 17:56:33.65ID:itZFOqj8
とりあえず-Delimiterで指定すれば?
347デフォルトの名無しさん
垢版 |
2024/11/20(水) 18:05:31.34ID:jLoC/a6V
OutfileってDelimiterできないよね?
Exportだと文字コードをdefaut、utf-8にしても数列で出力されちゃう
2024/11/20(水) 19:09:02.72ID:b8mbz+Om
Out-File? ならその前にConvertTo-Csvで変換してるんじゃないの?
2024/11/20(水) 21:42:00.83ID:KXgtJp1v
powershellのなんちゃってCsvコマンドレットはExcelで扱えるCSVと特に親和性があるわけでもなく、俺俺CSV止まりだからあんま使う価値ないかも
2024/11/20(水) 22:02:13.56ID:KXgtJp1v
ではCSV扱うなら何がいいかと言えばCsvHelperが定番なんだけど、C#や.NETの知識が要るね
AD一覧程度なら自力でフィールドをカンマで区切ったっていいよ
2024/11/20(水) 22:56:49.84ID:+ywVzG00
Announcing the Public Preview of AI Shell
https://devblogs.microsoft.com/powershell/announcing-the-public-preview-of-ai-shell/
2024/11/21(木) 09:11:03.40ID:uYan55MO
CSV変換標準コマンドレットはデータ前後のスペース文字が消えるので
一切データ欠落しちゃいけない場合は注意
2024/11/27(水) 23:16:05.27ID:aNQZM+B9
Export-Csvって自力でクォーテーション外してた時代あるし地味に改良してるけどな
2024/11/30(土) 22:11:49.94ID:LJbTxW4W
Should PowerShell 7.x ship inbox in Windows?
https://github.com/PowerShell/PowerShell/discussions/24340
2024/12/01(日) 13:20:57.08ID:8Yw35ga9
>>354
PowerShell7.xは通常利用されないpwshシェルとして実装されても良いと思うよね
標準シェルをpowershell.exeにしておけば互換性問題無いし

ただ7.xが5.1の互換とか言ってるのはかなり微妙
356デフォルトの名無しさん
垢版 |
2024/12/11(水) 10:15:30.38ID:Bk1Et5xQ
引数の文字数上限って回避方法ってありますか?
複数のフォルダをドラッグ&ドロップして使いたいけどいい方法が思いつきません
2024/12/11(水) 22:01:27.57ID:J5p4fYKY
WSHやjavascript限定ではあるけどファイラーのTablacus Explorer使えば会費できたと思う
358デフォルトの名無しさん
垢版 |
2024/12/15(日) 21:59:46.99ID:D9xraIFr
>>356
ネタだよな?

Windowsはパス文字列の長さの上限がかなり低いので長いパスはWindowsでは扱えない
2024/12/16(月) 11:35:41.45ID:EDggbpJc
引数の文字数上限なんて気にしたこともないわ
一体どんなスクリプト組んでるんだ?
2024/12/16(月) 12:33:48.42ID:BlyRMH2R
複数のフォルダをD&Dしてとあるから
大量のフォルダ・ファイルを渡すんだろうな
これは言語の制限じゃなくてエクスプローラかcmdかのシェルの制限だろう
2024/12/17(火) 00:26:16.95ID:qauPzx29
powershellのIDEってやっぱvscode一択?
362デフォルトの名無しさん
垢版 |
2024/12/18(水) 15:12:46.26ID:vtNCD/9a
>>361
Windowsのスタートメニューを見たことがないのか?

PowerShell ISEは無視、Visual Studioも無視するなら、あなたの希望通りにVSCodeになるな。
2024/12/18(水) 22:53:36.03ID:r/ciUEmV
いや普通にVSCode一択だよ
ISEは開発停止がアナウンスされてMicrosoft自身がVSCodeを推奨してる
2024/12/18(水) 23:49:49.43ID:qUh0YP4m
powershellの開発環境としてvisual studioが挙がることってあるか…?
2024/12/19(木) 00:10:06.38ID:MPXM+zkD
VScodeなら分かる
2024/12/21(土) 16:45:21.87ID:3/R2Wu0q
.ps1のスクリプトを右クリックから実行しようとすると
最初に[実行ポリシーを変更しますか?…]というのが出て、キーボード操作が必要になるんだけど
これは出ないようにできないのかな?
2024/12/21(土) 17:27:08.04ID:HkxgIAjH
うろ覚えだけど
右クリからやるやつはポリシーがhogeだったらbypassにするみたいなif文が入ってた気がする
レジストリで変えれたはずだけど出先だから細かくは分かんないや
適当にググったら出てくるんじゃないかな

それかif文にかからないようにポリシーの方を変える
2024/12/21(土) 17:47:50.11ID:3/R2Wu0q
>>367
できました!
ありがとうございます
369デフォルトの名無しさん
垢版 |
2024/12/21(土) 19:56:38.76ID:IOryZJAZ
>>368
間違って実行してしまわないよう、わざわざそういう仕様になっていることを忘れないように
370デフォルトの名無しさん
垢版 |
2024/12/21(土) 19:57:11.83ID:IOryZJAZ
>>368
バッチファイルというものを知った方がいい
371デフォルトの名無しさん
垢版 |
2024/12/21(土) 20:34:08.41ID:kQ229ZTv
的外れなレス付いてんなw
2024/12/23(月) 10:35:42.88ID:8lbwsaDk
バッチこい
373デフォルトの名無しさん
垢版 |
2024/12/24(火) 22:41:53.48ID:S4CkJ4V1
>>371
そもそもGUIで人間の操作で実行というのが変

何のための自動化なのかわからない
2024/12/24(火) 23:14:00.94ID:ALyk/+99
どこからGUIの話が出てきたんだ…?
375デフォルトの名無しさん
垢版 |
2024/12/25(水) 17:59:30.20ID:YmcCoB80
>>374
「右クリック」と書いてある
2024/12/25(水) 21:34:02.80ID:G9TljzDw
ps1で思考停止するような子を見てるとそう
もっと頭を使う訓練を教育機関で受けさせとかないとやばいのではと総務省に問い質したくなるね
2024/12/26(木) 00:31:28.78ID:3BPBxHkr
総務省…?
2024/12/27(金) 11:14:09.84ID:nSbaFnN8
>>373
ps1ファイルを右クリでpwshコンソールが起動してスクリプトが実行される
て普通にあることだと思うが
2024/12/27(金) 12:09:30.67ID:+TT5rJ9I
もう既に解決して終わってるし、>>366に書いてることをもう一度書く必要はない
2025/01/02(木) 12:24:43.46ID:XSssqHtC
$s = "昔し羅馬にこう云う話しがある。後学のため聞いておけと云うんです"
Write-Host -ForegroundColor Red -BackgroundColor Black "$($s[12]) $($s[24]) $($s[23]) $($s[19])"
381デフォルトの名無しさん
垢版 |
2025/01/07(火) 17:30:11.98ID:150rExn4
>>378
それはGUIの操作
382デフォルトの名無しさん
垢版 |
2025/01/07(火) 17:33:24.53ID:150rExn4
実行形式のファイルを実行するときにしつこく確認する仕組みに変化した歴史も知らないんだろ。
2025/01/08(水) 01:30:32.18ID:T5jAWt2M
的外れ過ぎる
2025/01/08(水) 09:05:49.08ID:DiodmN71
>実行形式のファイルを実行するときにしつこく確認する仕組み

何それ
2025/01/12(日) 01:09:34.15ID:7sMi3UMV
gci C:\Windows -include *.log,*.dat
は要素が一つも出なくて
gci C:\Windows\*.* -include *.log,*.dat
gci C:\Windows -recurse -include *.log,*.dat
はOKってどういう理屈なの?
できれば一番上の書きかたしたい…
2025/01/12(日) 10:26:34.53ID:+COVob5t
>>385
仕様。
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-5.1#4-include

理屈は知らん。過去ログになんかあったような、ちょっと違ったような。(-Filterの話だったような)
2025/01/12(日) 14:27:17.12ID:+gCgMQG7
初期リリースで適当に用意されたコマンドレットの仕様が残ってるだけだから理屈なんて無いだろうよ
gciのオプションは普通の人の感覚と違うからWhere-Objectにパイプで渡してフィルタする方がおかしな事にならないよ
2025/01/14(火) 14:43:26.79ID:It61Xpnn
末尾のスラッシュの有無でフォルダ自体を指すのかその配下を指すのかを区別するのはUNIXでは割と珍しくないだろう
Windowsだとファイルパスを文字列というより何らかのエンティティを参照するものと考える傾向があるから馴染みにくいわな
2025/01/14(火) 19:43:42.33ID:yWOGeGxK
この話は末尾がスラッシュかどうかは関係ないよ
Include, Excludeを使うときはワイルドカードを含めないとPathで指定した項目自身しかヒットしなくなるというこのコマンドレット固有ルールの話
390デフォルトの名無しさん
垢版 |
2025/01/27(月) 01:42:20.03ID:hFrLE9a7
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.84ID:hFrLE9a7
今回から.exeがある。
2025/01/27(月) 21:48:58.99ID:sL8l+nw9
.exe版と.msi版の違いが分からん
.msiだと問題が起きる環境でもあるのか
2025/01/27(月) 22:00:26.88ID:PdZna4r2
MDMで配れない
2025/02/05(水) 01:17:36.51ID:lMdV6DH3
powershellの実行権限デフォルトで縛ってるのなんでなの
batは縛ってないのに
2025/02/05(水) 09:34:59.87ID:RMyxJ4z6
batが作られた時代はセキュリティという概念がほとんどなかった
いまや甘いと社会的影響も甚大で徹底的に叩かれる時代
何もわからない初心者がメールに添付されたスクリプトを実行できなくて困惑するくらいで丁度いい
batという穴が残っているといってもいまは過渡期
移行する選択肢がありたとえば組織のルールで禁止してメールフィルタで弾けばいい
2025/02/05(水) 11:32:38.10ID:Mu7T1O7D
情弱は我慢して使えってこと
397デフォルトの名無しさん
垢版 |
2025/02/07(金) 21:28:42.53ID:lNWVt+S0
>>394
誰でも間違って重大ミスをする方がいいのか?
2025/02/08(土) 08:16:37.94ID:cxNGtJGK
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 と一致します。

なんだこの差は
2025/02/08(土) 08:24:47.70ID:26aAk0ye
2025/02/08(土) 08:47:04.49ID:Tj0Icuu5
マルチプラットフォームで社外の全システムに対応するのもめんどくさそうだしある程度はええやろ
UNIXならパーミッションを適切に設定する文化が馴染んでるしな
100点満点じゃないと人様に叩かれる文化は新しいものが生み出せずに萎縮する
2025/02/08(土) 13:21:14.91ID:1vi9xXrm
バッチファイルでも実行権限を持たせる事はできるんだから
powershell独自のやつは余計なんだよ
2025/02/08(土) 15:13:57.11ID:k/NTaFUS
.ps1はエディタに紐付け
2025/02/08(土) 15:51:11.00ID:6WBbu+9W
メモ帳に紐付けてます
2025/02/13(木) 09:12:08.62ID:/wbXAgvm
PowerShell 7.5 GA is now available
https://devblogs.microsoft.com/powershell/announcing-powershell-7-5-ga/
405デフォルトの名無しさん
垢版 |
2025/02/18(火) 06:18:26.96ID:YFjssuad
Selectボタンでファイルを選択した後にOKボタンを押下しても、$filePathにファイル名が代入されていません。何が原因でしょうか?
ttps://pastebin.com/a3EwP1Lw
2025/02/18(火) 07:51:32.12ID:WQjhH71Q
>>405
テキストボックスには選択したファイルのパスが表示されてるのに、ってこと?
2025/02/18(火) 07:53:13.44ID:hC2ChTFa
scope的に$filePath揮発してたりしない?
2025/02/18(火) 08:02:55.62ID:WQjhH71Q
関数内で外のスコープの変数に代入する場合はスコープ指定(script: や global:)が必要だったかも
409デフォルトの名無しさん
垢版 |
2025/02/18(火) 19:01:09.96ID:cVYWxauq
>>406
はい、そうです。

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

>>408
$global:filePath = $null
$script:filePath = $null
に書き換えても結果は同じでした。orz
2025/02/18(火) 21:38:36.15ID:Zhun0sKt
>>409
408の内容理解してないだろ
2025/02/18(火) 21:45:12.87ID:X9R6h3Dz
$button_Select.Add_Clickの中の $filePath = $dialog_fileSelection.FileName を $script:filePath に変える

そもそもイベントハンドラの書き方おかしくない?
Add_Click{} じゃなくて Add_Click({}) でしょ
2025/02/18(火) 21:45:47.23ID:pnZByoKT
>>409
惜しいw

スコープ指定が必要なのは関数内の代入文側であって、外にある変数定義側ではないよ
413デフォルトの名無しさん
垢版 |
2025/02/19(水) 05:46:44.36ID:95a5Qlah
>>411
ありがとうございます!
$filePathにファイルパスが代入されるようになりました。

>>412
ありがとうございます。
そうだったんですね。勉強になりました。
414デフォルトの名無しさん
垢版 |
2025/03/01(土) 22:23:09.05ID:yrcKQQ99
ttps://pastebin.com/THGpvEsL

ファイルを何も選択していない状態でOKボタンを押下すると、メッセージダイアログボックス「"Please select a file."」が表示され、そのダイアログボックスのOKボタンを押下すると、処理?が終了してしまいます。
OKボタンを押下した際に、そのメッセージダイアログボックス「"Please select a file."」だけ消すにはどうしたらいいでしょうか?
2025/03/02(日) 03:09:52.22ID:9brWkkbH
>>414
当たり前だけど、下記を削除するしかない

$button_OK.DialogResult = "OK"
416デフォルトの名無しさん
垢版 |
2025/03/02(日) 07:10:25.55ID:yaeCdLgC
>>415
ありがとうございます!
2025/03/04(火) 14:43:31.10ID:p/g0UiTR
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.86ID:zJfq1/au
Input Folder用のボタンを押下して対象のフォルダを選択した後、OKボタンを押下すると選択した対象のInputフォルダのパスが取得されていません。
変数スコープまたは"function setSelectButton"におけるswitchが機能していないのおもうのですが、何が原因でしょうか?
Copilotに聞いてもダメでした。ボタンなどの部品は関数化しないほうがいいのでしょうか?

ttps://pastebin.com/ULTy9dM8
2025/03/07(金) 23:19:13.53ID:6K+ignj1
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.69ID:zOJ1gnEL
画面用のコードがひどすぎるのがPowerShell
421デフォルトの名無しさん
垢版 |
2025/03/09(日) 07:42:20.13ID:RXTu5Tqn
>>419
ありがとうございます!
setSelectButton実行時に渡した$folderTypeはもう見えないんですね。
2025/03/11(火) 21:13:50.84ID:LUWD7xFy
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.27ID:1l1C1hqe
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
2025/04/26(土) 21:00:04.39ID:arwW7ZGW
>>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.55ID:p1PcxSuO
ttps://pastebin.com/0M9pbEJt
みたいなHTMLから特定のDIVクラス(kw)で定義されている要素を全部削除したいのですが、何かいい方法ありますでしょうか?
426デフォルトの名無しさん
垢版 |
2025/04/27(日) 15:25:40.97ID:/1DxBHsK
>>425 (>>423と同一人物だよね)
>>424に礼を言ったうえで、どの点が自身の質問意図に合ってなかったか説明して、
それからもっと具体的に追加質問した方がいいと思うよ。
ところで「xmlとして読み込めばnode削除でいけそう」は試してから言ってるの?何が合わなかったの?
2025/04/27(日) 16:50:54.99ID:ce45ltSU
滝川クリトリスです
2025/04/27(日) 20:14:14.77ID:/O0GUF2P
楽しようとして初回マッチ部分のみの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
2025/04/27(日) 20:24:25.83ID:/O0GUF2P
>>426
試してませんでした
HTMLやxmlを扱うことはほぼ無いのであんまり知識が無い
で、>>423の場合では[xml]で読み込めてnode削除でうまくいくんだが
入れ子になってる場合
<div class="KW">
<span>
<div class="KW">
</div>
</span>
</div>
とかにはどうやったら簡単に対応できるのかと思ってるところ
430デフォルトの名無しさん
垢版 |
2025/04/27(日) 22:05:35.62ID:aGrpQ/Rq
中身全部消すのであれば内側のKWは無視していいのでは
2025/04/27(日) 22:11:37.95ID:/1DxBHsK
簡単には
$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"の存在とか、インデント等を完璧に維持したい、とかは考慮外。
2025/04/27(日) 22:22:47.91ID:/O0GUF2P
>>431
なるほど
こんな感じにしてたんだよ
$list=@()
$doc.GetElementsByTagName('div')|?{$_.class -eq "KW"}|%{$list+=$_}
$list|%{[void]$_.ParentNode.RemoveChild($_)}
2025/04/27(日) 22:48:33.11ID:/O0GUF2P
悩んでたのは
既に削除しちゃてて存在しない場合にエラー無視はやりたくないなあってところ
2025/05/02(金) 21:45:21.05ID:TuuGRLh6
powershellって日本語に厳しい?
日本語名のフォルダに入れた時だけエラー吐く
英語名フォルダは動く
UTF-8BOMで保存してるのに文字化けエラーが治らない
435デフォルトの名無しさん
垢版 |
2025/05/02(金) 22:24:03.09ID:OrgxTXnx
いわゆる「マルチバイト文字」のことを「日本語」と呼ぶのはジジイ
436デフォルトの名無しさん
垢版 |
2025/05/03(土) 07:39:35.24ID:ERFTsxnY
UTF-8にBOMは不要
437デフォルトの名無しさん
垢版 |
2025/05/03(土) 17:59:32.71ID:0tHkB26n
文字コードが混在するシステムではBOMがあると便利です
2025/05/03(土) 18:08:41.88ID:qBega2UP
それが更に文字コードのバリエーションを増やし失敗を生むのだから本末転倒です
439デフォルトの名無しさん
垢版 |
2025/05/03(土) 18:08:56.03ID:PV3Uf1QS
PowerShellスクリプトは「UTF-8 with BOM」が前提

>>434
実行時(コンソール)のコードページを確認してみては?
2025/05/04(日) 07:07:42.38ID:kiovYued
shift-jisにすればいいんじゃないの?
2025/05/04(日) 08:23:30.18ID:GZLENS5k
適切なエンコードの選択
https://learn.microsoft.com/ja-jp/powershell/scripting/dev-cross-plat/vscode/understanding-file-encoding#choosing-the-right-encoding
2025/05/04(日) 11:02:36.68ID:Bff2jlZm
文字化け対策は
 [Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
こういうのをpowershellのプロファイルに書き込んで
powershell起動時に文字エンコードが適切な値になるようにしておく
そしてコンソールのタイトルバーを右クリして設定で適切なフォントが使用されてるか確認
2025/05/09(金) 16:18:47.82ID:LImQScat
>>434 とは別人だが、レジストリ弄ったら文字化けしなくなったわ
初心者泣かせのクソ仕様だな
2025/05/10(土) 10:47:55.61ID:ARU6YZDD
>>443
powershellをアップデートしたらリセットされそうな予感
2025/05/10(土) 15:03:05.65ID:L74jL6NI
>>444
文字化けするようになったのはプロパティでコンソール画面の調整を行ってから
デフォルトの状態では文字化けしていなかったのでたぶん大丈夫…と思う
2025/05/18(日) 16:44:31.56ID:w/29XAyn
$a = powercfg.exe -lastwake
$aは文字列かと思ったら文字列の配列だった…

コマンドの出力に改行が無ければ文字列、含む場合は配列とかいうヘンテコ仕様は何なんだ
2025/05/18(日) 19:51:20.44ID:xRSUEbTb
この振る舞いを知らないと、$a.Lengthが時により文字列長だったり配列長だったりして、例外やバグになる。
さらには標準出力が何もないと文字列型である空文字ではなくNULL(AutomationNull)になるし。
外部プログラムの標準出力を受け手が改行ごとに分割して解釈するのはgrep等でよくあるからヘンテコ仕様とは思わないけど、
沢山あるpowershellの落とし穴の1つだと思ってる。
2025/05/19(月) 10:22:41.03ID:Z1VKFLAg
$a = @(powercfg.exe -lastwake)
こんなふうにして必ず配列で返るようにするといいです
2025/05/19(月) 21:43:03.14ID:qL6NUCv5
キモい記法だな
2025/05/19(月) 23:54:30.60ID:2rbfAZ+2
このキモい記法ってコレクション返す関数書くと使わざるを得ないんだよな…
関数とかスクリプト最後のreturnにコレクションを渡すと勝手にバラす謎仕様

最初知らなくてDataTableのつもりがDataRowの配列で返ってきたときはびっくりした
2025/05/20(火) 01:53:43.90ID:yO05o0Kw
[string[]]$aで受け取る
2025/05/20(火) 12:57:58.71ID:NKLxZTlt
時刻データ(ISO 8601)が入った JSON を invoke-RestMethod で受け取る
あるいは ConvertFrom-JSON すると時刻が powershell 形式になる
データの内容を見て勝手に変換してるんか…
2025/05/20(火) 14:18:35.07ID:Xl2+DDPz
>>452
勝手にDateTime型でだしてくるってこと?
2025/05/20(火) 15:30:07.39ID:NKLxZTlt
>>453
こうなる

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

2025年5月19日 16:35:42
2025/05/20(火) 15:52:27.90ID:NKLxZTlt
括弧いらなかった(どうでもいい)
(ConvertFrom-Json '{"data":"2025-05-19T16:35:42.000Z"}').data
2025/05/21(水) 09:54:31.02ID:rXr/G70T
ならんが(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
2025/05/21(水) 09:59:36.90ID:2NJ41Wyd
powershell5とpowershell7で動作が違うね
powershell7だと変換される
2025/05/21(水) 17:10:41.92ID:NEzFfeHM
大半が5.1しか使わないから7の方が合わせろよって事
459デフォルトの名無しさん
垢版 |
2025/05/21(水) 18:50:19.37ID:UAEUk5lE
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 パラメーターが追加されました。これにより、タイムスタンプ文字列の変換方法を制御できます。 このパラメーターは、次の値を受け入れます。
2025/06/24(火) 00:10:17.72ID:9HpiqCeZ
powershell7っていつになったらOS標準搭載されるんだろう
スクリプト配れないから困るんだよね
2025/06/24(火) 11:26:30.59ID:F3nFA9Ml
配ればいいじゃん
7で動作確認してますって書いとけばいいだけ
2025/06/24(火) 11:45:12.25ID:jKpO0eO6
その小学生低学年みたいな書き込み必要か?
2025/06/24(火) 12:05:00.87ID:KEAdRoBs
いつになってもされないよ
Windowsのサポート期間と合わないから、標準で入れたところで結局塩漬けされて第二のPowerShell5になるだけ
そして最新のバージョンのPowerShellは今以上に誰も使わなくなる
.NET4.8のサポートが終了する頃にはとっくにPowerShellは開発終了してるだろうし、無理に移行させる理由がないんだよ
2025/06/24(火) 12:24:16.18ID:uXNyGdUq
OS標準搭載とか安定が必要なのはv5を使え、v7は破壊的変更を加えながら育ててくって棲み分けになってるから標準搭載はナイだろうなあ
2025/06/24(火) 18:03:39.76ID:sjc0o4g2
6以降はWindowsファーストでUNIXでも動くシェルとしてわりとユニークな立ち位置なのでそれなりに存在価値はあり、
MSスタックどっぷりな人間がAzureをはじめとしてクラウドでLinuxに触れざるを得ないときのハードルを下げるのに役立っている
Winのオンプレ鯖やPCのシェルとしては5までで終わり
2025/06/24(火) 19:36:57.27ID:ZrkIV361
.NET Framework 4系(4.8.x)がWindowsに同梱され続ける限り、PowerShell 7.xが標準になることはなさそう
Unicodeの年次アプデがもう何年も反映されてなかったり、色々とキツいけど仕方ない
2025/06/25(水) 00:38:29.01ID:6PeRjodX
powershellで攻めた使い方するくらいならpythonで書くよなぁ
インストール不要で動くという最大のメリットがない7系はpowershell好きにしか響かないと思う
2025/06/25(水) 13:28:46.57ID:zWuAHPd0
>>467
逆にpowershell7をインストールしないメリットて何だ
2025/06/25(水) 15:20:42.55ID:TZWJXUbx
Pythonをインストールしないメリットと似たようなもん
2025/06/26(木) 17:27:15.49ID:lOjfAOzg
powershell 7 が読めない速さで(読めないのでキャプチャした)
”Creating implict remoting module ... [Getting command information from remote session ... 74 commands received 0s]”
とか黄色文字で一瞬表示するの止められないんだろうか
チラチラして鬱陶しい

implict remotingて何だと調べると互換性の無いモジュールを裏でpowershell 5 を起動して処理してるんだとか
Set-Location 程度でも発動する
2025/06/28(土) 01:00:11.07ID:UBYVDQZY
昔数百万行の各個別コマンドをpowershellでスレッドプール実装して並列処理で捌いたことあったけどvscodeの拡張機能でのデバッグが無かったら諦めてたと思う
拡張機能のおかげで大分開発しやすくなった
472デフォルトの名無しさん
垢版 |
2025/06/28(土) 16:43:22.73ID:uH6ba5rf
>>471
なぜマルチスレッドの実装にこだわってマルチプロセスにしなかったのか?

スレッドのコントロールは面倒くさい。
互いのスレッドが干渉し合わないなら、別のプロセスとして実装すべき。
2025/06/30(月) 14:31:10.94ID:+52Dh5n7
「Windows PowerShell 2.0」は非推奨、将来的に削除 〜Microsoftが改めて注意喚起
「Windows PowerShell 5.x」や「PowerShell 7.5」への移行を
https://forest.watch.impress.co.jp/docs/news/2026721.html
474デフォルトの名無しさん
垢版 |
2025/07/08(火) 11:07:44.40ID:ub1Gvu25
>>397
batの方が重大なミスしそうなんですがそれは
475デフォルトの名無しさん
垢版 |
2025/07/08(火) 11:08:23.57ID:ub1Gvu25
>>398
っぱpwsh on linuxよ
2025/07/08(火) 11:16:15.29ID:jxaCuQsN
>>474
よく読め
477デフォルトの名無しさん
垢版 |
2025/07/08(火) 11:16:26.31ID:ub1Gvu25
>>466
何時までも4,5系に留まるってことは無いと思うけどね
実際2からアップグレードされてきた訳だし
.NET Frameworkとの差異は比較的大きいにせよ
>>473の件もあるしそのうちプリインされるだろCore版が
なお6か7かはたまたまだ見ぬ8かは知らんけど
478デフォルトの名無しさん
垢版 |
2025/07/09(水) 05:32:28.94ID:aeqwBJS6
powershellの日本語ドキュメント、chatGPTに翻訳させたらもっとマトモにならんかなあ…
479デフォルトの名無しさん
垢版 |
2025/07/09(水) 05:34:55.69ID:aeqwBJS6
6もしぱらくバグまみれだったし7もバグどんどん見つかっていったし、最新がプリイン入る事は無いと思うな
多分最新の1つ前の最終マイナーバージョン、すなわちもし今なら6の最終バージョンじゃね
2025/07/09(水) 06:17:43.31ID:b3V2Axv4
.NET Frameworkと違って.NET5以降がOSに同梱はないでしょ
MS的に推奨かは知らんが関連するライブラリを標準モジュール含めて全部同梱配布が.NET系アプリのスタンダードになってるし今は

だったらロードさせることのないdllをOS標準で入れる意味も無いし未来永劫Powershell6以降は来ないって半分諦めてるけどね
2025/07/09(水) 17:36:33.28ID:ohpjpVt+
本日はご多忙の中、協力関係者様にお集まりいただきありがとうございます。
powershellは無事5.1で完結いたしました。
powershell第一部・完
6以降はまた別のお話とさせていただきます。
こんな感じ
2025/07/10(木) 00:21:06.24ID:z96em9yx
ps1の1は当時はバージョン名の想定じゃなかったっけ
2025/07/10(木) 07:27:18.57ID:qajreXxd
>>482
バージョンを表しているのは間違いない
ただ言語のメジャーバージョンとファイルフォーマットの互換性を表すバージョンは必ずしも一致しないって扱いなので、もし次に拡張子が変わるときが来るなら.ps2になる
https://devblogs.microsoft.com/powershell/ctp-versioning/
Excelを例に取ると97、2007でそれぞれ内部形式が変わっていて、2007では拡張子も変わっているので、いうなれば.xlsxは.xl3に相当するイメージ(5.0以前は無視した場合)
.ps1は最初はバージョンごとに毎回数字を変えるつもりだったけどやめたって説が巷で主流だけど、コレは公式のソースが見つからなかった
2025/07/10(木) 11:15:28.70ID:DIIl0KYX
microsoftは妙に互換性にこだわるから
拡張子.ps1はpowershellがどんなバージョンになっても変わらないよ
今は拡張子に「バージョンの番号が含まれてます」っていう意味すら意味をなくしていて
ただ単に「.ps1はpowershellスクリプトの拡張子です」ってだけの意味でしかないから
今さら拡張子を新しくするメリットが無い
2025/07/10(木) 11:20:06.12ID:DIIl0KYX
>>484
と思ったけどバージョン5とそれ以降では互換性に問題のある事が多かったなw
そういう誤実行を防止する目的で拡張子を変えるメリットあるかなぁ
2025/07/10(木) 11:55:28.72ID:nn3AKhN3
もうexeにすればいいんじゃねえかな
powershellで作ったかどうかすら判らんし
2025/07/11(金) 21:41:14.58ID:UFItDSPS
https://devblogs.microsoft.com/powershell/ctp-versioning/

PowerShell Scripts continue to use “.PS1”.

We will continue to pursue this approach until there is a major change in the CLR or .NET frameworks which force us to go side-by-side. It is at that point that we’ll go from .PS1 to .PS2 . Until then we will stay with .PS1 and everything that runs today will continue to run in new releases.
2025/07/12(土) 15:57:57.17ID:KKY9VgUr
記事の日付は2007年やぞ
2025/07/14(月) 21:23:18.49ID:54I3beLE
PowerShell6で拡張子を変えなかった時点で
この先も.ps1のままなのはほぼ確定だよね
2025/07/15(火) 01:51:30.33ID:kwekYfOc
俺たちのJeffrey Snoverはもういない、いないんだ…
2025/07/15(火) 14:43:34.46ID:iicdRBcv
コマンドプロンプト使ってる人はたくさんいるけど
powershell使ってる人ここ10年で一度も見たこと無い
492デフォルトの名無しさん
垢版 |
2025/07/15(火) 17:26:35.63ID:J6nh+lbb
>>491
コンソール(の外観)のハナシ?
2025/07/15(火) 17:58:06.00ID:eVgbUR/v
俺も、以下の1行をバッチファイル内に記述して実行する程度の事しかやってないな。

powershell.exe -command ("Write-EventLog -LogName Application -EntryType Information -Source 'WSH' -EventID 0 -Message '(%~f0)_Windows Updateの画面を起動します。'") && start "" ms-settings:windowsupdate

※注1:
Windows7以降で標準搭載されているPowerShell(バージョン2.0以降)で使用可能な「Write-EventLog」コマンドレットは、バージョン6.0以降には搭載されてない。
だがバージョン2.0~5.1いずれかとの互換性が保持されている環境(「$PSVersionTable」変数内の「PSCompatibleVersions」プロパティを参照すれば確認可能)では問題ない。

※注2:
「ms-settings:windowsupdate」コマンドはWindows10~11のみで使用可。
494デフォルトの名無しさん
垢版 |
2025/07/15(火) 17:58:26.26ID:onP4ElKb
Terminalに移行したら分からなくなっちゃったか
2025/07/15(火) 18:07:10.16ID:yseOir/R
気軽にスクリプト実行できないから使い道がない
2025/07/15(火) 20:54:02.36ID:1cN94XmW
本気で言ってるのか
2025/07/15(火) 21:58:24.95ID:ZcYliqlC
弊社はIT企業じゃないし、勝手にPythonを入れたりするとたぶん怒られるので
Windowsに最初から入ってるPowerShellを便利に使ってました
たまに、起動用のbatファイルとPowerShellスクリプトをセットにして同僚に渡すこともありました
2025/07/16(水) 08:58:08.06ID:83bEnGjZ
いい加減ペイント3DみたいにPowerShellのアプローチは失敗でしたと認めちゃばいいのに(´・ω・`)
2025/07/16(水) 12:43:16.16ID:09DhhKQk
もうログインスクリプトにも使われてるから
Windowsの終焉まで逃げ出せないよ
2025/07/16(水) 22:06:02.34ID:5d/ixC+9
PowerShellのどのアプローチが失敗なのか具体的に
2025/07/16(水) 23:17:35.03ID:7/+dohrQ
起動用のbatが必要になっちゃうってのがな
PowerShell単独では使いにくい
2025/07/16(水) 23:57:41.77ID:YcDGevHy
ん?どういうこと?
2025/07/17(木) 00:10:22.13ID:sGHKyXGW
ダブルクリック実行できるようにするために手間がかかる
2025/07/17(木) 00:22:02.88ID:Nf2HlQRn
正直言ってexecutionpolicyの初期値は大失敗だろうなぁ
結局.batか.cmd経由でダブルクリック起動できるんだからマジで無意味
ネットから落としたファイルはzoneidがあるから設定に関係なく警告でるんだし

あとcmdもPowershellもWindowsのオマケであることに価値があるのにPowershell5.1までしか同梱されてないし
505デフォルトの名無しさん
垢版 |
2025/07/17(木) 07:33:01.42ID:1VTmgFuN
もう直接powershell.exeに関連付けしてる
506デフォルトの名無しさん
垢版 |
2025/07/17(木) 08:05:58.12ID:9jYPg0KZ
>>482
それはバージョン1として普及させただけ。

いまとなってはバージョンを表してはいない。
507デフォルトの名無しさん
垢版 |
2025/07/17(木) 08:06:51.20ID:9jYPg0KZ
>>486
それはWindowsしか知らない人間の発想
508デフォルトの名無しさん
垢版 |
2025/07/17(木) 08:08:24.36ID:9jYPg0KZ
>>491
Windowsはターミナルというアプリで統合された。

PowerShellはコマンドプロンプトも含めているので、あなたが気づいていないだけ。
509デフォルトの名無しさん
垢版 |
2025/07/17(木) 08:09:59.60ID:9jYPg0KZ
>>495
実行形式にする必要がない。UNIX、Linuxは実行形式ファイルを嫌う。

ブラックボックス化はやめろ!
510デフォルトの名無しさん
垢版 |
2025/07/17(木) 08:11:35.61ID:9jYPg0KZ
>>501
バッチファイルにする必要もないよ?
バッチファイルなどでラッピングするのはWindowsの使い方のひとつでしかない。
2025/07/17(木) 09:38:35.80ID:+XuQIino
>>506-510
全部元発言者を意図を読み取れてない馬鹿のレス
UNIX使いの印象を悪くするだけなのでやめてくれ
2025/07/17(木) 12:08:51.21ID:uGnrWKuf
powershellは小数点以下のバージョンアップでも毎回互換性を壊す
破壊的変更を入れてくるから普及させる気無いんじゃね
2025/07/17(木) 12:30:14.69ID:l8YWhCPU
実際、6以降は普及させる気無いと思うよ
Azure関連を中心にMS社内で使うために開発続けてるだけでしょ
2025/07/17(木) 21:54:18.35ID:yTEYa8cJ
PowerShellが失敗作じゃないと困る人がいるのは分かった
2025/07/17(木) 22:59:18.52ID:o0/3IwZx
PowerShell自体の出来はともかく、6以降は周辺環境がね
PowerShellは.NETがWindowsの中核として位置付けられていた頃に設計されており、
システムワイドにインストールされた.NETに安定的に依存できることが大前提なのよ
知っての通りその前提は完全に覆されてしまい、存在意義を失おうとしている
2025/07/18(金) 01:15:27.61ID:T97Bau37
知っての通りどころか.net frameworkは今もWindowsと一蓮托生だけど
.netと.net frameworkを分けて書かないと意味不明な文章が出来上がる
2025/07/18(金) 22:16:02.55ID:avd6O0J8
Windows以外で.Netで作られたアプリやサービスなんてあんの?
2025/07/18(金) 22:17:51.22ID:r2egjf+1
pythonで良くない?駄目?
2025/07/19(土) 02:03:44.93ID:QndlLNYI
pwsh.exe
520デフォルトの名無しさん
垢版 |
2025/07/19(土) 08:55:57.75ID:jBcCcJ6x
>>518
Pythonがそこまで言い言語だとは思わないので
2025/07/19(土) 10:16:02.54ID:F2LZk1nd
>>517
ゲームエンジンのUnity
2025/07/19(土) 19:43:58.62ID:PVxrNHN1
>>517
GitHub Actions
2025/07/20(日) 10:33:30.33ID:8UONs9WI
>>515は、元はシステム全体でひとつの.NETフレームワークを使ってPowerShellをCOMに対するWSHポジにするつもりだった、という意味だろうけど
.NETフレームワーク自体最初から複数バージョンを共存させる設計になってるので、果たしてそのような構想はあったのだろうか
2025/07/20(日) 11:36:14.91ID:nDfpIeCg
>>523
5以前のPowerShellはサイドバイサイドに対応していないから、使用される.NET Frameworkは結局一つだけ
2025/07/24(木) 02:44:32.63ID:uw32EQ1Q
>>523
> .NETフレームワーク自体最初から複数バージョンを共存させる設計になってるので、果たしてそのような構想はあったのだろうか
.net frameworkはそんな設計じゃないぞ…
526デフォルトの名無しさん
垢版 |
2025/07/24(木) 18:49:30.39ID:bvlLnJ99
コマンドレットを作ったが中途半端で.NET Frameworkを呼び出せばいいということにしたが、これではPowerShellを作った意味がないとしてPowerShellを拡張していまの混乱状態に至る。
2025/07/24(木) 20:21:14.09ID:3SMUfFNx
PowerShell独自の構文や機能はいらん .Net実行できる部分だけでいい
C#Scriptがほしい
2025/07/24(木) 21:28:50.84ID:Ii6lkj2E
C#コードを単一ファイルでスクリプトのように書ける言語機能が「.NET 10」でテスト中
従来のプロジェクトベースへの変換も簡単
https://forest.watch.impress.co.jp/docs/news/2018094.html
2025/07/24(木) 22:28:33.22ID:qxgm8L3v
powershellのAdd-Typeを使えばC#を実行出来るらしいが
530デフォルトの名無しさん
垢版 |
2025/07/26(土) 11:52:54.27ID:VPjMt5X4
Add-TypeのC#は、Windows API使いたい時、局所的に処理速度を上げたい時によく使う。
2025/07/26(土) 19:50:25.05ID:kldGNMpl
ぜんぜん分からないんですけどAdd-TypeでC#を書くのって
インテリセンスが効かなそうで、ちょっとしんどそうなんですけど
そうでもないんですか
2025/07/26(土) 20:51:36.43ID:eh3q3MEs
PowerShellで使う程度のものなら余裕でバイブコーディングでいけるからどうでもいい
2025/07/26(土) 22:09:50.67ID:kldGNMpl
なるほど
2025/07/27(日) 01:39:44.77ID:sXx2dSLi
もっとc#に近い記法にしてほしかったのになんでそうならなかったんだろう
配列の宣言とかセミコロンがないとか
2025/07/27(日) 05:42:54.86ID:L6p6i+Me
クラスはほぼC#だけど
2025/07/27(日) 08:16:33.47ID:/sb9ajQY
PowerShellは名前の通りシェルだからな
単なるスクリプト言語が欲しいだけならWSH.NET的なものを作ってる
2025/07/27(日) 09:15:11.85ID:zaK1ilRt
今のMSだったらRustあたりで作ったWindows CLIで一通りの管理タスクを一貫したコマンド体系でやれるようにした上で、
スクリプトはbashでもPythonでも何でも好きなの使えみたいにしてるだろうね
今となってはPowerShellはバルマー時代の古き悪きMSを象徴する遺産の一つ
2025/07/28(月) 09:16:16.29ID:BMbzFeOA
最初はbashの採用を検討してたけどWindowsには向かないって分かったからわざわざPowerShellを作ったんだが

https://x.com/jsnover/status/976904848162435072
2025/07/28(月) 10:39:54.16ID:dloezDzP
>>538
その理由はファイル指向のUNIXと違ってWindowsはAPI指向だからとJeffreyは述べてるんだけど、
一方でUNIX的なシェルで扱うのに適したCLIコマンドを整備するという方向もありえて、
実際MSがPowerShellにベットする以前はWMICのようにラッパーとしてCLIコマンドを整備していく方針だったんだよ
ただ、その方向で進む限りWindows上でのコマンドラインシェルは特殊なラッパーに依存することになり、決してWindowsスタックにおける主流になり得ない
そこで当時Windowsの新たな中核技術として喧伝されていた.NETプラットフォームに乗ることで、
MS社内にサービスしつつ一気にWindowsでのコマンドラインシェルを主流に押し上げようとしたわけだね
で現状はというと、肝心の.NETが主流から外されちゃって、PowerShellは一般のアプリの一つになっちゃいました(いまここ
2025/07/28(月) 11:02:51.49ID:dloezDzP
あと、現状について周辺の情勢も踏まえると、CLIを使ってAPI指向のプラットフォームを管理するスタイルはPowerShell 初期開発の当時と比較して遥かに市民権を得ているといえる
それはひとえにクラウドによるもので、現在ではクラウドプラットフォームのAPIをCLIを使って操作することは普通に行われており、しかもその多くはJeffreyの懸念に反して旧来のUNIXシェルを使用している
この現状を踏まえて今Windowsのコマンドライン管理を再考するとすれば、PowerShellのようなものが生まれる可能性は低いといえる
2025/07/28(月) 17:29:52.01ID:CQsGHQXP
Windowsは(少なくともOLE〜.NET全盛期の頃のWindowsは)APIもオブジェクト指向する方向性だったので
それを操作するスクリプト言語もCOMオブジェクトや.NETオブジェクトを長期保持できなければいけない
単発で終了するCLIコマンドを揃えてもだめだろう
542デフォルトの名無しさん
垢版 |
2025/07/28(月) 19:14:24.95ID:7Fge/X80
おっさんエンジニアが全然使わないから無理だわ
543デフォルトの名無しさん
垢版 |
2025/07/28(月) 19:32:06.85ID:K95kqw+R
>>528
それだとVBScriptの二の舞
544デフォルトの名無しさん
垢版 |
2025/07/28(月) 19:33:30.80ID:K95kqw+R
>>534
そこがマイクロソフトの変なところ
いろんなプログラミング言語を研究して最良のものを作ったというのが当初の売り文句だった
545デフォルトの名無しさん
垢版 |
2025/07/28(月) 19:34:24.66ID:K95kqw+R
>>538
それはプライドが許さなかっただけ
546デフォルトの名無しさん
垢版 |
2025/07/28(月) 19:35:04.74ID:K95kqw+R
>>538
グーグルおじさんじゃねえか
547デフォルトの名無しさん
垢版 |
2025/07/28(月) 19:37:29.63ID:K95kqw+R
>>541
WindowsはWindows SDK開発がC言語でもC++でもいいというところから始まったせいで、形だけオブジェクト指向のC++が基本になってしまった。
2025/07/28(月) 20:23:32.91ID:0zFGFjxD
後発だからいろんな言語を参考にできるという強みがある一方で
Windowsのシェルスクリプトという世界最大級のしがらみのもと
あらゆるステークホルダーが全方位から好き勝手なことを言い
無数の歴史的経緯を踏まえつつデザインしないといけない無理ゲーなプロジェクト
変なクセが多い言語だけど苦労が偲ばれるからあまり文句を言う気にはなれない
2025/07/28(月) 20:35:24.51ID:n+5V5/p3
CとB-Shellが混じったような半端な記法
2025/07/28(月) 21:11:45.32ID:s3rviGhL
今なら普通にTypeScriptになるだろうね
2025/07/28(月) 21:57:11.64ID:pEErs1kG
bat埋込み技法とAdd-Typeでcsスクリプト化したった
スクリプトのくせに起動が遅いのが不満
2025/07/29(火) 08:49:01.81ID:zbO0uIbs
パイプにバイナリが流せるようになったPowerShell 7.4 からは使える子になった
553デフォルトの名無しさん
垢版 |
2025/07/29(火) 12:01:37.45ID:0YhddUmf
VBSもなんやかんや生き続けると思ったけどOSとしてサポート終了となれば話しは別やな
2025/07/29(火) 14:11:31.33ID:/sYzcWbW
>>552
パイプにバイナリ通せるつって1バイトずつbyteで送られてきても困るんだが
実際のとこどうなっとんの
555デフォルトの名無しさん
垢版 |
2025/07/29(火) 17:07:26.34ID:HrDR44lc
コマンド間にControl-Streamかまして調整する
2025/07/29(火) 21:53:14.21ID:J2wyXy1Z
>>550
.NET対応のスクリプト言語なら静的型付けなJScript.NETが前からあるんだから
TypeScriptなんて中途半端な言語はいらない

Introducing JScript .NET
https://learn.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/scripting-articles/ms974588(v=msdn.10)
2025/07/31(木) 08:21:16.74ID:y/q8ihDv
Windows PowerShell って

python3 -c 'print("hoge")'

とか

curl なんちゃら | tar かんちゃら

すらできないのに cmd.ехе にとってかわろうなんて無理筋にもほどがある
この辺だけでも PowerShell から持ってくればいいのに
2025/07/31(木) 11:23:28.67ID:+PK2lVhx
もう諦めてWSLでbash使えばいい
2025/07/31(木) 13:18:34.83ID:cbQ+pPIq
>>557
互換性が無いのにデフォルトのAliasでcurlがInvoke-Webrequestになってるの酷い
2025/07/31(木) 22:32:58.67ID:H5u1AeiS
bashでは駄目だからわざわざPowerShellを作ったのにbash使えばいいとか意味不明すぎ
2025/08/01(金) 00:05:22.62ID:2FKaw99x
curlがエイリアスって件だけは俺も擁護できない
あの罠は誰もが一度は引っかかる
2025/08/01(金) 07:56:40.22ID:z02NetRk
>>560
PowerShellはWindowsの管理のために作られたもので、その用途においてbashは不向きだといっているのであり、
君が示したようなWindows管理と無関係なケースでbashより推奨されているわけではない
加えて現在ではWSLという完全なUNIX環境がWindows上でシームレスに使用できるのだから、もはやPowerShellの役割は上記の通り極めて限定的になっている
一点だけ汎用シェルとしてのPowerShellの特徴として構造化データに強いというのがあるが、それだけならNushellとかの方が遥かに使いやすいよ
2025/08/01(金) 08:52:42.59ID:TWGrPtc3
>>557 の二つの例は PowerShell では問題なく実行できる
・ Windows のデフォルトコマンドラインシェルは Windows PowerShell

過去のしがらみで PowerShell をデフォルトにできないなら
Windows PowwerShell に >>557 が実行できるように機能追加するべき
Experimental feature として必要に応じで Enable できるように

とにかく今の Windows PowerShell がデフォルトってのが最悪
2025/08/01(金) 09:31:11.55ID:ciUSYvyR
・一部の人は「PowerShell」と「Windows PowerShell」を分けて考えている
バックポートしろって話ならできるのでは
公式がやるかどうかはともかく
565デフォルトの名無しさん
垢版 |
2025/08/03(日) 20:29:44.07ID:kVKBj15M
C#と同じでWindowsだけのものはバージョンが古いものだけ

単にPowerShellと呼んでいるのは、WindowsとLinuxとMacOSで動く製品だからだ。
566デフォルトの名無しさん
垢版 |
2025/08/13(水) 10:09:50.25ID:lyLUlfa6
>>562
wslでpwsh使おうって方向性じゃないの?
chshするとwinとシームレスで快適だぞ
別にchshしなくてもホストのwin上リモートで繋げるしwslとの相性バツグン
2025/08/13(水) 14:33:52.76ID:BMYIv7Jv
PowerShell 2.0 removal from Windows
https://support.microsoft.com/en-us/help/5065506

PowerShell 2.0 will be removed in a later release starting in August 2025 for Windows 11, version 24H2 and a September 2025 release for Windows Server 2025. All later releases for Windows 11 and Windows Server 2025 will not include PowerShell 2.0.
2025/08/13(水) 16:04:08.55ID:VzGNLP/v
.NET 10では「dotnet run」で.csファイルをそのままスクリプトとして実行できるようになるっぽい(要.NET SDK)
実行時にビルトされる点はこれまでと変化ないけど、ビルド成果物が一時フォルダに吐かれる?のか、.csファイルの場所が散らかることがなくなってスクリプト的に扱えるように

実行時のオーバーヘッドは...PowerShellと大差ない模様
569デフォルトの名無しさん
垢版 |
2025/08/13(水) 18:30:43.34ID:vtzVqfUP
Pythonを検索してもファイルが見つかりませんとなります。
誰かどうすればいいか分かりますか?
2025/08/14(木) 00:36:43.33ID:9QEKXUa7
日本語でおk
2025/08/14(木) 07:06:36.79ID:jDrEWEUc
7をインストールしたけどエラー吐く時に黒背景に赤文字ってどうにかならん?くっそ見にくい
2025/08/14(木) 09:27:10.03ID:Do/BXbHP
じゃあそれ夏休みの宿題な
2025/08/14(木) 09:54:56.24ID:vhNMb463
$PSStyle.Formatting.Errorを変更する

about_ANSI_Terminals
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_ansi_terminals
574デフォルトの名無しさん
垢版 |
2025/08/14(木) 18:59:18.68ID:eBuFE50k
厨二シェル
2025/08/15(金) 21:38:08.69ID:QOcfL0u7
UNIXシェルが?
2025/08/17(日) 04:08:48.96ID:TBSqwQ7N
powershellってコマンドがいちいち長ったらしくて打つのダルいんだよな
shellみたいに2文字3文字の略称で何の意味かわからんコマンドも学習するのに困るけど
2025/08/17(日) 05:22:57.26ID:X86RYV3a
それな
2025/08/17(日) 12:37:42.26ID:B434g2i0
PowerShellのAdd-Typeでc#が書けるとよろこんだもののpowershell.exeの起動がクソ遅くcscでコンパイルする方が速い
なにやってんのコレ
579デフォルトの名無しさん
垢版 |
2025/08/17(日) 13:12:08.30ID:jIhEo17k
エイリアス使え
580デフォルトの名無しさん
垢版 |
2025/08/17(日) 13:29:34.64ID:dA3TcCkL
ps1ファイルって暗号化とまでは行かなくとも難読化くらいはできねーの?
2025/08/17(日) 15:36:02.04ID:DpVlhT9Y
正規表現の検索パターン内で変数配列を使いたいが角括弧のせいで動かない
エスケープの方法を教えてほしい

行末に一致させたいとして
-Pattern "$aryr[5]$" #ng
-Pattern "$arry`[5`]$" #ng
-Pattern "$aryr\[5\]$" #ng
-Pattern ($arry[5] + "$") #ok 美しくない
2025/08/17(日) 16:37:39.55ID:CNACV2eM
コレじゃダメなんだっけ?

"$($arry[5])$"
2025/08/17(日) 20:58:20.47ID:DpVlhT9Y
>>582
動いた
ありがとう!
2025/08/17(日) 21:28:17.56ID:jRtquIfz
>>578
DLL化してPowerShelllで読み込む

PowerShell使わずに済むならC#だけでもいいと思うけど
585デフォルトの名無しさん
垢版 |
2025/08/18(月) 19:07:51.36ID:zdocw/KA
これが好み
'{0}$' -f $array[5]
2025/08/18(月) 20:04:20.41ID:Pa7e5Gs8
キモい記法だな
587デフォルトの名無しさん
垢版 |
2025/08/18(月) 21:29:02.39ID:Ydgj3IKT
-gt -ge -lt -leが覚えられないんだが
なんでこんなクソ記法にしたん?
2025/08/18(月) 21:38:20.35ID:FxxqvCUB
UNIXのshの記法だよ
どうせ非互換なんだからそんなとこだけ合わせんでもいいのにな

ちな実際に使われてるbashやzshでは拡張構文があるのでそんな書き方はしなくていい
2025/08/18(月) 21:49:57.69ID:1syDG9J2
gt → greater than
ge → greater than equal
lt → less than
le → less than equal
覚えられないことは無いだろ
2025/08/18(月) 22:27:56.29ID:KSZiSj98
shは条件判定が外部コマンド( /usr/bin/[ )になってるからリダイレクトで使う不等号を使えなかったんかな
2025/08/18(月) 23:44:31.03ID:a/rWUBXI
リダイレクト記号の > が大なりと判定されたらされたでキレる奴はたくさんいるし、文脈で判断すると難しいと不満を漏らす
gt や lt は天下のHTMLやXMLでもお馴染みだし ge も含めて ALGOL や Fortrun の時代からあるらしいから由緒ある演算子サマだ
2025/08/19(火) 00:24:31.91ID:Idn/vjK6
コマンドのワンライナーでも動かないとダメだしパイプやリダイレクトとも共存しないとダメってなると文法自体が分かりづらくなるのはやむなし
c#のスクリプト版みたいに思われてるけど本来そういうものじゃない
593デフォルトの名無しさん
垢版 |
2025/08/19(火) 19:46:40.89ID:0LMCTzzK
>>589
やめてやれよ!
2025/08/20(水) 07:51:25.99ID:M8TEndqZ
結論 コマンドプロンプトでいい
595デフォルトの名無しさん
垢版 |
2025/08/20(水) 09:46:38.94ID:fQ+KVP3R
コード書くにはメモ帳で十分みたいなこと言うね
2025/08/20(水) 11:21:33.79ID:wDjB3YqX
老人は新しいことを覚えるよりも古い道具のハック含めていろいろ知ってるからね
2025/08/20(水) 11:56:14.66ID:Xf/p3Qkz
こういう立ち止まってくれる人達がいるから相対的に新しい技術にキャッチアップする若者がひきたつんだよな
感謝です
2025/08/20(水) 13:09:09.63ID:eox7iA6W
立ち止まって深掘りするのもいいけど、立ち止まるなら立ち止まる土地を間違えないことが大事
10年前からWindows Serverの設定職人として立ち止まった人とAWS職人として立ち止まった人なら、同じ苦労をしても圧倒的に後者の方が現在の価値は高いわけで
2025/09/05(金) 00:20:11.88ID:MID+NCuc
同じプロジェクトで未だにスクリプトをbatで頑張るおじさんがいてキツイ
2025/09/05(金) 08:27:44.85ID:ci6Mzi4c
batなんかどうせ大して複雑なことできないんだから実害はほとんどない
むしろPowerShellで何でもやろうとするおじさんのほうが潜在的には問題になりやすい
というかbatおじさんが現役で活躍できるような職場でPowerShellやってんならお前も側から見りゃ大差ないから嫌ならさっさと転職しろ
2025/09/05(金) 12:35:07.92ID:Gl7iryF4
まあbatというかcmdのほうがド安定だよな
PowerShellはバージョンアップで動作が変わったりするので書いた本人がいなくなったあと困るんじゃないか
2025/09/05(金) 13:24:51.33ID:/aSZPCtW
AIがあるから困らない
2025/09/05(金) 15:17:33.01ID:D2PHAyAe
batおじさんワラワラ湧いてて草
2025/09/05(金) 22:20:18.61ID:Yt4Zwm1N
batの弱点は特殊文字のエスケープ処理がバラバラだったりそもそもエスケープできなかったり
605デフォルトの名無しさん
垢版 |
2025/09/05(金) 22:29:13.57ID:OEkVQg6g
>>604
昭和50年代のパソコン向けに作ったものに文句を言うな!
606デフォルトの名無しさん
垢版 |
2025/09/05(金) 23:27:31.40ID:5dsIw3pX
cmdの方が優れてるよ
2025/09/06(土) 04:14:29.73ID:ynW6i2Wh
batが現役なの?
ヤバw
2025/09/06(土) 08:28:06.76ID:aRqXD+gf
.batと.cmdの違いがいまだに分からん
わざわざ新しい拡張子を作るなら分かりやすい構文でも導入すればよかったのに
このスレで言う事じゃないけど
2025/09/06(土) 08:32:48.89ID:4EdO9DqN
>>470
今更だが、環境変数PSModulePathの並び順で旧ver用を下にしたら直った
2025/09/06(土) 13:36:28.33ID:5qDTqjrD
>>594で結論出てるじゃん
611デフォルトの名無しさん
垢版 |
2025/09/07(日) 09:38:44.50ID:lhUzQ3fL
HTMLのリンク先がリダイレクトされる場合、自動でそのリダイレクト先のURLを取得するにはどのような方法がいいでしょうか?
$response = Invoke-WebRequest -Uri 壊れたリンク -MaximumRedirection 5 -ErrorAction SilentlyContinue
$location = $response.Headers['Location']
を試しているのですが、リダイレクト先のURLは取得できませんでした。

HTMLのリンク先は下記のとおりに取得してます。
$srcHtml = Invoke-WebRequest $url -UseBasicParsing
$html = New-Object -ComObject "HTMLFile"
$img = $html.getElementById("img").getAttribute("src")
2025/09/07(日) 21:42:00.61ID:QSfkLFkm
-MaximumRedirection の値を5から0に変える

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/invoke-webrequest#-maximumredirection

-MaximumRedirection
接続が失敗するまでに、PowerShell が代替 Uniform Resource Identifier (URI) に接続をリダイレクトする回数を指定します。 既定値は 5 です。 値が 0 (ゼロ) の場合、すべてのリダイレクトが禁止されます。
613デフォルトの名無しさん
垢版 |
2025/09/11(木) 20:02:03.10ID:4eE1ZwVF
V7.4.12とV7.5.3が出ました。
2025/09/12(金) 08:06:46.54ID:tXxo6/Yo
マジカルちんぽの持ち主になりたい
615デフォルトの名無しさん
垢版 |
2025/09/13(土) 09:54:11.18ID:TD1k3ZCB
俺も!
2025/10/03(金) 00:50:10.33ID:cCuQP3el
transcriptってログ取るのにめちゃくちゃ便利ですね
今までログ出力ゴリゴリ書いちゃってたけどもっと早く知りたかった
617デフォルトの名無しさん
垢版 |
2025/10/03(金) 09:18:17.43ID:alJoLTal
bashだったらscriptコマンドで苦労しなかったのに
2025/10/04(土) 15:26:39.76ID:lUW04DD1
そう思う人が何でこのスレに来るの?
一人で勝手にbashでオナニーしてればいいだけでしょ
2025/10/04(土) 21:22:40.46ID:TzWBzZl4
まぁまぁそんないじめなさんな
620デフォルトの名無しさん
垢版 |
2025/10/12(日) 01:42:26.66ID:DKsy7+ZR
scriptとか使わんでも
たぶん標準、だったかな?
でpsのセッションはすべて保存されてるとおもうが…
621デフォルトの名無しさん
垢版 |
2025/10/12(日) 01:55:12.70ID:DKsy7+ZR
ごめん今$profileみたらStart-Transcriptを自動で呼ぶようにしてて、標準ではたぶんアクティベートはされてないわ
Start-Transcriptコマンドレットが>>617のいうtclのscript(b系shで代わりによく使われるヤツ)の上位互換だよ

tclのscriptやpwshのStart-Transcriptは普段から使っておくべき
ログが膨れ上がるから、無駄なタイプアウトを控える良い癖がつく、すなわち後から振り返り難くないよう、セッションのログを汚さないようにとslsやページャに頼るようになるということだ
622デフォルトの名無しさん
垢版 |
2025/10/12(日) 02:00:35.65ID:DKsy7+ZR
transcriptしてれば、脳死gci連打したりと恥ずかしい思いを避けるように、毎回熟慮したスマートなコマンドを構築しようとスキルアップへ向かえるわけですよ
オススメ
623デフォルトの名無しさん
垢版 |
2025/10/14(火) 10:05:34.66ID:wYGHc35C
困ってます。ps1をショートカットで簡単に開けなくなりました。
Powershellを楽に実行してもらうには
https://qiita.com/tomoko523/items/df8e384d32a377381ef9
↑これを参考にして、
ps1ファイルのショートカットを作って、プロパティのリンクに、
powershell -ExecutionPolicy RemoteSigned -File
という文字列を最初にをつけるというのをやりました。

powershell -ExecutionPolicy RemoteSigned -File C:\Users\User\Desktop\test.ps1
みたいな感じになる。
それでショートカットのダブルクリックでps1ファイルが開けてた。

でも、しばらくすると、新しくショートカット作ったらダブルクリックでできなくなった
というか、ショートカットのリンクに
powershell -ExecutionPolicy RemoteSigned -Fileの文字列を貼り付けたら、okを押せなくなった。
エラーメッセージが出て。
で、前に作ったやつはダブルクリックでできたので、それを開いて確認したら、
powershell -ExecutionPolicy RemoteSigned -Fileの
powershellの部分が
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
に勝手に書き換わってた。

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
-ExecutionPolicy RemoteSigned -File C:\Users\User\Desktop\test.ps1 みたいな感じ

たぶん、できなくなる前後くらいに、windows powershell v5.xしかなかった環境に
powershell v7.xをインストールしたからだと思う
powershellって文字列で、自動でwindows powershell v5と連携できてたのが、
powershell v7を入れたせいで、環境変数?とかが変わったのか、よくわからないけど
自動で連携できなくなったのかな。
で、前のやつは、いつのタイミングか、powershellの文字列が、windows p.s. v5へのパスに変わってたんだと思う。
powershell の文字列で、ショートカットのリンクに文字列入れてやる方法ないでしょうか?
624623
垢版 |
2025/10/14(火) 10:13:14.09ID:mzx6xthf
[Window Title]
ショートカット エラー

[Content]
受け側に指定されたパス名 'powershell' は無効です。パスとファイル名が正しいか確認してください。


エラーメッセージはこれです
でも、はじめはps1のショートカットで
リンクの文字列を追加するときは
powershell~だけで
powershellへのフルパスがなくてもok押せて、ダブルクリックで起動できてたんですよね

なにかpowershellの文字列だけで
v5やv7を自動で起動できるように設定する方法とかわからないでしょうか?
2025/10/14(火) 10:46:54.11ID:kTH6cc0X
powershell7を入れるとpowershell5とは違うパスにインストールされて
powershell => v5
pwsh => v7
という具合に使い分けができる
powershellが呼べないなら
そのパスにpowershell.exeが無いのかもしれない
> 受け側に指定されたパス名 'powershell' は無効です。
というエラーがそれを裏付けてると思う
まずはv5の本体があることを確認するべき
バージョンアップした感覚で
自分で「古いv5はいらないからアンインストールしちゃお」としてるかもねw
2025/10/18(土) 01:00:25.12ID:ziLvdPa/
>>623
>powershellの部分が
>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
>に勝手に書き換わってた。
これは正しい動作

現在、動くショートカットが有るならば、v5は消されていない
ps1ファイルのショートカットを作成した直後ののアイコンと
プロパティに「powershell以下略」を追記したショートカットでは
アイコンが変化する。変化してるならリンクは正しい

正常動作するショートカットのリンク先をコピーしてメモ帳に張り付けて
新しく作りたいリンク先を見比べながら書いたらどう?
627デフォルトの名無しさん
垢版 |
2025/10/20(月) 16:54:33.98ID:h3FEiN7d
ショートカットの文法はcmdともなんか違ってて謎が謎を呼ぶ闇
628デフォルトの名無しさん
垢版 |
2025/10/21(火) 05:46:20.22ID:P/yrOpCN
Z7.4.13とV7.5.4出ました。
https://github.com/PowerShell/PowerShell/releases/tag/v7.4.1
https://github.com/PowerShell/PowerShell/releases/tag/v7.5.4
629デフォルトの名無しさん
垢版 |
2025/10/21(火) 05:46:43.72ID:P/yrOpCN
7.4.13
https://github.com/PowerShell/PowerShell/releases/tag/v7.4.13
630デフォルトの名無しさん
垢版 |
2025/10/21(火) 22:17:43.72ID:5krLOdY4
ショートカットの文法ってのがコマンドラインパラメータの事を言ってるなら
別プログラムなんだからcmdと違っても普通でしょ? 何が謎なの?
2025/10/27(月) 23:10:58.60ID:JqegERzu
自分も似たようなこと(カスタムURLスキーム経由で登録済みバイナリにメッセージを送信)をしてたけど、これはかなり丁寧にパッケージングされてる
GitHub - Fred-Vatin/run-yt-dlp-from-browser: Run yt-dlp commands from any browsers
https://github.com/Fred-Vatin/run-yt-dlp-from-browser
632デフォルトの名無しさん
垢版 |
2025/11/01(土) 07:47:46.11ID:f9BTIAf7
何もしてないけど PowerShell v7.5.4 が WindowsUpdate で降ってきた
履歴ちゃんとみたらいつまにか PowerShell って WindowsUpdate で降ってくるようになってたわ
633デフォルトの名無しさん
垢版 |
2025/11/02(日) 18:28:28.27ID:SCfEy8Hn
バナーで更新通知見かけてもwinget updateで更新できなくてそのうちWindows Updateで更新されてる
2025/11/02(日) 22:12:18.83ID:BJEeTNbw
ターミナルでタブを移動しようとしたら消しちゃって泣きを見たのでタブを縦に並べられるtabbyを使ってる
地味に便利
635デフォルトの名無しさん
垢版 |
2025/11/04(火) 22:05:10.67ID:s16lpjGn
Tver のサイトで特定のドラマのページを開いたときに右上に表示されている最新話のURLを取得したいんですが知識がなくてさっぱり・・・
例えばちょっとだけエスパーの
https://tver.jp/series/srm706pd6g
で右上に表示されているエピソードを再生のURLをとりたいのですがソースを表示するとどこにもない
2025/11/05(水) 00:15:01.45ID:R4zLjHDf
このスレで聞くことか?
2025/11/05(水) 00:19:16.72ID:bd8fkRgq
PowerShellの質問ではないわな
2025/11/05(水) 03:58:33.49ID:79mqo3N4
>>635
ソースで見ると表示されないのはJavaScriptで生成されてるからで、素のHTMLには書かれてないんだよ
ブラウザでエピソードを再生を右クリックして「検証」とか「調査」っていうメニューで確認できるよ
使っているブラウザのスレで開発ツールの使い方を教えてもらうか、ChatGPTに聞くのが分かりやすいと思う

ChatGPTにuserscriptを作ってもらうか、どうしてもPowershellでやりたいならapiを叩いたらどう?
ttps://pastebin.com/paBznTfW
これもChatGPTに教えてもらうと良いよ(↑のもChatGPTが作ってくれた)
639デフォルトの名無しさん
垢版 |
2025/11/05(水) 18:41:39.53ID:VnEpJmCQ
>>638
ありがとうございます!!!
もっと精進します
2025/11/06(木) 20:55:27.46ID:ra3gomFv
PowerShell に関するお問い合わせ時の留意事項
https://jpwinsup.github.io/blog/2025/11/06/UserInterfaceAndApps/PowerShell/PowerShell-SupportGuidlines/
2025/11/09(日) 01:50:45.56ID:/5rAS6BZ
>>640
>なお、 .NET Framework や Win32 API は、C#/VB#/C++/C といったプログラム言語からのご利用を目的として提供している機能になり、動作確認もこれらの言語で行っていただくことをお願いしております。
>また、これらの言語で正常に動作しながらも、PowerShell 上で期待通りの動作とならない場合は、プログラミング言語のご利用をお願いしておりますことをご留意ください。

あれれ?
PowerShellでたての頃って.netのオブジェクト使えるの売りにしてなかったかな?
2025/11/09(日) 09:43:41.33ID:9rrS+2ZK
最近の.NETは言語非依存を放棄してるからな
例えばSpanはPowerShellから使えない

Question about System.Span
https://github.com/PowerShell/PowerShell/issues/5897
2025/11/09(日) 10:23:37.05ID:VPZLG56/
.NET Frameworkって書いてあるからCore系の.NETは関係ないでしょ。Core系もサポートの方針は同じだろうけど。
PowerShell6以降のユーザーなんて5に比べりゃほとんどいないだろうし、
わざわざ6以降使ってる人はそんなに変な問い合わせしてこないだろうからサポート的にはあまり問題にならないんだろう
2025/11/18(火) 00:02:06.52ID:mC1Jcub0
c#14でファイルベースでスクリプトライクに書けるようになった
もうpowershellはオワコン!
645デフォルトの名無しさん
垢版 |
2025/11/18(火) 17:30:44.99ID:d9hs+rsN
それパイプは直感的に書けるか?
2025/11/20(木) 16:43:19.74ID:11rVJeas
5ってまだ共存してるの?UTF8BOMの問題があるのでcmdでも使えばいい気がするが
2025/11/20(木) 17:49:39.55ID:UDbnkgrO
PowerShellは速度も使い勝手もこのbatに勝てなかった

@echo off
%windir%\Microsoft.NET\Framework64\v4.0.30319\csc.exe /nologo %1
if errorlevel 1 exit /b
"%~dpn1.exe"
2025/11/20(木) 21:31:44.69ID:QY1RnXH9
C#はPowerShellみたいにWMIを簡単に扱えないじゃん

WMI インスタンスの取得
https://learn.microsoft.com/ja-jp/windows/win32/wmisdk/retrieving-an-instance
2025/11/21(金) 09:24:25.92ID:+qc1E8Ol
比較
OS標準だとC#は古いやり方しかできなそう

<PowerShell>
Get-WmiObject -query "SELECT * FROM Win32_Process" | ForEach-Object {
 $name = $_.Name
 $id = $_.ProcessId
 . . .
}

<C#>
foreach (var p in new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_Process").Get())
{
 var name = p["Name"];
 var id = p["ProcessId"];
 . . .
}
2025/11/21(金) 10:03:57.43ID:3+xXClvM
>>640
最初は分けて書いてるがそれ以降のPowershellが
Windows 付かない方のPowershell 限定なのか
Windows 付く方も含めてなのかよくわからない

>>641
無印 は.Net Framework 向けでないという表現なのか
無印も.Net Frameworkだめというのかどっちなのか

.NET Framework上で動くのがWindows Powershell
3.5.1(まだある) + 2(廃止)
4.8.1 + 5.1 現行のプリインストール
.NET 上で動くのがPowershell
core2or3 + 6-7.0
5.0 + 7.1 以降
やはり改めて確認しないとわからない
なんで分かりやすい別の名前にしなかったのか
651デフォルトの名無しさん
垢版 |
2025/11/22(土) 10:00:08.95ID:X6U8TT//
WMIって非推奨なんだっけ
普通に業務で使ってるけど
2025/11/22(土) 15:21:40.53ID:LaYCYKWP
Windows クライアントの非推奨の機能
https://learn.microsoft.com/ja-jp/windows/whats-new/deprecated-features

WMIC ユーティリティは非推奨となり、今後の Windows リリースで削除される予定です。 このユーティリティは、WMI のWindows PowerShellに置き換えられます。 この非推奨は、 コマンド ライン管理ユーティリティにのみ適用されます。 WMI 自体は影響を受けません。
2025/11/22(土) 19:36:43.52ID:F8YvH3R6
wmiなくなる話はないが使い方変わってる
Powershell 6以降WMI v1コマンドレット無い
今のところWindows Powershell 無くす話はないが
書き直すならPowershell でCIM (WMI v2)コマンドレットにしておいた方が無難?
https://learn.microsoft.com/ja-jp/powershell/scripting/whats-new/differences-from-windows-powershell?view=powershell-7.5#wmi-v1-cmdlets
2025/11/26(水) 15:45:38.37ID:0sOrUy4b
PowerShell のプログラムで時々見かける

 if ( hoge ) {
  hogehoge
 }
 else {
  fugafuga
 }

みたいな
elseのところを2行に書く書き方が気持ち悪いし
PowerShell にコピペでインタプリタ的に実行させると閉じ括弧で構文が終わったと判断されて実行されちゃう
(さらに外側に括弧があれば構文として成り立つけど)
2025/11/27(木) 10:58:01.72ID:iSxBbXck
オレは気持ち悪いと思ったことない
言語特有の文法とか個人個人の書き方とか色々あるし
それで別にいいじゃんって思ってる
仕事でプログラムやスクリプト使ってる人たちは
その職場のルールもあるだろうけど
素直に従っておけばいいだけ
改良の余地があるなら進言するだけだし
2025/11/27(木) 12:30:08.06ID:Z/DnqSSi
普通じゃないし普通に気持ち悪いだろ
2025/11/27(木) 12:58:20.26ID:tq5aNNAF
ベストプラクティスにはそこまで細かい規約なかった
https://learn.microsoft.com/en-us/powershell/scripting/developer/cmdlet/strongly-encouraged-development-guidelines

C#、明示されてないがサンプルは三行
これに準じると閉じてエンターで走る
https://learn.microsoft.com/ja-jp/dotnet/csharp/fundamentals/coding-style/coding-conventions
2025/11/27(木) 15:27:32.59ID:Z/DnqSSi
普通(既存宗教):
} else {
または
}
else
{

奇形(新興宗教):
}
else {
2025/11/27(木) 15:30:06.19ID:Z/DnqSSi
>>657
C#とPSは違うだろ
PSのコーディング規約なんてあるのか知らんけど
2025/11/27(木) 15:39:55.59ID:o+yFQZuV
https://github.com/akiGAMEBOY/PowerShell_mysql-to-csv/blob/master/source/Main.ps1
これは両方の記述が混在してるな
2025/11/27(木) 16:35:40.04ID:/I+q4k2H
powershell民なら
} else
と書いておく
こうすると解釈が延長するわけでelse節が無ければ次行で
{}
と書いて終わらすこともできる
これはpowershell民に限らず行志向言語の常識的イディオム
2025/11/27(木) 16:51:14.83ID:o+yFQZuV
>>661
その理由はおかしくないか?
以下のように同様の理屈が成り立つ

}
で終わらせておく
elseで続けたい場合は
else {
で始められる
2025/11/27(木) 16:53:53.08ID:o+yFQZuV
ああ、インタープリタ的な使い方ってことか
2025/11/27(木) 16:58:55.38ID:o+yFQZuV
ならとりあえず
} else {
と書いておくほうが良い気がする
2025/11/27(木) 21:48:18.93ID:L4seW1+I
elseは使わないようにする
2025/11/27(木) 23:03:58.47ID:0ZpriLCv
5.xは三項演算子がないので他の言語よりelseを使う機会が多くなりがち
2025/11/28(金) 10:07:39.92ID:YEOTrRQk
Weekend Scripter: Best Practices for PowerShell Scripting in Shared Environment
https://devblogs.microsoft.com/scripting/weekend-scripter-best-practices-for-powershell-scripting-in-shared-environment/#use-consistent-indentation
PowerShellのコーディングスタイル
https://tech.guitarrapc.com/entry/2017/12/03/230119
2025/11/28(金) 10:46:55.41ID:XwmNjHGj
>>667
「ただし、これは、普段どちらで書いているかなどに左右されますし、チームでの共通化がとれていればいいのでしょう。

ちなみに、コミュニティでは、Stroupstrupが意外と多い結果です。」
2025/11/28(金) 11:06:29.89ID:mxO2kQAk
if 真ならelse の中いかないし
if 偽ならelse の中やりたいし
else 閉じて走るのがまずい状況がすぐに思い浮かばない
2025/11/28(金) 15:12:40.52ID:XwmNjHGj
これだけアチコチで使われてるとなると新興宗教とは言えない雰囲気
2025/11/28(金) 20:46:10.65ID:24RBB+24
なんにしろ行志向言語で中括弧を採用すること自体が悪手だったのは間違いない
2025/11/28(金) 21:20:01.11ID:8z0qQ195
>>667
Stroupstrupって構文スタイルなのか…

しかもちゃんと「式解釈では問題ありませんが、PowerShellにはった時elseでエラーがでます。」って説明まで書いてる

いや、なんでこれが多いんだよ
意味わかんねぇよ…
2025/11/28(金) 21:59:10.04ID:YEOTrRQk
https://ja.wikipedia.org/wiki/字下げスタイル

ストロヴストルップ・スタイルはビャーネ・ストロヴストルップがC++で使ったK&Rスタイルで、ストラウストラップのプログラミング入門 C++によるプログラミングの原則と実践やThe C++ Programming Languageといった彼の著書で使われている。

前述のスタイルと異なり、cuddled else (elseの前後に}と{を置くスタイル) を使わない。したがってストロヴストルップ式では次のようになる。

if (x < 0) {
puts("Negative");
negative(x);
}
else {
puts("Non-negative");
nonnegative(x);
}
2025/11/28(金) 22:18:41.05ID:HY2syTcn
誰だよスッポスッポ先生のことふざけた空耳日本語で呼ぶジャップは・・・
2025/11/28(金) 23:42:10.29ID:8z0qQ195
else の後ろに括弧置いてるじゃん…

あ、いやそういう事じゃなくて不都合が発生しうる可能性があるスタイルをわざわざ使うってPowerShellにおいてはバカでしかないと思うって話
自分が良ければそれでいいって事?
少なくともインターネッツに載せるなら可能性が考慮されてなくてダメじゃね?
676デフォルトの名無しさん
垢版 |
2025/11/29(土) 10:54:08.34ID:ABxtwAdA
ある人が書いたpowershellで動くスクリプトの書き方が
別の人がpowershellで動かしてエラーが出るのは困るよね
っていう話なの?
2025/11/29(土) 12:36:08.79ID:RVWnFQqp
スタイルだからそれぞれ拘りがあるってだけだろ
そのスタイルで統一されてれば問題ない
2025/11/29(土) 14:43:58.37ID:nY8K5zGd
良いスタイル悪いスタイルがあるのになぜか悪いスタイルが流行ってるって話だろ
そもそもスタイルが分かれるような構文を採用したのがだめなんだけどな
2025/11/29(土) 15:48:53.71ID:RVWnFQqp
おそらくC++から流れてきたんだろうと想像する
>>673にあるプログラミング入門 C++、The C++ Programming Languageが教科書になった人々
680デフォルトの名無しさん
垢版 |
2025/11/29(土) 16:28:37.98ID:m7OsZTNV
C/C++のK&R派ではあるけど
文における{}
関数定義における{}
構造体/クラス宣言における{}
namespaceにおける{}
どれも扱いが違う
成形ツール使えばなんとでもなる
PowerShellなんてどうせ描き棄てだからどうでも良い
2025/11/29(土) 16:48:02.25ID:RvNmPLXk
例えば

先輩「PowerShell でこうやって IDE で書くこともできるけど普通に貼り付けて実行も1行ずつ実行する事もできる」

新人「ホントだ!ありがとうございます!」

新人「Windows標準で使えるし家でも勉強がてらやってみよう」
新人「うーん…よく分からない。検索するかぁ」

初心者向けWebサイト「(Stroupstrupスタイルで記述)」

新人「(貼り付けて)あれ?エラーが出る…よく分からない…」

みたいな話

初心者向けWebサイトはチームとかもないし誰が見るかも無いから、Stroupstrupスタイルは適していないってこと

ブログやQiitaとかならまぁええかとは思うし、チーム内で決めて使うならいいと思う
2025/11/29(土) 17:02:38.86ID:SvUt/JNW
} をどんな構文でも常に行末としておき、if と else if を行頭に並べればブロックが対称的に見えるので美しく感じる
そんな理由があるという
けど全然共感できない
ifブロックが単に2つ続いているだけのパターンと、ifとelse ifが続いているパターンを取り違えるのは古典的なバグ
ならcuddled elseのほうがあえて相似形を崩して即座に峻別できるように喚起できるので合理的
2025/11/29(土) 18:21:27.95ID:UB7+qwb1
powershellなんて基本書き捨てだしスタイルなんて気にしたことない
vscodeのフォーマッタ任せ
2025/11/29(土) 23:17:33.20ID:2Vwa6pZU
公式ドキュメントでも
}
else {
になってるな

about_If
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_if
685デフォルトの名無しさん
垢版 |
2025/11/30(日) 14:27:29.65ID:+PAfB5o2
}
else{
でしか理解出来ないってのは池沼
2025/12/04(木) 00:02:31.58ID:FQN2sxAz
そういえばChromeとかFireFoxの開発者ツール画面のPowerShellでコピーっていつの間についてたのかしら
社内のしょうもないシステムのデータ落とすだけならマジでRPAとかいらんな
2025/12/10(水) 08:52:12.78ID:aQIrInSg
PowerShell 5.1: Web コンテンツからのスクリプト実行の防止
https://support.microsoft.com/ja-jp/help/5074596
2025/12/11(木) 09:00:26.27ID:qbXRYm+Y
「Windows PowerShell 5.1」に「IE」要素排除のための仕様変更
「Invoke-WebRequest」に警告を追加、2025年12月のセキュリティパッチ以降の適用で
https://forest.watch.impress.co.jp/docs/news/2070166.html
2025/12/25(木) 10:31:39.54ID:vIZfTBKk
powershellで旧IE(Edgeじゃない方)起動出来てしまう問題は排除されないのか
引用
>>あなたはマイクロソフトのことを全く知らないようですね。
マイクロソフトは互いに憎み合うサイロ化されたチームで構成されているんです。
ジェフリー・スノーバーは、解雇の危機を覚悟でPowerShellとWindows Server Coreを発明しないよう警告されました。
しかし、解雇されたわけではなく、降格させられました。
彼はテクニカルフェロー(Microsoft最高位)まで這い上がりましたが、Windowsチームは抵抗し、
PowerShell 5.1以降のバージョンは統合されませんでした。
スノーバーは2022年にMicrosoftを去りました。他に誰がMicrosoftを去ったかご存知ですか?
マーク・ルコフスキー(バルマー氏の椅子投げ事件の犯人)と
ニールス・ファーガソン(21年間Microsoftに勤務。
英国内務省がBitLockerにバックドアを要求した際、「死んでも構わない」と断言しました!彼はまだ生きています。)
ハントより上位の人物は既にマイクロソフトを去り、彼らのビジョンは実現されていない。
今、この世間知らずの成り上がり者は、マイクロソフトで最も古く、最も実績のあるコードをRustに移植しようとしている!
一体何のために?誰かがRustを神聖視しているのだ。
取締役会は、彼のプロジェクトの費用と利益の少なさを目の当たりにし、次の決算説明会で彼を解任するだろう。
>これがMS帝国ってわけ
言語もフレームワークも開発環境もぜーんぶ縦割り行政のお役所仕事で、縄張りと予算を奪い合う派閥争いを
延々と繰り広げてるんだからそりゃうまくいくわけねーわなwww
2025/12/25(木) 11:26:59.21ID:lBuc32NG
PowerShellというか.NETをWindowsの中核から排除した選択は正しかったと思うけどね
本当にWindowsの第一級シェルとしての地位を得たいならPowerShellは.NETに依存すべきではなかったけど、
.NETがイケイケだった当時としては他に選択肢は無かったんだろうね
2025/12/25(木) 11:41:55.69ID:CSnbSViW
.NET同士でバージョン間の断裂がなければ全部.NETで良かったんだろうけども
2025/12/25(木) 21:41:48.82ID:KGztzqoh
.NETじゃなかったら何だったらよかったんだよCOMか?
2025/12/25(木) 22:00:37.49ID:VryGqLHn
普通にネイティブ実装のインタプリタからCOMやWin32 APIを呼ぶ形でよかったでしょ
どうせPowerShellからWindowsの管理操作をするときは直.NETじゃなくて出来合いのPowerShellモジュールを使うんだから内部実装の違いでしかないし、
それに加えて標準ライブラリとしてコレクション関連と文字列操作とくらい一通りあれば十分
.NETみたいなクソデカランタイムは要らん
2025/12/26(金) 21:43:08.09ID:ans4qgk5
それWSHと違うの?
2025/12/26(金) 22:51:01.41ID:1EKz8SB2
PowerShellはふつーにWSHに載せてVBSやJSと並ぶ存在、ただ単に対話型に向いた構文してるだけ、で良かったと思うよ
696デフォルトの名無しさん
垢版 |
2025/12/27(土) 11:57:18.36ID:yLzEvkiB
.NETメソッド使い倒してるから普通に困る
2025/12/27(土) 13:59:57.46ID:q/vQbRVL
セキュリティ設計の古さを考えるとWSHは現役のまま残せない
PSのバックエンドとしてだけアクセス可能にするにしてもリスクは排せないしPSをメンテする側にとっても不幸
2025/12/27(土) 21:12:57.30ID:4T/B2zCM
そこでWSHを強化しますにならずに似たようなもの作ったからWSHは捨てますになるのがいつものMS仕草
2025/12/27(土) 22:07:21.18ID:11WHwtls
WSHを捨てるつもりならjscript9Legacy.dllをわざわざ作ったりしない
VBScriptは捨てられたけど

それはともかくWSH版シェルが欲しいならこんなのはどうよ
ただのREPLな気もするけど

A JScript interactive interpreter shell for the Windows Script Host
https://kobyk.wordpress.com/2007/09/14/a-jscript-interactive-interpreter-shell-for-the-windows-script-host/
2025/12/29(月) 08:46:41.66ID:4LXx3Tl+
COMならpowershellでいい
HTAのようなGUIを使いたい
不便さが逆行してるwebviewは使い難いからコンポーネント化してMS標準ランタイムに放り込んどいてくれ
powershell専用とかじゃなくWebGUIやりたいって人向けで売りなよ
まあ今のMSには無理だが
2025/12/29(月) 10:28:35.98ID:/XCFFINi
そりゃWebView2かElectron使えば済む話だからな。
今のMSにできないんじゃなくて「今のMSに」「あなたは」「もう必要とされていない」んだよ。残念なことに。
2025/12/29(月) 14:20:51.12ID:cmiFtpyp
>>699
Chromium Edgeではなく旧EdgeのJSというのがもうやる気ないでしょ
2025/12/29(月) 22:35:52.28ID:aek8QCZy
V8ってActive Scriptに対応してるの?
2025/12/29(月) 22:53:52.55ID:/XCFFINi
v8は純粋にJavaScript実行エンジンであり、Active Scriptingとはレイヤが違う
v8をホストするアプリケーションがActive Scriptingを実装することはもちろん可能
2025/12/30(火) 08:34:30.77ID:PJydqEA9
V8を使いたいならNode.jsがあるだろ
TypeScriptもNode.jsだし
2026/01/09(金) 14:17:40.09ID:6yKW3D0U
scriptコマンドって制御文字邪魔じゃね?
普通にless -rとかすればいいんだろうけどさ…
2026/01/18(日) 21:34:26.79ID:aGGpuTTT
質問です。
多行バッチファイル記述でcall(GoSub)文を通すとCMDも「exit /b」の次に
「指定されたドライブが見つかりません。」がドライブ直下に置いても表示されてしまいます。
なーぜーなんでしょー?
例……が短くすると出ない

@echo off
cd /d %~dp0
chcp 932
:Menu
cls
set "REG_KEY=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
set "REG_NAME=DisplayVersion"
set "choice=x"
set /P choice="キー選択(1 2end)後エンターキー: "
if %choice%==1 call :GoSubView
if %choice%==2 goto Fin
pause
goto Menu

:GoSubView
reg query "%REG_KEY%" /v "%REG_NAME%"
exit /b

:Fin
pause
goto :EOF
708デフォルトの名無しさん
垢版 |
2026/01/19(月) 12:13:11.04ID:mH93cqG6
call GoSubView
709デフォルトの名無しさん
垢版 |
2026/01/19(月) 14:46:49.35ID:EocMGaWu
まずbatはPowerShellじゃないよね
710707
垢版 |
2026/01/19(月) 17:13:03.54ID:3TKGNrGs
>709
Windows11 の場合、ターミナル(管理者)でWindows PowerShell(管理者)
Windows1 の場合、Windows PowerShell(管理者)
を開いてバッチファイルを .\〜.bat 又は .\〜.ps1 実行するのですが?
.bat も .ps1 も同様に「指定されたドライブが見つかりません。」が出ます。
CMD 窓でも出ます。
2026/01/19(月) 17:14:37.85ID:3TKGNrGs
>710
誤: Windows1
正: Windows10
2026/01/19(月) 18:29:00.94ID:uJ/OHGGp
ここで問題です
語尾「ですが?」に続く文はどれ?
1.「だからbatはPowershellである」と真っ向反論しようとしたけどおかしい気がして踏み止まった
2.「だからここに投稿した私は酌量の余地がある」と堂々甘えるのは憚られたので察してほしい
3. 続く文がうまく思いつかず、よく分かってないことが分かったのでぼんやり濁して乗り切りたい
2026/01/19(月) 22:02:52.31ID:eFSAtUs+
スレ違いPowerShellスレで聞くな

【.cmd】 バッチファイルスクリプト %15 【.bat】
https://mevius.5ch.net/test/read.cgi/tech/1663153441/
2026/01/19(月) 22:35:34.86ID:AnBJCHTq
これを機にPowerShell覚えたらいかが?
罠は沢山あるけどそれでもバッチファイルよりはよっぽど楽だよ
2026/01/20(火) 00:20:24.95ID:6psRDVA6
どっちでもいいけどもう自分で書くのはキッパリとやめてAIに任せたらいいよ
ちょっとしたPowerShellでの自動化くらいならプロンプト一発で余裕で完動するから
716デフォルトの名無しさん
垢版 |
2026/01/20(火) 11:15:13.80ID:MljsBgI/
>>707
ディレクトリの区切りがバックスラッシュだから
717デフォルトの名無しさん
垢版 |
2026/01/20(火) 11:16:19.98ID:MljsBgI/
>>716
ごめん間違ったw
718デフォルトの名無しさん
垢版 |
2026/01/20(火) 16:16:45.57ID:H1bs7ZQE
call だと「%~dp0」が展開できないのでは?
知らんけど
2026/01/21(水) 00:38:09.89ID:UJ3vIJHD
>>707
@echo off

@echo on
に代えて実行してみぃ
(それが他人に聞く前にやるべきことのひとつなのだ)
720707
垢版 |
2026/01/22(木) 20:11:37.37ID:7dQ8okJw
>>713
一応ありがとう。
でもPowerShell窓で動かす前提のバッチファイル .ps1含むだと
cmd のバッチスレではスレ違いではないのかい?

そしてPowerShell窓でPowerShell用コマンド打つだけなら
このスレはプログラム板ではなくソフトウェア板が妥当だと思います。

>>719
off せずに処理行も全部表示させてみな ということですよね?
順に表示されていって
「指定されたドライブが見つかりません。」が出ます。
2026/01/23(金) 04:45:27.95ID:L2AMwjwT
>>720
順に表示されていって
「指定されたドライブが見つかりません。」が…

そこをソースと突き合わせて誰が出したか確定させましょうよという意味ナリよ。
くわしくは「デバッグ 切り分け」でググるとかしてちょ。
2026/01/23(金) 10:42:11.03ID:eaQrEowL
>>720
変数が正しく機能していることを確認するためにechoで変数を表示してみる
適度にpauseを加えて処理を停止させて良く見て確認する
これで大抵のバグは判明する
2026/01/23(金) 11:36:26.08ID:Fkym+bDV
707のbatには別に悪いところはないけど
これでエラーが出るのか?
724デフォルトの名無しさん
垢版 |
2026/01/23(金) 15:34:54.00ID:L7eMjnRU
どこかに CRLF じゃなくて LF だけの行があって
ラベルの「:」がドライブとして認識されてるんじゃないの
725デフォルトの名無しさん
垢版 |
2026/01/24(土) 11:26:25.08ID:FDlLGW/V
>>724を見て思ったわ
文字コードの種類とかBOM付きBOMなしとか
案外こういうので引っかかる時ってあるよな
2026/01/27(火) 09:13:57.63ID:tMW5gXDV
そのメッセージ文言はcdコマンドが出すやつ
2026/01/27(火) 09:25:37.59ID:tMW5gXDV
管理者権限で実行しているから
2026/01/27(火) 09:26:17.99ID:tMW5gXDV
NWドライブが見えてないのでは
2026/01/27(火) 09:26:53.45ID:tMW5gXDV
規制で短文しか送れねえ
2026/01/27(火) 11:40:05.33ID:YZLnB6XD
cdは通り過ぎてるだろ
exit /bまでは正常に動いててそこでエラーが出ると書いてある
2026/01/27(火) 13:11:22.84ID:tMW5gXDV
なぜ@echo offを消したかどうかも報告できないクライアントの発言を鵜呑みにする
2026/01/27(火) 13:13:55.65ID:tMW5gXDV
アホ人間の言うことより機械が言うことに耳を傾けよ
2026/02/18(水) 21:56:34.67ID:2S90bdjs
PowerShell, OpenSSH, and DSC team investments for 2026
https://devblogs.microsoft.com/powershell/powershell-openssh-and-dsc-team-investments-for-2026/

PowerShell aliases are a way to create short names for cmdlets or commands. However, advanced users often want more powerful aliasing capabilities similar to Bash shell’s aliases and macros. This includes features like parameter passing, command chaining, and conditional execution. We are exploring options to enhance PowerShell’s aliasing capabilities to better meet these needs.
2026/02/18(水) 22:16:25.45ID:8oK1h93I
DSCなんかまだやってたのか
MS社内でしか使われてなさそうだが社内ではそれなりに重要なのかな
735デフォルトの名無しさん
垢版 |
2026/02/18(水) 23:42:12.02ID:h3HdvelA
他のアプデのOpenSSHとかもいいな

DSCは同じ印象
きっとAzureのデプロイで動いててMS内では大事なんだろうなと想像してる
736デフォルトの名無しさん
垢版 |
2026/02/19(木) 12:45:51.50ID:UoqBzjNL
デンジャラス・スープレックス・コンボ!?
2026/02/19(木) 16:55:25.77ID:uNP2mY2E
nslookup 127.0.0.1 -p=TXT | ipx
738デフォルトの名無しさん
垢版 |
2026/03/13(金) 13:51:20.32ID:bRRcWctS
V7.4.14がデマした。
https://github.com/PowerShell/PowerShell/releases/tag/v7.4.14
739デフォルトの名無しさん
垢版 |
2026/03/13(金) 13:51:58.41ID:bRRcWctS
V7.5.5が出ました。
https://github.com/PowerShell/PowerShell/releases/tag/v7.5.5
2026/03/18(水) 00:16:17.64ID:qqNvWrER
powershellの最新を熱心に追いかける人っているの?
5.1でも十分だしもっと高度なことしたかったらpython使うでしょ
741デフォルトの名無しさん
垢版 |
2026/03/18(水) 12:17:03.80ID:5FczMJyK
ここはpowershellのスレなんだが
2026/03/18(水) 21:14:16.00ID:+Z6PMhdu
PythonにできてPowerShellではできない高度な事って例えば何?
743デフォルトの名無しさん
垢版 |
2026/03/18(水) 21:55:01.16ID:srlbyLK5
形態素解析ライブラリみたいなのを使ってグルグルポン的ななにか
2026/03/18(水) 22:18:20.76ID:fq6T3QGr
WSH対応アプリのスクリプト言語として使われること
2026/03/19(木) 08:35:39.75ID:bWLWDJrg
Announcing PowerShell 7.6 (LTS) GA Release
https://devblogs.microsoft.com/powershell/announcing-powershell-7-6/
PowerShell 7.6 の新機能
https://learn.microsoft.com/ja-jp/powershell/scripting/whats-new/what-s-new-in-powershell-76
746デフォルトの名無しさん
垢版 |
2026/03/19(木) 13:25:09.71ID:WSEULI01
V7.6.0が出ました。
https://github.com/PowerShell/PowerShell/releases/tag/v7.6.0
2026/03/21(土) 23:21:40.85ID:oQEBLW1Z
V7.6起動したときにどこかと通信してるようだけどPowerShell側の設定で通信を止めることできる?
2026/03/22(日) 08:26:58.09ID:6IDLtiWC
新バージョンがリリースされてるかの確認とテレメトリだろ

テレメトリーについて
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_telemetry

> テレメトリを無効にするには、環境変数 $Env:POWERSHELL_TELEMETRY_OPTOUT を true、yes、または 1 に設定します。 この環境変数を有効にするには、PowerShell プロセスを開始する前に設定する必要があります。
2026/03/22(日) 12:37:56.51ID:He5B5aiG
環境変数追加で止まりました ありがとう
POWERSHELL_TELEMETRY_OPTOUT 1
POWERSHELL_UPDATECHECK Off
2026/03/22(日) 12:55:26.47ID:He5B5aiG
やっぱり止まってませんでした
これは何なのでしょう?
184.28.184.92:80
2026/03/23(月) 21:16:55.73ID:GjCJmtOn
何がそんなに気に入らないのか分からんけどファイアウォールで通信ブロックしたら?
2026/03/23(月) 22:54:24.18ID:FBVvIvoX
不要な通信を止めておけばスパイウェアが紛れ込んだ時に通信履歴からすぐに気づきやすいです
V6系は通信止めれるようなので使う時はそちらにすることにしました
2026/03/25(水) 15:43:36.88ID:rofmlxBK
Update check stills runs on startup despite disabling
https://github.com/PowerShell/PowerShell/issues/18090

多分これがまだ直ってない
2026/03/31(火) 14:22:17.66ID:kdwQxHVU
Win11のターミナルを最新版にして既定のプロファイル変更でスタートボタンを右クリックして立ち上げるターミナルも最新版になったが古い方はアンインストールした方が良いか教えてください
755デフォルトの名無しさん
垢版 |
2026/03/31(火) 16:38:03.41ID:t21gE2Cf
しないほうが良いんじゃない?
756デフォルトの名無しさん
垢版 |
2026/04/02(木) 12:31:57.49ID:FhB2fDA5
clip.exeが出力できないのに業を煮やして
wclipをecho "Hello" | pwsh.exe -Command "$Input | Set-Clipboard"
wpasteを'pwsh.exe -Command "Get-Clipboard"'
の対として定義したんたけど、wclipが動かない

これはclip.exeで入力してwpasteで出力するのに問題ないから、まあ良いんだけどね?(多分共通のクリップボードだから)
でも気持ち悪いから修整案あればどうぞ教えて。
2026/04/03(金) 15:30:43.83ID:rKw8tFF/
pwsh -command "'hello' | Set-Clipboard"
2026/04/14(火) 21:15:15.46ID:68AM9NhR
PowerShell MSI package deprecation and preview updates
https://devblogs.microsoft.com/powershell/powershell-msi-deprecation/
Microsoft、「PowerShell」の「MSI」インストーラーを非推奨に
「PowerShell 7.7」からはよりモダンな「MSIX」へ移行
https://forest.watch.impress.co.jp/docs/news/2101019.html
2026/05/02(土) 16:19:01.20ID:EFxMfN5/
PowerShellはバッチコマンドの引数から"^"(キャレット、サーカムフレックス)を除去してしまうのでバッチコマンドに正規表現を渡しづらいね
バッチコマンドに"[^0-9]"を渡したい場合は"[^^^^0-9]"とエスケープして渡す必要がある

不具合じゃなくてれっきとしたPowerShellの仕様なんだろうけど不便だね。。。
2026/05/02(土) 17:19:25.00ID:ru6c6Pz2
どうせAIが書くんだからどうでもいいな
2026/05/03(日) 22:00:52.56ID:piIAiy/9
PowerShellじゃなくてコマンドプロンプトの仕様
コマンドプロンプトのエスケープ文字は^だからね
2026/05/04(月) 12:25:42.06ID:Jfo4Jf9/
試しにPython端末からsubprocess.run()でバッチコマンドを実行したら、PowerShellと同じようにバッチ引数から"^"が除去されて実行されたね
バッチコマンド呼び出し時に引数から"^"が除去される挙動がPowerShellではなくバッチコマンドの仕様なのは確認できた
2026/05/14(木) 09:15:48.13ID:3bGJln+z
>>758
MSが勝手にやってることに"非推奨"って書いてる人間は馬鹿なのか
2026/05/15(金) 11:39:07.29ID:0MfJ9N7a
>>763
使うなって話だよバカ
765デフォルトの名無しさん
垢版 |
2026/05/22(金) 15:53:40.11ID:54GmfLVw
V7.4.16
https://github.com/PowerShell/PowerShell/releases/tag/v7.4.16
V7.5.7
https://github.com/PowerShell/PowerShell/releases/tag/v7.5.7
V7.6.2
https://github.com/PowerShell/PowerShell/releases/tag/v7.6.2
が出ました。
2026/05/27(水) 22:25:42.91ID:2XJ+/BSD
PowerShell is now notarized and hardened for macOS
https://devblogs.microsoft.com/powershell/powershell-notarized-hardened-macos/
Microsoft「PowerShell」がmacOSの公証(Notarization)を取得、「Gatekeeper」の警告がなくなる
v7.4以降のメンテナンスリリースから適用
https://forest.watch.impress.co.jp/docs/news/2111982.html
2026/05/29(金) 23:27:10.93ID:teZbUy7M
https://github.com/PowerShell/PowerShell-RFC/blob/master/CommunityCall/notes/20260521_Notes.md

PowerShell 7 Default Inclusion in Windows Server: Artem Pronichkin from the Windows Server team announced that PowerShell 7 will be installed by default in the next version of Windows Server, discussed ongoing work to address compatibility issues, and invited community feedback, with Jason Helmick and Steve Lee highlighting the significance and next steps for migration and feedback channels.
Announcement of Default Inclusion: Artem Pronichkin shared that the next version of Windows Server (vNext) will include PowerShell 7 as a pre-installed application, making it immediately available after installation or upgrade, similar to how PowerShell 5.1 is currently provided.
2026/05/30(土) 14:47:02.73ID:ihJlnaHc
はよクライアント版にも標準インストールしてくれ
2026/06/03(水) 08:02:40.86ID:k6h6OUHG
案の定PowerShell終了って騒いでるアホがいるなシェルとコマンドの区別がついてない

Coreutils for Windows
https://github.com/microsoft/coreutils
2026/06/03(水) 12:51:22.69ID:Wy1oRWov
chocolateyのgrep.exeは正規表現の-Pオプションをろくに使えないけど、coreutilのgrep.exeは-Pオプションをちゃんと使えるみたいだね
2026/06/03(水) 13:14:34.24ID:Wy1oRWov
Coreutilsは環境変数PATHやPowerShellのプロファイルファイルを勝手に書き換えるなど行儀がかなり悪いから、仕事用PCには入れないほうが良さそう
772デフォルトの名無しさん
垢版 |
2026/06/03(水) 23:21:52.61ID:EJ1qmeAt
PowerShellはほとんどエイリアスと競合するし
cmdなんて今更使わないし
そんなにLinuxコマンド使いたいならWSL使うし
誰向けなんだ
2026/06/03(水) 23:25:51.53ID:Wy1oRWov
>cmdなんて今更使わないし

自分はPowerShell上でcmd /C arg ... を使いまくってるんだが。。。
2026/06/04(木) 13:54:31.22ID:eIr3VgFm
Coreutilsにheadコマンド追加されたのはいいんだけど、PowerShellのパイプでheadを使うと通信相手のプロセスがゾンビ化するね
2026/06/04(木) 14:28:21.23ID:ijuBAeww
プロセス終わるまでパイプ流れないのは
v7とかだと治ってたりするの?
2026/06/04(木) 14:58:37.37ID:ewTxTtR7
Using native commands in the pipeline
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_pipelines#using-native-commands-in-the-pipeline
2026/06/04(木) 15:28:58.24ID:zGpLyY1K
RHELは早く取り込んでくれ
同じ様なスクリプト二本書くのダルいし
778デフォルトの名無しさん
垢版 |
2026/06/06(土) 11:59:32.53ID:uqM5c5oX
Coreutilsのxargs良いね
PowerShellはすでに似た機能を持つforeachがあるから恩恵は少ないけど、
コマンドプロンプトでバックスラッシュに対応したxargs使えるのはありがたい
2026/06/07(日) 12:46:58.37ID:B6T9db68
>>764
死ねよ窓杜の1字1銭の低能バイト
780デフォルトの名無しさん
垢版 |
2026/06/17(水) 05:24:41.24ID:mEw10svJ
V7.4.17
https://github.com/PowerShell/PowerShell/releases/tag/v7.4.17
V7.5.8
https://github.com/PowerShell/PowerShell/releases/tag/v7.5.8
V7.6.3
https://github.com/PowerShell/PowerShell/releases/tag/v7.6.3
が出ました
レスを投稿する


ニューススポーツなんでも実況