◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

PowerShell -Part 7 ->画像>1枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1701241669/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん
2023/11/29(水) 16:07:49.46ID:0g8RZ7sB
前スレ
PowerShell -Part 6
http://2chb.net/r/tech/1644744972/

次スレは>>980が立ててね!!
2デフォルトの名無しさん
2023/11/29(水) 20:26:02.61ID:aabs5txO
ドライバのinfファイルに署名がない古いハードを使うために
オレオレ証明書を作って勝手に署名する方法があるが
ググって出る手順のままではダメでいまはWindows Design KitとWindows SDKが必要で
SDKにあるmakecertコマンドはマイクロソフト公式に推奨されないとも…
PowerShellでできるからということらしいがどう使ったら同じ結果になるかはわからなかった
makecertのような非推奨コマンドと1対1のPowerShellでの使用例ってどこかにないだろうか
今後同じような事態に陥った時のため備えておきたい
マイクロソフトのサイトにはオプションの説明はあるけど
makecertとの対比表とかはない
3デフォルトの名無しさん
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なしでもいける認識なんですが間違ってますか
5デフォルトの名無しさん
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"
コマンドレットは変な仕様が多いから妙だな…と思ったらそれ以上深入りする必要はない
6デフォルトの名無しさん
2023/12/01(金) 22:24:22.03ID:nrjrox6C
そもそもワイルドカードの単純なフィルタならデフォルトの-pathでできるから-includeとか基本使わないな

learn見たら「-includeは-pathの末尾が*じゃないと動かない(-recurseなら省略可)」ってはっきり書いてたわ
7デフォルトの名無しさん
2023/12/01(金) 22:30:34.62ID:S2lEQVa3
ファイルシステム側に検索オプションを指定するのが-Filterで
PowerShell自信でフィルタリングするのが-Includeだっけ、懐かしい話だ
8デフォルトの名無しさん
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
10デフォルトの名無しさん
2023/12/02(土) 21:42:01.24ID:B4ObjCpy
>>8
Format-Table -AutoSize
11デフォルトの名無しさん
2023/12/03(日) 07:28:03.75ID:tKLbRUl7
すまんコマンド追加で整形したいんじゃない
デフォルトの形式をいじりたい
12デフォルトの名無しさん
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
13デフォルトの名無しさん
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

としてみたら全然違う結果になってしまった
出てきたものの数字を変えるだけじゃだめなのかな
14デフォルトの名無しさん
2023/12/03(日) 13:55:42.15ID:tKLbRUl7
なぜTable形式でなくList形式になるのでしょうか
15デフォルトの名無しさん
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

として使うにはどうするのでしょうか
17デフォルトの名無しさん
2023/12/05(火) 14:36:11.77ID:lXd0pnoy
できない
そういうのはfunctionとかfilter作ってやる
18デフォルトの名無しさん
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
そこまではたどり着いたのですが苦戦しています
正直言って手も足も出ません
どうすればよいのでしょうか
20デフォルトの名無しさん
2023/12/05(火) 21:04:00.28ID:rxI6O073
何がしたいのか知らんけどpowershellのパイプはオブジェクトに変換しないとだからtarが期待する入出力にはならんだろうな
ほれ
function tarout {
tar -x -O -f $args
}
tarout - file
21デフォルトの名無しさん
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はくそ
24デフォルトの名無しさん
2023/12/07(木) 08:28:41.09ID:c+XrIY2G
beginブロックで$inputを使うとバイトストリームが出てくるようになって欲しい
そしたらtaroutもこう書けるようになるのに

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

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

難しいと思うのは
・beginブロックに$inputがあったら、そのfunction,ScriptBlockにパイプでバイトよこせマークをつける
・バイトよこせマークがあったらパイプラインでネイティブコマンド扱いしてバイトを流す
処理が必要だからで・・・難しく・・・な・・・い、かも
27デフォルトの名無しさん
2023/12/08(金) 08:33:10.45ID:xElvY7bj
本気で難しくないと思うならお前が実装してPR送れよ
28デフォルトの名無しさん
2023/12/08(金) 20:15:49.14ID:8rS6bPls
公式で7.3にもなって直してないんじゃそんなのを気にしてるのは少数派なんだろ
むしろお前が動くしかなかろうよ
29デフォルトの名無しさん
2023/12/09(土) 13:31:46.58ID:F2smNVkX
個人的にはpythonのライブラリ群をそのままPSObjectにぶっこ抜きして動かせるようにして欲しい
30デフォルトの名無しさん
2023/12/09(土) 15:21:51.18ID:NdJUV/GZ
Python - Support · Issue #19418
https://github.com/PowerShell/PowerShell/issues/19418
31デフォルトの名無しさん
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
33デフォルトの名無しさん
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になるかとおもったんですが
35デフォルトの名無しさん
2023/12/09(土) 21:01:47.88ID:2orRcob9
型を合わせるために、NULLが空文字に変換されるから。

そこでNULLを期待するのはRDBとかの場合だね。(RDBにもよるけど。)
36デフォルトの名無しさん
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
ありがとうございます
39デフォルトの名無しさん
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")
これでできたんですけど
プロパティの編集方法は色々調べてみたんですがわかりませんでした
40デフォルトの名無しさん
2023/12/13(水) 21:26:19.77ID:SOLvnyCP
https://www.powershellgallery.com/packages/PSSystemProperties/
41デフォルトの名無しさん
2023/12/13(水) 23:49:36.01ID:RVDAjcVA
>>40
インストールでちょっとつまづいちゃいましたが
やりたいことができました ありがとうございます!
42デフォルトの名無しさん
2023/12/14(木) 03:02:02.55ID:EBZTu/MN
中見たら7時代のWindows-API-Code-Packとやらを拾ってきて使うのか
本来シェル名前空間からやれそうな事なのにWritePropertyへ辿りつくまでかなり遠回りしたな
43あぼーん
NGNG
あぼーん
44デフォルトの名無しさん
2023/12/16(土) 07:52:34.43ID:fGCT2KhW
ps1ファイルをユーザーに手軽に実行してもらう方法ってないですかね

batだと単にダブルクリックするだけでいいところが、
ps1だとショートカット作って↓↓をくっつけてと、とても運用に耐えられないんですが
「powershell.exe -ExecutionPolicy Unrestricted 」
45デフォルトの名無しさん
2023/12/16(土) 08:42:06.64ID:5tZpbEW3
>>43
これならできそう
46デフォルトの名無しさん
2023/12/16(土) 09:34:51.52ID:pgUnJUCg
>>44
ググればバッチファイルにPowerShellスクリプトを埋め込む方法が見つかるよ
47デフォルトの名無しさん
2023/12/16(土) 10:07:55.43ID:fGCT2KhW
>>46
ps1単独で解決できないものか
将来性を考えて、ps1使ってみようと思ったが、
バッチやvbsの助けがないと使いにくいんじゃイマイチだな
48デフォルトの名無しさん
2023/12/16(土) 10:42:25.24ID:nDmmdgrP
ps1はコード署名して、グループポリシーで証明書配付しよう
49デフォルトの名無しさん
2023/12/16(土) 12:13:16.06ID:fGCT2KhW
>>48
そこまでするなら、スクリプトよりexe作った方が早・・・
50デフォルトの名無しさん
2023/12/16(土) 12:35:03.91ID:K5lUjnCI
>>43
やってみない手はない
51デフォルトの名無しさん
2023/12/16(土) 16:03:42.74ID:XRhqtdk+
埋め込むやつって結局iex経由の特殊環境だから一部の変数とか使えなくて困る
無理に使わなくていいよ
52デフォルトの名無しさん
2023/12/16(土) 23:27:25.62ID:yw6xDge+
横からすみません
>>40
のインストールにチャレンジしたのですが、管理者権限のPowerShellでInstall-ModuleをしたのにImport-Moduleでdllが無いみたいなエラーが出て使えません
どなたかアドバイス頂けないでしょうか
53デフォルトの名無しさん
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を取り出してカレントディレクトリに配置
でいけるんじゃないかな
54デフォルトの名無しさん
2023/12/22(金) 07:48:19.63ID:wPcChJb5
$PROFILE ってなんなのでしょうか
$PROFILE.GetType() だと String のようですが
$PROFILE | Select-Object * で AllUsersAllHosts などが出てくるのがわかりません
$PROFILE | Select-Object * で何が起きているのでしょうか
55デフォルトの名無しさん
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って種類のプロパティ
56デフォルトの名無しさん
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
57デフォルトの名無しさん
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!

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

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

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

このページの中の項目で
 スクリプト モジュールでのコメント ベースのヘルプの構文
 コメントベースのヘルプ キーワード
 関数のコメント ベースのヘルプ
 関数構文でのパラメーターの説明
 スクリプトのコメントベースのヘルプ
あたりが参考になるかも
66デフォルトの名無しさん
2023/12/26(火) 16:47:47.85ID:ghNGRT5G
paramを使わずにSYNTAXを表示する方法を尋ねたのはそこを見たからでして
方法がありましたら具体的にご教示くださいませ
67デフォルトの名無しさん
2023/12/26(火) 19:16:46.24ID:CTT8zMQ8
nugetに上がってるモジュールのソースでも嫁
68デフォルトの名無しさん
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.
と怒られます
70デフォルトの名無しさん
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と同じ使い方ができるようにするのが面倒ない
72デフォルトの名無しさん
2023/12/27(水) 13:59:38.84ID:Fe+mtIWC
ffmpegはシーケンスが意味を持つ引数になってるのよね
どういう順で記述するかによって適用される範囲が異なってくる
73デフォルトの名無しさん
2023/12/27(水) 20:51:25.44ID:85uYBZGc
なら引数は$argsで受け取って好きなように解釈したらええがな
740064
2023/12/27(水) 22:38:05.51ID:1jSqRJ5E
だからそうしてるのが理解できないのかな
paramを使わないというのは $args を自分で解釈するということ
その上でparamを使わない場合のget-helpの出力について相談したんだが
聞いた相手が想像を超えたバカだったたようだ
邪魔したな
75デフォルトの名無しさん
2023/12/28(木) 08:55:34.70ID:xGxlWVWv
PowerShellにはPowerShellの流儀があるわけで
それに合わないことをやろうとすれば苦労するのは当たり前
C言語で関数型プログラミングをしたいって騒いでるのと同レベル
76デフォルトの名無しさん
2023/12/28(木) 09:27:10.14ID:i2ZdA1S0
・質問者がget-helpのやり方をスレで質問
・そもそもこうすればいいんじゃね?と別解について疑問があがる
・さほど適した別解はないことが判明
・質問者に対して怒り出す

別に苦労したと文句たれてるわけでもないのに質問者がウザ絡みされて気の毒すぎる
77デフォルトの名無しさん
2023/12/28(木) 10:13:47.89ID:DhrTF4+F
助言・回答者に対しキレ散らかすパターン多いな。同一人物か?
78デフォルトの名無しさん
2023/12/28(木) 10:20:56.59ID:4ANODT1z
よく見たら>>16のtarと同じ奴か
79デフォルトの名無しさん
2023/12/29(金) 08:36:49.58ID:KamNl0ts
PowerShellよりdoskeyのマクロにしたほうが簡単そう
80デフォルトの名無しさん
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
82デフォルトの名無しさん
2023/12/29(金) 17:50:55.94ID:6zkU+tYe
>>73 がコントすぎてさすがに擁護できない
83デフォルトの名無しさん
2023/12/30(土) 20:28:29.74ID:pfiAiXAK
XMLヘルプファイル用意して参照させればParam()のないfunctionに対し「構文」部分を書ける。
84デフォルトの名無しさん
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だけ英語になるの初めてなんだが。
PowerShell -Part 7 ->画像>1枚
86デフォルトの名無しさん
2023/12/31(日) 17:55:15.89ID:s/6k3+Yx
そういうのsurfaceでもあったな
OSセットアップ時の国設定が半端に適用された状態だから入れ直した方が早いかも
87デフォルトの名無しさん
2024/01/01(月) 01:36:45.15ID:/rCM9JK/
>>85
Windowsは英語版を日本語に切り替えると日本語にならないところがある

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

ちなみにいまどきISEを使っているのもよくわからない
88デフォルトの名無しさん
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もこれくらいシンプルになってくれんかな
90デフォルトの名無しさん
2024/01/02(火) 12:49:42.78ID:ztgjURNX
カスタマイズしてシンプルにすればいいと思うよ
俺はどちらかというとVSCodeのほうが機能美を感じる
デフォルトで万人の感性にフィットするモノは存在しない
カスタマイズも嫌なら自分で作るか作らせるか
91デフォルトの名無しさん
2024/01/02(火) 20:24:20.63ID:G9bvfkvl
>>88
ヤベーもの見てるんだなw
92デフォルトの名無しさん
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

こんなの聞いてないよ
93デフォルトの名無しさん
2024/01/16(火) 12:08:02.87ID:YM90ubox
何が言いたいのかわからないw
コードを実行した結果が書かれてないので
何を言いたいのか知るにはこのコードを実行しなきゃならない
めんどくさいw
94デフォルトの名無しさん
2024/01/16(火) 18:55:49.27ID:6T/+PhGk
プロパティがgetterだから
95デフォルトの名無しさん
2024/01/17(水) 09:27:27.73ID:HArby8R7
$o | Get-Member を実行してみれば分かるけど$o.aはフィールドじゃなくてプロパティだからな
$o.aのgetter( $o.get_a() )の戻り値を関数に渡しても$o.aの値は変わらない
96デフォルトの名無しさん
2024/02/11(日) 23:33:57.66ID:Z05z2D4x
パワーシェルすげえな
仕事がどんどん片付いていくよ
97デフォルトの名無しさん
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行とも消えちゃう
98デフォルトの名無しさん
2024/02/27(火) 18:46:20.00ID:hxHkafQb
2つのCSVをどうやってwhere-objectに渡してんだよ
その2行が消える間抜けコード晒してみなよ
99デフォルトの名無しさん
2024/02/27(火) 19:14:40.76ID:JyRut9xW
chatgptに聞いたらそうなった
100デフォルトの名無しさん
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
101デフォルトの名無しさん
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
102デフォルトの名無しさん
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
段階を踏まないのは謎だよな
ファイルをコピーする概念もなさそう
104デフォルトの名無しさん
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ファイルに想定外のデータがあることを考慮しないのか
106デフォルトの名無しさん
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を挟むこともできない
107デフォルトの名無しさん
2024/02/28(水) 02:24:06.13ID:yYqm5P+g
カラムの曖昧さとかは全く興味沸かないなあ自分でやんな
108デフォルトの名無しさん
2024/02/29(木) 08:30:06.44ID:Qx0i34px
ファイルのサイズが大きければ実装が変わる
109デフォルトの名無しさん
2024/02/29(木) 08:47:23.80ID:8KhlEQjj
チンコのサイズが大きければ実績が変わる
110デフォルトの名無しさん
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 はキャラクタセットも気にしてなさそうなんだよな
113デフォルトの名無しさん
2024/03/03(日) 03:11:25.14ID:CrVe/94r
行比較が出来るようになれば対象が何だろうが応用できるだろ
話はとっくに終わってんのよ
>目的よりも手段にこだわっていると思われる
これまんまお前のことじゃね?
114デフォルトの名無しさん
2024/03/05(火) 01:41:57.29ID:Mm4X91cX
そんなに複雑なら、シェルの範囲を超えている。
Ruby など動的言語の出番

>>106
RubyのCSV では、コンバーターで変換器を自作する
115デフォルトの名無しさん
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>] ]
116デフォルトの名無しさん
2024/03/06(水) 07:42:44.20ID:wzhaiXwv
PowerShellだと何も考えずにDateTime変換できるのに、Rubyだとそんなに手間かかるのか
もうそんな言語使うの止めて大人しくPowerShell使ったら?
117デフォルトの名無しさん
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

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

-----
とりあえず形にはなりました。ありがとうございました!
131デフォルトの名無しさん
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もわからないのかもしれないが
133デフォルトの名無しさん
2024/03/08(金) 23:00:20.01ID:swFfFcBY
いや、それならSQLiteでええやん
134デフォルトの名無しさん
2024/03/09(土) 21:26:55.41ID:HJGXBhOf
>>133
それマイクロソフト製品じゃないぞ?
135デフォルトの名無しさん
2024/03/10(日) 01:11:42.47ID:AxZkOQF1
sqliteはnugetから落とせるだろ
136デフォルトの名無しさん
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を嫌がる理由がわからない
139デフォルトの名無しさん
2024/03/13(水) 12:54:32.04ID:dDXeoITb
FPS値を取得したがっていた者です
あれから色々調べてHWiNFOから取得する事ができました
ご協力ありがとうございました
140デフォルトの名無しさん
2024/03/14(木) 01:25:06.87ID:3xDTJGqn
ウェブ開発では、Ruby on Rails 一択。
Railsは、PostgreSQL, MySQL, SQLite の3大データベースに対応している。
ただし本番用では、PostgreSQL一択。
SQLiteは開発用・個人用など

AWS Aurora は、PostgreSQL, MySQLに対応している。
SQLiteはブラウザなど、多くのアプリに含まれて使われている
141デフォルトの名無しさん
2024/03/14(木) 04:08:32.14ID:XOsoQn4t
ORACLE「え?ワイは?」
142デフォルトの名無しさん
2024/03/14(木) 04:11:13.73ID:MTVljuIS
Rubyとかいう20年前の言語w
143デフォルトの名無しさん
2024/03/14(木) 14:26:49.02ID:i9kIdifV
デフォで存在してるところが良いんじゃないか
わざわざインストールするのなら今更新規にRubyを入れるのは無いだろうな
144デフォルトの名無しさん
2024/03/14(木) 21:10:47.40ID:xE50NtDY
>>141
オラクル社とマイクロソフト社がクラウドの世界では提携しているのを知らないのか?
145デフォルトの名無しさん
2024/03/15(金) 03:50:52.94ID:d5IiPK+0
「主なRDB」でググった結果
Microsoft SQL Server.
Oracle Database
PostgreSQL.
MySQL
Amazon Relational Database Service.
IBM Db2 Database.
146デフォルトの名無しさん
2024/03/15(金) 08:13:53.75ID:X0BgzxQ9
まだ続くの?家計簿に適してるのはどれよ
147デフォルトの名無しさん
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
150デフォルトの名無しさん
2024/03/17(日) 10:50:03.64ID:b6WSYS3s
Rubyガイジってどこにでもわくんだな
トコジラミ並み
151デフォルトの名無しさん
2024/03/19(火) 02:21:32.51ID:ilfn8WqH
>>97
Ruby のCSV.Table で作ってみた

https://paiza.io/projects/7dyw8_lDWimUANwD5E5GSw?language=ruby
152デフォルトの名無しさん
2024/03/19(火) 13:20:31.92ID:xCYlYIv4
このスレは

PowerShell -Part 7

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

バージョン1の事
元々の計画ではPowerShell2向けのスクリプトファイルは.ps2にするつもりだった
165デフォルトの名無しさん
2024/04/06(土) 15:04:28.66ID:M3AJuz+l
拡張子にバージョン含めるアホは初めて見たかも
Windowsの技術者の発想ではないね
Powershellはこの拡張子含めて起動周りだけ残念
166デフォルトの名無しさん
2024/04/06(土) 20:16:29.68ID:qfnATLfz
まぁMSはOSも言語も開発環境も既に人気もなく寿命もつきようとしてるから
Windows最後の砦だったゲームもValveがProtonとSteam OS作ったからLinuxでほぼすべてのゲームが動いてパフォーマンスもWindowsより良い場合もある
ただしあくまでエミュレートだからカーネルモードで動くアンチチートだけは動かなくてフォトナやヴァロやApexなんかの人気FPSが動かなかったり永久BAN対象になる
まぁこれも時間の問題でWindowsが必要とされなくなるのは間近だな
167デフォルトの名無しさん
2024/04/06(土) 20:56:33.00ID:9cPJ1AnL
いるよねこういう極論振り回す人
脳内で完結してるから聞く耳を持たない
168デフォルトの名無しさん
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なのにね
171デフォルトの名無しさん
2024/04/08(月) 21:40:31.39ID:bL5gAXu8
PowerShell の ps1 ファイルは 何故 1なのか
https://tech.guitarrapc.com/entry/2013/09/06/220944
172デフォルトの名無しさん
2024/04/09(火) 00:15:02.63ID:32z8iBj9
powershell 7.xってどういう立ち位置なんだろ
windows標準では入ってないから、開発者向けなのかな
Rubookは7.2が標準だけど
173デフォルトの名無しさん
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に移行出来ていません
174デフォルトの名無しさん
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.
175デフォルトの名無しさん
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" に属していません。このセットの引数を指定して、コマンドを再度実行してください。
177デフォルトの名無しさん
2024/04/13(土) 22:51:19.83ID:7ey9vG0h
shift-jifになってますがjisでもちゃんとエラーになります
178デフォルトの名無しさん
2024/04/13(土) 22:52:54.00ID:OrtqC7Lq
コマンドレットの引数と.NETのそれを混同してるのでは
-Encoding Defaultでしょ
179デフォルトの名無しさん
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は匂いとかになるのかな❓ なんて訳ないよね
182デフォルトの名無しさん
2024/04/15(月) 15:11:13.01ID:t9UnzSYj
mp3: MPEG-1 Audio Layer-3
mp4: MPEG-4 Part 14
183デフォルトの名無しさん
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
糞言語晒しハゲ
185デフォルトの名無しさん
2024/04/29(月) 21:21:17.91ID:+v7UeRZb
確かにPowerShellには糞な所はあるが
UNIXシェルはもっと糞だからなぁ
186デフォルトの名無しさん
2024/04/30(火) 00:48:39.65ID:DiJVRdjR
bashはもっと高級言語っぽく書かせてくれ
187デフォルトの名無しさん
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
190デフォルトの名無しさん
2024/05/12(日) 19:36:08.58ID:09MtL+BO
最初から文字列にしとけばOK
191デフォルトの名無しさん
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値を計算して同桁出力する場合
}
}
192デフォルトの名無しさん
2024/05/12(日) 21:52:36.80ID:i2A3IV7D
"{0:f7}" -f $nyuryoku
193デフォルトの名無しさん
2024/05/13(月) 11:39:01.69ID:/Hf+00qw
.NetのBigDecimal型を使えば演算も有効数字も期待通りにコントロールできて望むものに合致するかもしれない
194デフォルトの名無しさん
2024/05/14(火) 06:07:17.63ID:91RzY7pD
>>0190
確かにそうですね

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

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

>>0193
ありがとうございます。試してみます
195デフォルトの名無しさん
2024/05/15(水) 12:16:52.10ID:NKO3JxQw
[System.Covert]::ToDecimal($nyuryoku)
196デフォルトの名無しさん
2024/05/15(水) 21:14:15.32ID:dKr+esCZ
[decimal]$nyuryoku
197デフォルトの名無しさん
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

これならどっちもいける
198デフォルトの名無しさん
2024/05/19(日) 09:37:50.88ID:CqmosUS1
1.00.ToString("0.00")
199デフォルトの名無しさん
2024/05/28(火) 21:30:03.57ID:3YD/oRc3
https://www.itmedia.co.jp/news/articles/2405/28/news172.html

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

conhost.exe --headless powershell.exe -file foo.ps1
では駄目?
206 警備員[Lv.7][新芽]
2024/05/30(木) 10:02:25.09ID:KpHhmNZR
非表示にする理由ある?
207デフォルトの名無しさん
2024/05/30(木) 12:56:45.30ID:T4GqjJ/d
vbs廃止は神国だわw
208デフォルトの名無しさん
2024/05/30(木) 17:48:39.42ID:U4JaIgka
>>205
駄目じゃない、ありがとう
タスクスケジューラーから定期実行する時、VBS以外の選択肢がなくて困ってた
引数の--headlessはどういう意味なんだ?
209デフォルトの名無しさん
2024/05/30(木) 22:14:09.65ID:5L9b56Kn
https://github.com/microsoft/terminal/issues/17178
conhost.exe --headlessは終了コードを得られない致命的なバグがあるらしいな
Hiddenで起動する適当なexe作った方が早そう
210デフォルトの名無しさん
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も若干邪悪…

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

ヘッドレスとは、組み込み機器やサーバなど、本来対面で人が操作するためのものではない(または、その必要がない)システムで見られる運用形態のひとつです。コンピュータの場合、キーボード、マウス、タッチパネルなどの入出力機器を接続しない状態で運用すること、また、その状態で運用を行う機器などがあります。
214デフォルトの名無しさん
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. ・・
215デフォルトの名無しさん
2024/06/10(月) 08:02:22.79ID:KfgQc11A
ヘッドレスってCPUをなくすべきでは
216デフォルトの名無しさん
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 コマンドは、他のユーザーとしてのプログラムの実行をサポートしていません。
217デフォルトの名無しさん
2024/06/13(木) 01:51:19.96ID:I2CUi2vW
>>216
>そもそもrunas.exeとsudoの意味論はユーザ切り替えで同一だろ
ここで言及してるsudoはunix系の本家(?)sudoのことやろ
218デフォルトの名無しさん
2024/06/19(水) 22:42:22.27ID:pSP80P6j
古い業務システムでデータ入力する時に自動化しようと思ったんだが、
Enterがカーソル位置以降の文字消してフォーカス移動、NumpadEnter(テンキーのEnter)がEnter、
左CtrlがCtrl、右CtrlがEnterという機能になっている。
powershellのSendkeysだとどうやってNumpadEnterか右Ctrlを選択すればいいのでしょうか?
219デフォルトの名無しさん
2024/06/19(水) 22:46:04.00ID:rsgeG4yq
VBのSendKeysと変わらないと思う
220デフォルトの名無しさん
2024/06/21(金) 17:49:04.98ID:LwqdtCE6
>>218
無料のRPAでやる方法もあるよ
221デフォルトの名無しさん
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}"部分も使えない。

何か、隔世の感がある…。
224デフォルトの名無しさん
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!!);
}
}
226デフォルトの名無しさん
2024/06/23(日) 02:33:27.21ID:QkuO1K/N
まあ現在進行形でメンテされてるからな
むしろOS毎に入るバージョンが違ってくるのは当たり前なのでは…
227デフォルトの名無しさん
2024/06/23(日) 04:10:59.53ID:iAmtDmVE
分ってるけど、心の叫びだよ。

あ、PowerShellアップデートしてReadAllLinesの方は使えるようになった。
今更ファイルストリームでopen/closeとか嫌すぎたからホッとした。
228デフォルトの名無しさん
2024/06/23(日) 13:37:48.52ID:ermJYjK6
webアプリのテキスト入力部分にpowershellスクリプトで自動的に文字入力をしています
しかし動作させるタイミングによってIMEが日本語入力になっていたり直接入力になっていたりしています
「無変換」キーに「IMEオフ」を割り当てて文字入力の前にpowershellで自動的に無変換キーを押下させましたが当方の環境では何故か期待通りの結果にならず、やむなくタスクバートレイのIMEアイコンを右クリック(メニュー表示)→「直接入力」左クリックをpowershellで自動でやって実現しています
しかしこの方法はスマートじゃないです
powershellで他のアプリに入力中のIMEの設定を「直接入力」モードにスマートに切り替える方法があれば教えてください
229デフォルトの名無しさん
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);
}
}
"@

思ってたんと違った
232デフォルトの名無しさん
2024/06/23(日) 17:48:41.99ID:ermJYjK6
>>231
有難うございます
一回り難しそうですが、試しながら参考にさせて頂きます
233デフォルトの名無しさん
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で $"{}"(文字列補間式)使えるようになった\(^_^)/
239デフォルトの名無しさん
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
としてみましたが、ファイルは読み込めているようですが、
その後の処理でうまく動作しません

何か方法ありますでしょうか
240デフォルトの名無しさん
2024/06/28(金) 21:59:51.65ID:1ppaObvA
file1.jsのエンコーディングはどうなってるの?
241デフォルトの名無しさん
2024/06/28(金) 23:09:31.36ID:YK96fiDO
>>237
説明が分かりにくい。
たぶん昔からよく混乱の元になってる
$PWD(*-Location)のカレントディレクトリと
[Environment]::CurrentDirectoryのカレントディレクトリの
両方を意識しないといけない問題について調べたらいいと思うよ。
>>239
DownloadString()の戻り値の型は[string]で
Get-Contentは大抵[Object[]]だから型の違いで動作変わってんじゃないの。
Get-Content -Rawにしてみたらどう?
242デフォルトの名無しさん
2024/06/29(土) 12:31:22.88ID:AKI9JxZ5
カレントディレクトリという甘えた幻想は捨てろ
243デフォルトの名無しさん
2024/07/07(日) 11:58:14.30ID:L0BIfwX5
カレンちゃんとディレクトリしたい
244デフォルトの名無しさん
2024/07/07(日) 13:02:55.78ID:LfIamK5n
Get-Item カレンデバイス
245デフォルトの名無しさん
2024/07/07(日) 22:31:52.21ID:gAixcUjS
カレンちゃんって誰だよ競走馬じゃないんだぞ
246デフォルトの名無しさん
2024/07/08(月) 19:41:40.15ID:f8BMTbPy
きんモザ
247デフォルトの名無しさん
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に書いてる仕様変更の影響かと。
249デフォルトの名無しさん
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」の所は連携しているソフトがランダムで自動生成するのでこちらからいじることはできません。
どう修正すればいいでしょうか。
250デフォルトの名無しさん
2024/07/18(木) 12:46:56.92ID:2XOaIs3w
>>249
変数名が $cmtemp になってるけど、その中身の文字列は e抜きの \cmtmp\ を含むパスなの?
251デフォルトの名無しさん
2024/07/18(木) 13:09:10.50ID:X/v3DPD5
>>250
そうです。最初にパスを設定する部分を設けています。
$cmtemp = "R:\TEMP\cmtmp"
252デフォルトの名無しさん
2024/07/18(木) 13:13:45.35ID:g0scKYj2
>>249
ダブルコーテーションで括ってるからじゃね
253デフォルトの名無しさん
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ゴシックに変更、では解決しませんでした。
256デフォルトの名無しさん
2024/07/18(木) 18:48:37.59ID:2XOaIs3w
>>255
コンソール側の文字コードの問題だと思うよ
レジストリにCodePageを設定すれば解決するはず(「65001」で検索)
257デフォルトの名無しさん
2024/07/18(木) 19:04:19.79ID:eHTBk2KG
pwshが動く時点で普通のwin11じゃない気がする。pwshは一部の物好きな上級者用じゃない?(もうwin11のデフォルトになった?)
pwshのままだと今後も色々問題出るよ。自己解決していける自信がないなら総合的にはwin11の再インストールが手っ取り早いと思う。
258デフォルトの名無しさん
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もうまくショートカットを発行できないソフトが出てきていますね…。
再セットアップで解決するもんでしょうか。
260デフォルトの名無しさん
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 は、既定では、現在の場所からコマンドを読み込みません。
このコマンドを信頼する場合は、".\(ファイル名)" と入力してください。

言われた通りに.入力したら「引数がないため処理を終了します。」となり、一応正常に終了しました。
262デフォルトの名無しさん
2024/07/18(木) 23:26:42.40ID:gkVcHWUr
恐らく11から強制的に使わされてるターミナルが悪いんだろうな
MSストアで入るアプリは総じてゴミだから今すぐ使用中止しろ
https://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のドライバ当てたくらい?
とりあえずこのまま様子見ます…。色々とありがとうございました。
266デフォルトの名無しさん
2024/07/19(金) 15:14:54.49ID:jwlCgmdc
今のターミナルで困ることって何だろう
--headlessが使えないことくらい?
267デフォルトの名無しさん
2024/07/21(日) 22:11:17.98ID:m0XhNdSd
Windows terminalは普通に優秀だと思うけど
268デフォルトの名無しさん
2024/07/21(日) 23:51:02.31ID:vKWhifz8
無変換キーを押すと@が書き込まれること以外は完璧
269デフォルトの名無しさん
2024/07/22(月) 09:11:09.38ID:C7pnRrY6
cmdと動作が異なる意味では欠陥
最初にppwershellをコンソールアプリで公開したのは失策
WSH使いからは失笑
270デフォルトの名無しさん
2024/07/22(月) 13:17:32.45ID:PeYRIg1J
コンソールホストとシェルの区別がついてないお🐴🫎さんかな
271デフォルトの名無しさん
2024/07/27(土) 12:32:42.70ID:+W8EF3Nh
ISEって2019年末時点でオプション機能化とか終息に向かうとか言われてたみたいだけど現行Windows11にも普通にプリインストールされてるよな
終息する話は延期になったんだろうか
まぁ弊社みたいなインストール手続きがクッソ面倒なところでは助かるんですが…
272デフォルトの名無しさん
2024/07/27(土) 12:49:12.36ID:KGtSZjqO
収束するには代わりにVSCodeをプリインストールするようにしてくれないと
273デフォルトの名無しさん
2024/07/27(土) 15:16:22.47ID:7uwMSqss
削除予定はないよ
今後の機能追加がないだけ

プリインストールしたらしたで欧米人がMS訴えるじゃん?
エディタはどうぞお好きなものをお使いください
未だにVSCodeすらインストール許可が出ない会社ならそこの組織の問題
淘汰されるまでそうしていればいい
客先のサーバーで作業中のエンジニアならスクリプトは事前準備したものだけ使うか一旦課題を持ち帰れ
274デフォルトの名無しさん
2024/07/28(日) 21:35:37.31ID:cLn1FmEd
ISEの優位性って何?使ったことないけどvscodeにできないことができたりする?
275デフォルトの名無しさん
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版ってないもんですかね。
277デフォルトの名無しさん
2024/07/30(火) 01:55:59.46ID:0EE76/Sc
Out-String -Stream
278デフォルトの名無しさん
2024/07/30(火) 11:15:11.79ID:jBvTVZZ/
無理にワンライナーやパイプラインで繋げて書かずに
スクリプトファイルを作ってそれを呼び出す方が柔軟性があって整理もできて使いやすい
279デフォルトの名無しさん
2024/07/30(火) 12:15:40.81ID:tWSTSpQm
無理にでもワンライナーやパイプラインで繋げて書くのがPowershellの醍醐味
280デフォルトの名無しさん
2024/07/30(火) 12:48:31.64ID:jBvTVZZ/
>>276 みたいに困ったときはスクリプトファイルで
制御構文やら変数やらクラスやら使った方が
色々試し易くて色々整理できていいじゃん
281デフォルトの名無しさん
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でいけたわ。なんで忘れてたんだろ
283デフォルトの名無しさん
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]
284デフォルトの名無しさん
2024/08/02(金) 21:54:58.24ID:l/+AFQUJ
Rubyの人来るの遅いぞもう飽きたのか?ww
285デフォルトの名無しさん
2024/08/02(金) 21:57:08.30ID:4wv1Q78q
過疎過疎5ちゃんなんかよりツイッタランドで凸でもすれば
286デフォルトの名無しさん
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的なものは 置いていない
…でもどこかで指定しているのを自分で忘れたんだろうか?
複数マシンを管理するにあたって 面倒なので…とりあえず原因になりうるものを知りたいのです
287デフォルトの名無しさん
2024/09/27(金) 18:13:57.62ID:J4fT6PqJ
>286
最新のWindowsにも入ってる「古いpowershell」が原因っぽい. 新しいのを入れても残ってるので そういうことはある
288デフォルトの名無しさん
2024/09/27(金) 18:54:54.18ID:dRTmSCrE
>>286
デフォルトの$profileのパス設定が異なるマシンがあってその原因が知りたい、ってことなのかな?
ちなみに、新しいマシン側の$profileは5.x系(いわゆるWindows PowerShell)のデフォルトパスと一致してる
289デフォルトの名無しさん
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系だったのに. なんだか納得いかない感じ
291デフォルトの名無しさん
2024/09/30(月) 10:46:54.62ID:OEXqADpi
ピン留めされるのは「ターミナル」であって、その中で何を起動するのかは 右クリックで選択できるようになっており、そのデフォルトが5.x系であるように見えます。もちろん以上のことがわかっていれば ここから7.xを選んで起動するのも簡単ではあるのですが…これはカスタマイズできるんだろうか
292デフォルトの名無しさん
2024/09/30(月) 13:04:09.12ID:AYohfY5N
ターミナルのデフォルトはターミナルの設定画面で選べるよ
既定のプロファイルってやつ
293デフォルトの名無しさん
2024/09/30(月) 17:54:24.00ID:OEXqADpi
292← できました!ありがとうございます
…というか、これまで(Windows10)は「ターミナル」じゃなかったということを今日 知りました(笑)
294デフォルトの名無しさん
2024/10/01(火) 06:43:45.64ID:/Tad9Lz2
コマンドプロンプトで、where powershell
と入力すれば、powershell.exe の絶対パスが分かる。
だから、絶対パスを書けば、exe を指定できる

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

ここに、2つ以上表示されたら、上の方が優先して実行される
295デフォルトの名無しさん
2024/10/01(火) 08:34:51.39ID:CEO/MZ1M
ワイ氏、whereというコマンドがあることをパソコン歴20年にして初めて知る
296デフォルトの名無しさん
2024/10/01(火) 08:53:10.90ID:lHW1RCWi
Powershell v5はpowershell.exe、v7はpwsh.exeなのでこれらの混在環境でパスの優先順位が問題になることは基本ない
むしろコマンド名を混同したままでは取り違えが起こりそうなので一応
297デフォルトの名無しさん
2024/10/01(火) 21:40:49.64ID:+PXXCXjN
20年前のWindowsにはまだwhereコマンドは標準搭載されてなかったから知らなくても仕方ない
一応リソースキットやサポートツールには入ってたけど
298デフォルトの名無しさん
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を使うというのも何がなんだかわからないやつだ
301デフォルトの名無しさん
2024/10/14(月) 21:22:43.79ID:6g0FV4Kx
>>299
UNIXでlsが使えない環境があるの?
302デフォルトの名無しさん
2024/10/14(月) 22:47:46.01ID:Fd8j7Mhu
Powershellの話をする気がないなら黙れジジイ
303デフォルトの名無しさん
2024/10/14(月) 23:07:14.44ID:rwiJ8lRR
>>301
無いのでecho *でやっていた環境があるのだ

そう、あれはLinuxっていうやつだった
304デフォルトの名無しさん
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謹製のシェルェ…。
306デフォルトの名無しさん
2024/10/15(火) 21:47:59.44ID:lPGbp20O
エイリアスに互換性を求める人なんていたんだ
そんなの新しいコマンドを覚えやすくするための糖衣でしょ
DOSみたいなクソダサレガシー環境との互換性を尊重してたら呪縛なんてもんじゃない
シェルスクリプトって古今東西きったねえ一貫性のないもんなんだから拘っても虚しいだけよ
307デフォルトの名無しさん
2024/10/15(火) 23:10:10.50ID:qo7/LMKy
>>306
どの言語でもrubyを求める奴がいるように
PowerShellにもUnix系シェルを求めちゃうんだろうな
308デフォルトの名無しさん
2024/10/16(水) 07:29:00.82ID:SZo2N9Nf
>>301
コマンドの実装は違うよ
309デフォルトの名無しさん
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みたいにパイプラインを文字列じゃなくてオブジェクトが通るつもりで書きそうになる
313デフォルトの名無しさん
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触る方が楽かな。
もうしばらく進化を待ちますね。
315デフォルトの名無しさん
2024/10/17(木) 11:09:20.30ID:wdGjJarp
スクリプト書くのはbashよりpowershellの方が書きやすいし読みやすい
そしてlinuxでもpowershell使えるしで重宝してる
316デフォルトの名無しさん
2024/10/17(木) 21:13:19.55ID:ooYpCywP
スペースとコンマの違い程度で発狂して上から目線でもうしばらく進化を待ちますねって面白い人だなぁ
そもそも進化してないのはUNIXシェルのほうでしょ
317デフォルトの名無しさん
2024/10/18(金) 13:56:03.02ID:wVDH4S6Q
space と , はさすがに気付くと思うが
: と ; の違いは老眼にはきつい
318デフォルトの名無しさん
2024/10/19(土) 10:49:56.95ID:0/OluZJS
:(コロン)ていう名前が美味しそうな響きなんだよなぁw
319デフォルトの名無しさん
2024/10/20(日) 10:17:27.24ID:Y993j978
コロネじゃないんだから
320デフォルトの名無しさん
2024/10/20(日) 10:22:09.68ID:/FrbdBj7
マロンかと思った
321デフォルトの名無しさん
2024/10/20(日) 13:53:57.93ID:hxgHNqIu
LinuxとかDOSコマンドを、デフォルトのエイリアスでPowerShellコマンドレットに結びつけておくってのは悪手だよなー
他環境利用者の移行配慮ってなら、例えば「cat」を「Get-Help Get-Content」を実行する関数へのエイリアスにするとか、何かやりようあったんじゃないかと思う。
PSv1、v2の出来の悪さ、様々な考慮不足がずっと足引っ張ってると思う。
322デフォルトの名無しさん
2024/10/20(日) 18:37:33.24ID:sfhCtbKo
curlとかシンプルな本物使いたいことの方が多いから邪魔なだけ
323デフォルトの名無しさん
2024/10/21(月) 01:06:16.28ID:ursFBC+1
エイリアスはハマることがあるので不評
324デフォルトの名無しさん
2024/10/21(月) 01:47:50.43ID:9ofaZL13
sh系はともかく、cmdと全く別のコマンド名覚えなおすのも慣れとはいえ面倒なのは確かだからしょうがないんじゃない
補完できても長いものは長かったし
当時からWSLがあれば別だったんだろうけど
325デフォルトの名無しさん
2024/10/21(月) 02:22:41.82ID:fVCz7bM3
このスレを見ていれば分かるけど、自分がいまcmdを実行しているのかpowershellなのかpwshなのか分かってないユーザがかなりを占める
そんなごく普通のWindowsユーザーたちがdirやcdで適当にやったらなんか動いたとか、同じコマンドで動くらしいからオレも使ってみようかなとかいったハードルを下げる要素の重要性は無視できない
複数パラメータの区切りがスペースかカンマか?マジどうでもいいよw
Windowsの新しいシェルスクリプトなんて相反するニーズに縛られまくるからどんな仕様にしたところで数え切れない文句が飛んでくる
326デフォルトの名無しさん
2024/10/21(月) 21:43:14.36ID:iHmIY3KR
>>324
>当時からWSLがあれば別だったんだろうけど

WindowsでUNIXシェルが使えないから仕方なく欠陥品のPowerShellを作った、とか思ってそう
327デフォルトの名無しさん
2024/10/22(火) 00:45:55.83ID:CtvGpoP8
>>326
思考が卑屈すぎるわw エイリアスの話しかしてないよ
328デフォルトの名無しさん
2024/10/22(火) 12:24:39.31ID:SSjePDmS
curl など誤解を招きかねないエイリアンは害悪でしかない
% とか ? は可読性上がる気がする
329デフォルトの名無しさん
2024/10/22(火) 22:53:22.74ID:trzbvHFT
selectにも記号一文字のエイリアスあってもいいんじゃないかと思う
330デフォルトの名無しさん
2024/10/28(月) 21:16:39.09ID:ZTog7VUm
そう思うなら自分で勝手にアイリアスを定義すればいいだけだよね
331デフォルトの名無しさん
2024/10/28(月) 21:22:49.73ID:U22PtxVm
各々が好き勝手にエアリアルを使っているとコミュニケーションに支障をきたすから困る
332デフォルトの名無しさん
2024/10/29(火) 09:23:16.64ID:Qywuhmt6
> WindowsでUNIXシェルが使えないから仕方なく欠陥品のPowerShellを作った、とか思ってそう
開発の経緯としてはまさにその通りなんだけどな
WindowsでUNIXシェルを整備するプロジェクトが頓挫して、根本的にWindowsに適した設計が必要であるということで生まれたのがPowerShell
なおオリジナルの開発者は現在はGoogleへ移籍し、UNIXシェルの世界へと還っていった模様
333デフォルトの名無しさん
2024/10/29(火) 09:29:09.19ID:oyxmU1Yp
cygwinには長らくお世話になった
334デフォルトの名無しさん
2024/10/29(火) 19:18:49.19ID:/c01W0NL
>なおオリジナルの開発者は現在はGoogleへ移籍し、UNIXシェルの世界へと還っていった模様
なおGoogleへ移籍後は何の成果も得られてない模様
335デフォルトの名無しさん
2024/10/29(火) 23:17:38.65ID:/bXBK+wh
Linuxの管理マネージャやそのシェルのPowerShell化をしていたりして、
そのうちカーネルソースのPowerShellマネジメントレイヤーに取り込まれたり
Fedora、Ubuntuに適用される見込みである
336デフォルトの名無しさん
2024/10/30(水) 11:01:45.95ID:cBVsI/1s
Azureならともかく、そんなもんGCP採用するような層にニーズあるかねえ
どう考えてもAzureを利することにしかならずGCPのシェアに対して悪影響しかないだろ
最近は首切りしまくってたのに最上位格エンジニアは気楽なもんだな
337デフォルトの名無しさん
2024/10/30(水) 20:31:44.86ID:x0G86HEF
PowershellはAdd-Type辺りの機能は便利だけど言語としてはゴミ
338デフォルトの名無しさん
2024/10/31(木) 21:50:30.83ID:uhxgBp24
UNIXシェルはもっと言語としてはゴミなんだよなぁ
339デフォルトの名無しさん
2024/10/31(木) 23:02:56.00ID:va++Flqd
普段そういうゴミしか作者の周りになくて間違えて拾ってきちゃったんやな
340デフォルトの名無しさん
2024/11/01(金) 02:03:26.53ID:EQMsSXTB
>>338
シェルはUIだぞ?
341デフォルトの名無しさん
2024/11/01(金) 04:01:30.22ID:+lXxXu7p
>>328
gal見てたらcurlだけでなくwgetもiwrだった
342デフォルトの名無しさん
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
にあるのは知ってる
343デフォルトの名無しさん
2024/11/01(金) 09:06:40.20ID:vIWZBp6A
Get-Help -Fullの、パラメータのエイリアス
344デフォルトの名無しさん
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で取り込めない。
ググっても同じ症状の人が出て来ない
346デフォルトの名無しさん
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にしても数列で出力されちゃう
348デフォルトの名無しさん
2024/11/20(水) 19:09:02.72ID:b8mbz+Om
Out-File? ならその前にConvertTo-Csvで変換してるんじゃないの?
349デフォルトの名無しさん
2024/11/20(水) 21:42:00.83ID:KXgtJp1v
powershellのなんちゃってCsvコマンドレットはExcelで扱えるCSVと特に親和性があるわけでもなく、俺俺CSV止まりだからあんま使う価値ないかも
350デフォルトの名無しさん
2024/11/20(水) 22:02:13.56ID:KXgtJp1v
ではCSV扱うなら何がいいかと言えばCsvHelperが定番なんだけど、C#や.NETの知識が要るね
AD一覧程度なら自力でフィールドをカンマで区切ったっていいよ
351デフォルトの名無しさん
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/
352デフォルトの名無しさん
2024/11/21(木) 09:11:03.40ID:uYan55MO
CSV変換標準コマンドレットはデータ前後のスペース文字が消えるので
一切データ欠落しちゃいけない場合は注意
353デフォルトの名無しさん
2024/11/27(水) 23:16:05.27ID:aNQZM+B9
Export-Csvって自力でクォーテーション外してた時代あるし地味に改良してるけどな
354デフォルトの名無しさん
2024/11/30(土) 22:11:49.94ID:LJbTxW4W
Should PowerShell 7.x ship inbox in Windows?
https://github.com/PowerShell/PowerShell/discussions/24340
355デフォルトの名無しさん
2024/12/01(日) 13:20:57.08ID:8Yw35ga9
>>354
PowerShell7.xは通常利用されないpwshシェルとして実装されても良いと思うよね
標準シェルをpowershell.exeにしておけば互換性問題無いし

ただ7.xが5.1の互換とか言ってるのはかなり微妙

lud20241207145428
このスレへの固定リンク: http://5chb.net/r/tech/1701241669/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「PowerShell -Part 7 ->画像>1枚 」を見た人も見ています:
PowerShell -Part 4
PowerShell -Part 3
【最強CUI】PowerShell -Part 2
Windows PowerShell Part6
Windows PowerShell (正式版リリース)1.0
TowerDefense 攻略スレ Level 24
Excel ピボット Power Pivot DAX関数 質問スレ
docomo ELUGA power P-07D Part6
Kernel-Power 41病に勝利した奴集まれ
PowerShot G9 X / S90-S120 Part 1
渋谷のキング@YellowBusters
渋谷のキング@YellowBusters
【日産】ノート e-POWER専用 IP有 Part 34【HV】
渋谷のキング【YellowBusters】
YellowBusters【渋谷のキング】
Huddersfield Town FC 中山雄太
【日産】ノート e-POWER専用 IP有 Part 30【HV】
Shadowverse 5780
Shadowverse 無課金スレ
Shadowverse無課金スレ15
Stew Peters Show ★1
藤井隆『light showers』
-HERO SHOW Slash-act.3
Shadowverse 無課金スレ140
Shadowverse 無課金スレ139
Power PC Macintosh 総合
Shadowverse 無課金スレ81
Canon PowerShot N Part1
shadowverse 3789ターン目
精神病棟3799 【shadowverse】
Canon PowerShot G3 X part3
【オワバ】【Shadowverse】
なんJ Shadowvers対戦募集部 ★1
Canon PowerShot G5 X part3
無料FLASH作成ソフトPowerbullet
POWERFUL COMBAT CUPSを語るスレ
Fallout Shelter Vault 3 [無断転載禁止]
ヨシヒコ5874【Shadowverse】
Canon PowerShot SX200系 3枚目
【マルチプラットフォームTCG】Shadow Era 30
【うんこ】うんこ5550【Shadowverse】
Shadowverseまったりスレ77ターン目
Shadowverse 総合スレッド part8
Shadowverseまったりスレ75ターン目
Shadowverse 総合スレッド part7
Shadowverse 総合スレッド part9
Shadowverseまったりスレ75ターン目
Shadowverseまったりスレ72ターン目
Shadowverseまったりスレ78ターン目
【崩壊】オワバ 6642【Shadowverse】
Shadowverse 総合スレッド part16
Shadowverse 総合スレッド part14
Shadowverse 総合スレッド part13
雑談 Powder is a piece of shit
Canon PowerShot G7 Xシリーズ part8
Canon PowerShot SX700/710/720/730
Canon PowerShot G1X series PART20
Canon PowerShot G1X series PART18
Canon PowerShot G1X series PART19
雑談 Powder is a piece of shit 8
Shadowverse:World beyond part13871
雑談 Powder is a piece of shit 3
雑談 Powder is a piece of shit 7
NFL 2020/21 Super Bowl LV part8
NFL 2020/21 Super Bowl LV part6
21:24:19 up 64 days, 22:23, 0 users, load average: 8.63, 8.57, 8.77

in 0.013657093048096 sec @0.013657093048096@0b7 on 062110