PowerShell -Part 7at TECH
PowerShell -Part 7 - 暇つぶし2ch1:デフォルトの名無しさん
23/11/29 16:07:49.46 0g8RZ7sB.net
前スレ
PowerShell -Part 6
スレリンク(tech板)
次スレは>>980が立ててね!!

2:デフォルトの名無しさん
23/11/29 20:26:02.61 aabs5txO.net
ドライバのinfファイルに署名がない古いハードを使うために
オレオレ証明書を作って勝手に署名する方法があるが
ググって出る手順のままではダメでいまはWindows Design KitとWindows SDKが必要で
SDKにあるmakecertコマンドはマイクロソフト公式に推奨されないとも…
PowerShellでできるからということらしいがどう使ったら同じ結果になるかはわからなかった
makecertのような非推奨コマンドと1対1のPowerShellでの使用例ってどこかにないだろうか
今後同じような事態に陥った時のため備えておきたい
マイクロソフトのサイトにはオプションの説明はあるけど
makecertとの対比表とかはない

3:デフォルトの名無しさん
23/11/30 19:34:57.73 4nwqW1NG.net
powershell関係あるのかしら
古い環境そのものやP2V化して動作確認取れる環境を保存していくのが簡単だよ
ドライバへの署名はあくまで1企業の都合という事をお忘れなく

4:デフォルトの名無しさん
23/12/01 21:00:19.47 0gNLMIqi.net
直下にあるファイルをgciの-Includeでフィルタリングしつつ取得する際に
Get-ChildItem -Include *hoge*.txt
はだめで
Get-ChildItem -Recurse -Include *hoge*.txt
-Recurseを入れると動くのはなぜですか?
サブディレクトリを含まない直下のみのファイル検索なら-Recurseなしでもいける認識なんですが間違ってますか

5:デフォルトの名無しさん
23/12/01 21:20:55.43 Jz3SJDE5.net
>>4
gciで-Includeを使う場合gciに与えるデフォルト引数としてアスタリスク「*」を含んだパス名が必要なんだよ特に書いてないけど
つまり「Get-ChildItem -Include *hoge*.txt *」で意図通りになるはず
というかね、-Includeなんか忘れていい。フィルタならwhere-objectでやった方が判りやすい
gci | where Name -like "*hoge*.txt"
コマンドレットは変な仕様が多いから妙だな…と思ったらそれ以上深入りする必要はない

6:デフォルトの名無しさん
23/12/01 22:24:22.03 nrjrox6C.net
そもそもワイルドカードの単純なフィルタならデフォルトの-pathでできるから-includeとか基本使わないな

learn見たら「-includeは-pathの末尾が*じゃないと動かない(-recurseなら省略可)」ってはっきり書いてたわ

7:デフォルトの名無しさん
23/12/01 22:30:34.62 S2lEQVa3.net
ファイルシステム側に検索オプションを指定するのが-Filterで
PowerShell自信でフィルタリングするのが-Includeだっけ、懐かしい話だ

8:デフォルトの名無しさん
23/12/02 08:48:18.48 Fkw0aBk3.net
gciの表示が間延びしてるのを詰めたい
ModeとLastWriteTimeにあんなに幅いらんやろ

9:デフォルトの名無しさん
23/12/02 20:49:53.53 CMdctbaC.net
4ですみなさんありがとうございます
当然質問する前にLearnで確認していたのですが、てっきりワイルドカードも使えるよ!ぐらいのニュアンスだと思っていました
大人しくwhere-object使います。すっきりしましたm(_ _)m

10:デフォルトの名無しさん
23/12/02 21:42:01.24 B4ObjCpy.net
>>8
Format-Table -AutoSize

11:デフォルトの名無しさん
23/12/03 07:28:03.75 tKLbRUl7.net
すまんコマンド追加で整形したいんじゃない
デフォルトの形式をいじりたい

12:デフォルトの名無しさん
23/12/03 09:12:08.68 GWzH2m5A.net
about_Format.ps1xml
URLリンク(learn.microsoft.com)

13:デフォルトの名無しさん
23/12/03 09:40:08.91 tKLbRUl7.net
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:デフォルトの名無しさん
23/12/03 13:55:42.15 tKLbRUl7.net
なぜTable形式でなくList形式になるのでしょうか

15:デフォルトの名無しさん
23/12/03 17:41:11.89 tKLbRUl7.net
ファイルとディレクトリが混ざってるからだった
あとは日付と時刻を詰めたい

16:デフォルトの名無しさん
23/12/05 09:46:48.52 RGe8cD49.net
引数付きエイリアスの作り方を教えてください
'ABC' > file
tar -c -f - file | tar -x -O -f - file
の 「tar -x -O -f」 をエイリアス tarout にして
tar -c -f - file | tarout - file
として使うにはどうするのでしょうか

17:デフォルトの名無しさん
23/12/05 14:36:11.77 lXd0pnoy.net
できない
そういうのはfunctionとかfilter作ってやる

18:デフォルトの名無しさん
23/12/05 14:53:09.61 7QjuGoaz.net
パラメーターを持つコマンドの代替名
URLリンク(learn.microsoft.com)

19:デフォルトの名無しさん
23/12/05 15:54:15.98 RGe8cD49.net
そこまではたどり着いたのですが苦戦しています
正直言って手も足も出ません
どうすればよいのでしょうか

20:デフォルトの名無しさん
23/12/05 21:04:00.28 rxI6O073.net
何がしたいのか知らんけどpowershellのパイプはオブジェクトに変換しないとだからtarが期待する入出力にはならんだろうな
ほれ
function tarout {
tar -x -O -f $args
}
tarout - file

21:デフォルトの名無しさん
23/12/05 21:27:27.93 7QjuGoaz.net
>powershellのパイプはオブジェクトに変換しないとだからtarが期待する入出力にはならんだろうな

PSNativeCommandPreserveBytePipe
URLリンク(learn.microsoft.com)

22:デフォルトの名無しさん
23/12/05 21:47:53.20 RGe8cD49.net
>>0020
それは最初に自分で試してだめだったやつですな
パイプでなく標準入力を読もうとしてCtrl-Z待ちで止まるやつ
Windows 10 から tar.exe あるんで試してから回答してもらえると嬉しい

>>0021
PowerShellからネイティブは通る
ネイティブからネイティブは通る
ネイティブからPowerShellは通らない
だからPowerShellでtaroutは書けないってこと?
だとしたらPowerShellくそすぎる

23:デフォルトの名無しさん
23/12/06 09:58:34.06 pwwMUfVm.net
一応整理
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:デフォルトの名無しさん
23/12/07 08:28:41.09 c+XrIY2G.net
beginブロックで$inputを使うとバイトストリームが出てくるようになって欲しい
そしたらtaroutもこう書けるようになるのに
function tarout { begin { $input | tar -x -O -f $args }}
でもこれは難しいだろうな

25:デフォルトの名無しさん
23/12/07 15:51:22.78 X0+oSYJ4.net
beginじゃない別のキーワード用意するレベルじゃないと難しいだろうなぁ

26:デフォルトの名無しさん
23/12/08 08:18:26.16 tWmRPca2.net
いやbeginブロックで十分でしょ
今はbeginブロックの$inputは無意味なんだから有効活用

難しいと思うのは
・beginブロックに$inputがあったら、そのfunction,ScriptBlockにパイプでバイトよこせマークをつける
・バイトよこせマークがあったらパイプラインでネイティブコマンド扱いしてバイトを流す
処理が必要だからで・・・難しく・・・な・・・い、かも

27:デフォルトの名無しさん
23/12/08 08:33:10.45 xElvY7bj.net
本気で難しくないと思うならお前が実装してPR送れよ

28:デフォルトの名無しさん
23/12/08 20:15:49.14 8rS6bPls.net
公式で7.3にもなって直してないんじゃそんなのを気にしてるのは少数派なんだろ
むしろお前が動くしかなかろうよ

29:デフォルトの名無しさん
23/12/09 13:31:46.58 F2smNVkX.net
個人的にはpythonのライブラリ群をそのままPSObjectにぶっこ抜きして動かせるようにして欲しい

30:デフォルトの名無しさん
23/12/09 15:21:51.18 NdJUV/GZ.net
Python - Support · Issue #19418
URLリンク(github.com)

31:デフォルトの名無しさん
23/12/09 18:40:01.66 F2smNVkX.net
>>30
なんかそのスレッドはpython使いの声がでかいのかpython主導でpython起動すりゃいいだろ的な話がされてて俺の意図とは違うな
俺の考えはそれとは真逆でpythonの便利ライブラリだけpowereshellで拝借してキモいpython処理系自体を入れたくないのよね
俺の言いたいこと判るよね

32:デフォルトの名無しさん
23/12/09 18:46:30.00 iYG1bkmj.net
キモいpython処理www
キモいのはpowershellじゃぼけww

33:デフォルトの名無しさん
23/12/09 19:18:53.30 F2smNVkX.net
>>32
たしかにpowershellもキモいと言えばそうだがpythonとはキモさのベクトルが違うんだよ
>>30にはいい事も書いてある
>PowerShell チームに対して、これらの Python ライブラリをネイティブ PowerShell パッケージの一部として直接実装するよう求めているのであれば、私は同意しなければなりません。
いずれこういう俺と同じ考えを持つ輩がpythonライブラリのぶっこ抜きに成功し
キモいpython処理系が駆除された明るい未来を創り上げてくれる事に期待している

34:デフォルトの名無しさん
23/12/09 20:18:03.05 P3Dp1Ib1.net
$null | %{'hoge'+$_}
これでなんでhogeが出力されるんですか?
Nullになるかとおもったんですが

35:デフォルトの名無しさん
23/12/09 21:01:47.88 2orRcob9.net
型を合わせるために、NULLが空文字に変換されるから。
そこでNULLを期待するのはRDBとかの場合だね。(RDBにもよるけど。)

36:デフォルトの名無しさん
23/12/09 21:38:52.15 NdJUV/GZ.net
URLリンク(learn.microsoft.com)
string 型に値を変換する規則は次のとおりです。
・null 型の値は、空の文字列に変換されます。

37:デフォルトの名無しさん
23/12/09 21:38:52.87 P3Dp1Ib1.net
>>35
なるほど
ありがとうございます
ためしに
$null | %{$_+$hoge}
にしたらNullになりました
+演算子の左辺の型に合わせて右が型変換されるんですね
…PowerShellは難しい

38:デフォルトの名無しさん
23/12/09 21:42:29.77 P3Dp1Ib1.net
>>36
ありがとうございます

39:デフォルトの名無しさん
23/12/13 09:57:50.32 RVDAjcVA.net
PowerShellでファイルの詳細なプロパティを編集することってできますか?
評価とかタグとか下のurlに載っている300種類ぐらいの拡張プロパティです
Windows プロパティ - Win32 apps | Microsoft Learn
URLリンク(learn.microsoft.com)

プロパティの取得だけなら
$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:デフォルトの名無しさん
23/12/13 21:26:19.77 SOLvnyCP.net
URLリンク(www.powershellgallery.com)

41:デフォルトの名無しさん
23/12/13 23:49:36.01 RVDAjcVA.net
>>40
インストールでちょっとつまづいちゃいましたが
やりたいことができました ありがとうございます!

42:デフォルトの名無しさん
23/12/14 03:02:02.55 EBZTu/MN.net
中見たら7時代のWindows-API-Code-Packとやらを拾ってきて使うのか
本来シェル名前空間からやれそうな事なのにWritePropertyへ辿りつくまでかなり遠回りしたな

43:デフォルトの名無しさん
23/12/16 07:36:27.61 t4fIwjDl.net
tiktok liteでPayPayやAmazon券などに交換可能な4000円分のポイントをプレゼント中!
※既存tiktokユーザーの方はtiktokからログアウトしてアンインストールすれば可能性あり
     
1.SIMの入ったスマホかタブレットを準備。
2.以下のtiktok liteのサイトからアプリをダウンロード(ダウンロードだけでまだ起動しない)
URLリンク(lite.tiktok.com)
3.ダウンロード完了後、もう一度上記アドレスのリンクからアプリへ
4.アプリ内でtiktokで使用してない電話番号かメールアドレスから登録
5.10日間連続のチェックイン(←重要!)で合計で4000円分のポイントゲット
ポイントはPayPayやAmazon券に交換できます!
家族・友人に紹介したり、通常タスクをこなせば更にポイントを追加でゲットできます

44:デフォルトの名無しさん
23/12/16 07:52:34.43 fGCT2KhW.net
ps1ファイルをユーザーに手軽に実行してもらう方法ってないですかね
batだと単にダブルクリックするだけでいいところが、
ps1だとショートカット作って↓↓をくっつけてと、とても運用に耐えられないんですが
「powershell.exe -ExecutionPolicy Unrestricted 」

45:デフォルトの名無しさん
23/12/16 08:42:06.64 5tZpbEW3.net
>>43
これならできそう

46:デフォルトの名無しさん
23/12/16 09:34:51.52 pgUnJUCg.net
>>44
ググればバッチファイルにPowerShellスクリプトを埋め込む方法が見つかるよ

47:デフォルトの名無しさん
23/12/16 10:07:55.43 fGCT2KhW.net
>>46
ps1単独で解決できないものか
将来性を考えて、ps1使ってみようと思ったが、
バッチやvbsの助けがないと使いにくいんじゃイマイチだな

48:デフォルトの名無しさん
23/12/16 10:42:25.24 nDmmdgrP.net
ps1はコード署名して、グループポリシーで証明書配付しよう

49:デフォルトの名無しさん
23/12/16 12:13:16.06 fGCT2KhW.net
>>48
そこまでするなら、スクリプトよりexe作った方が早・・・

50:デフォルトの名無しさん
23/12/16 12:35:03.91 K5lUjnCI.net
>>43
やってみない手はない

51:デフォルトの名無しさん
23/12/16 16:03:42.74 XRhqtdk+.net
埋め込むやつって結局iex経由の特殊環境だから一部の変数とか使えなくて困る
無理に使わなくていいよ

52:デフォルトの名無しさん
23/12/16 23:27:25.62 yw6xDge+.net
横からすみません
>>40
のインストールにチャレンジしたのですが、管理者権限のPowerShellでInstall-ModuleをしたのにImport-Moduleでdllが無いみたいなエラーが出て使えません
どなたかアドバイス頂けないでしょうか

53:デフォルトの名無しさん
23/12/17 00:21:34.60 OHxpVvei.net
>>52
下のURLの2つのnupkgをダウンロードして、ファイル名の後ろの拡張子を.zipに変更する
URLリンク(www.nuget.org)
URLリンク(www.nuget.org)

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:デフォルトの名無しさん
23/12/22 07:48:19.63 wPcChJb5.net
$PROFILE ってなんなのでしょうか
$PROFILE.GetType() だと String のようですが
$PROFILE | Select-Object * で AllUsersAllHosts などが出てくるのがわかりません
$PROFILE | Select-Object * で何が起きているのでしょうか

55:デフォルトの名無しさん
23/12/22 09:01:10.81 FudXFPqY.net
PowerShellはAdd-Memberでオブジェクトにプロパティやメソッドを追加できる
URLリンク(learn.microsoft.com)

$PROFILE | Get-Member を実行してみればわかるけど
AllUsersAllHostsとかは$PROFILEに追加されたNotePropertyって種類のプロパティ

56:デフォルトの名無しさん
23/12/22 09:10:30.60 nFOKM4xK.net
>>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:デフォルトの名無しさん
23/12/22 09:51:40.03 wPcChJb5.net
('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:デフォルトの名無しさん
23/12/23 21:24:52.21 xtnhDuDo.net
>>56
Add-Member は変数ではなくオブジェクトにメンバーを追加する
"aaa" と "bbb" は違うオブジェクトなんだから "aaa" に追加したメンバーが "bbb" に無いのは当たり前

59:デフォルトの名無しさん
23/12/25 07:53:26.01 5GC0Dj8P.net
ネイティブコマンドの出力ってPowerShell界に入るとString列になるけど
Stringのそれぞれにプロパティで元のバイナリ付けて欲しい

60:デフォルトの名無しさん
23/12/25 08:58:53.82 xlHQ3YOr.net
>>59
PSNativeCommandPreserveBytePipe
URLリンク(learn.microsoft.com)

61:デフォルトの名無しさん
23/12/25 11:02:44.18 5GC0Dj8P.net
バイナリが通るようになったのは
「ネイティブからネイティブ」と「PowerShellからネイティブ」だけ
「ネイティブからPowerShell」に手軽にバイナリ通したい
バイナリ出力ネイティブ | バイナリ入力ネイティブ
として使うバイナリ入力ネイティブ用にラッパーが書きたいのに今は書けない

62:デフォルトの名無しさん
23/12/25 12:37:48.60 5GC0Dj8P.net
自分には必要ないから触れなかったけど
バイナリ出力ネイティブのラッパーも書けない

63:デフォルトの名無しさん
23/12/25 12:38:42.52 5GC0Dj8P.net
あ、手間をかければ書けるな

64:デフォルトの名無しさん
23/12/26 07:36:13.49 ghNGRT5G.net
引数に -i を複数回指定したいので param() を使わずに function を書いています
get-help で SYNTAX に使い方を表示するにはどうすれば良いのでしょうか

65:デフォルトの名無しさん
23/12/26 12:19:47.21 hM6Ywi/0.net
about_Comment_Based_Help
URLリンク(learn.microsoft.com)
このページの中の項目で
 スクリプト モジュールでのコメント ベースのヘルプの構文
 コメントベースのヘルプ キーワード
 関数のコメント ベースのヘルプ
 関数構文でのパラメーターの説明
 スクリプトのコメントベースのヘルプ
あたりが参考になるかも

66:デフォルトの名無しさん
23/12/26 16:47:47.85 ghNGRT5G.net
paramを使わずにSYNTAXを表示する方法を尋ねたのはそこを見たからでして
方法がありましたら具体的にご教示くださいませ

67:デフォルトの名無しさん
23/12/26 19:16:46.24 CTT8zMQ8.net
nugetに上がってるモジュールのソースでも嫁

68:デフォルトの名無しさん
23/12/26 21:29:18.59 QC0ZGJu/.net
そもそもなんで -i を複数回指定したいんだろう
引数$i の型を配列にするのとは違うの?

69:0064
23/12/27 12:51:53.61 1jSqRJ5E.net
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:デフォルトの名無しさん
23/12/27 13:02:29.78 X+3+vX99.net
指定する対象はaudioとvideoと決まってるんだから
-aiや-viにすりゃいい
変態的なffmpegのオナニーに付き合う必要はない

71:0064
23/12/27 13:12:15.16 1jSqRJ5E.net
いやaudioとvideoに限らんし個数も不定なのよ
audioが言語別複数で、videoはチャプターごとに分かれて、字幕もあったり
結局ffmpegと同じ使い方ができるようにするのが面倒ない

72:デフォルトの名無しさん
23/12/27 13:59:38.84 Fe+mtIWC.net
ffmpegはシーケンスが意味を持つ引数になってるのよね
どういう順で記述するかによって適用される範囲が異なってくる

73:デフォルトの名無しさん
23/12/27 20:51:25.44 85uYBZGc.net
なら引数は$argsで受け取って好きなように解釈したらええがな

74:0064
23/12/27 22:38:05.51 1jSqRJ5E.net
だからそうしてるのが理解できないのかな
paramを使わないというのは $args を自分で解釈するということ
その上でparamを使わない場合のget-helpの出力について相談したんだが
聞いた相手が想像を超えたバカだったたようだ
邪魔したな

75:デフォルトの名無しさん
23/12/28 08:55:34.70 xGxlWVWv.net
PowerShellにはPowerShellの流儀があるわけで
それに合わないことをやろうとすれば苦労するのは当たり前
C言語で関数型プログラミングをしたいって騒いでるのと同レベル

76:デフォルトの名無しさん
23/12/28 09:27:10.14 i2ZdA1S0.net
・質問者がget-helpのやり方をスレで質問
・そもそもこうすればいいんじゃね?と別解について疑問があがる
・さほど適した別解はないことが判明
・質問者に対して怒り出す

別に苦労したと文句たれてるわけでもないのに質問者がウザ絡みされて気の毒すぎる

77:デフォルトの名無しさん
23/12/28 10:13:47.89 DhrTF4+F.net
助言・回答者に対しキレ散らかすパターン多いな。同一人物か?

78:デフォルトの名無しさん
23/12/28 10:20:56.59 4ANODT1z.net
よく見たら>>16のtarと同じ奴か

79:デフォルトの名無しさん
23/12/29 08:36:49.58 KamNl0ts.net
PowerShellよりdoskeyのマクロにしたほうが簡単そう

80:デフォルトの名無しさん
23/12/29 11:07:50.54 HpMDoHHU.net
get-helpでヘルプを表示させる
コメントベースのヘルプを記述する
param()を使わない
という条件だったら単純にスクリプトの先頭にコメントベースで
.SYNOPSIS または .DESCRIPTION に「-iが複数使える」旨を書けばいいのでは
もしくは
param()を使わず$Argsを自前で解釈しなきゃいけないので
引数の解釈を構築するついでに
$Args.Countがゼロもしくは -help -h -? /h /?
あたりの引数で独自のヘルプを表示させちゃうとか
まぁ普通に考えたらこうならね?

81:デフォルトの名無しさん
23/12/29 15:57:16.18 SsN2lKB9.net
質問して答えにキレ散らかすキチゲエきてるねw

82:デフォルトの名無しさん
23/12/29 17:50:55.94 6zkU+tYe.net
>>73 がコントすぎてさすがに擁護できない

83:デフォルトの名無しさん
23/12/30 20:28:29.74 pfiAiXAK.net
XMLヘルプファイル用意して参照させればParam()のないfunctionに対し「構文」部分を書ける。

84:デフォルトの名無しさん
23/12/30 21:23:05.61 pfiAiXAK.net
PowerShell標準から外れた「引数に -i を複数回指定」みたいな内容を書けるかは知らん。

85:デフォルトの名無しさん
23/12/31 16:06:42.19 gGg0M1TZ.net
国内公式からLenovoのノートPC買ったら何故かISEが英語環境になって意味わからん。
どこに言語設定あるの?当然OSは日本語設定にしてるし、他のアプリも日本語になってる。
これまでLenovoのPCは5台くらい買ってきたのにISEだけ英語になるの初めてなんだが。
URLリンク(i.imgur.com)

86:デフォルトの名無しさん
23/12/31 17:55:15.89 s/6k3+Yx.net
そういうのsurfaceでもあったな
OSセットアップ時の国設定が半端に適用された状態だから入れ直した方が早いかも

87:デフォルトの名無しさん
24/01/01 01:36:45.15 /rCM9JK/.net
>>85
Windowsは英語版を日本語に切り替えると日本語にならないところがある
だから日本語版でインストールした方がいい
ちなみにいまどきISEを使っているのもよくわからない

88:デフォルトの名無しさん
24/01/01 21:51:12.11 uj2mjMNR.net
Windows PowerShell ISEでPowerShell Coreを利用する
URLリンク(dev.classmethod.jp)

勝手にアプリをインストールできない環境なら意味あるかもしれない

89:デフォルトの名無しさん
24/01/02 12:27:48.68 TDOOgc4U.net
powershell iseってのを知らなかったけど起動したらUIシンプルで美しいな
VSCodeもこれくらいシンプルになってくれんかな

90:デフォルトの名無しさん
24/01/02 12:49:42.78 ztgjURNX.net
カスタマイズしてシンプルにすればいいと思うよ
俺はどちらかというとVSCodeのほうが機能美を感じる
デフォルトで万人の感性にフィットするモノは存在しない
カスタマイズも嫌なら自分で作るか作らせるか

91:デフォルトの名無しさん
24/01/02 20:24:20.63 G9bvfkvl.net
>>88
ヤベーもの見てるんだなw

92:デフォルトの名無しさん
24/01/15 23:56:13.49 0fJNPgiU.net
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:デフォルトの名無しさん
24/01/16 12:08:02.87 YM90ubox.net
何が言いたいのかわからないw
コードを実行した結果が書かれてないので
何を言いたいのか知るにはこのコードを実行しなきゃならない
めんどくさいw

94:デフォルトの名無しさん
24/01/16 18:55:49.27 6T/+PhGk.net
プロパティがgetterだから

95:デフォルトの名無しさん
24/01/17 09:27:27.73 HArby8R7.net
$o | Get-Member を実行してみれば分かるけど$o.aはフィールドじゃなくてプロパティだからな
$o.aのgetter( $o.get_a() )の戻り値を関数に渡しても$o.aの値は変わらない

96:デフォルトの名無しさん
24/02/11 23:33:57.66 Z05z2D4x.net
パワーシェルすげえな
仕事がどんどん片付いていくよ

97:デフォルトの名無しさん
24/02/27 14:14:12.56 JyRut9xW.net
2つのCSV(どちらも同じヘッダー)で両方に一致するデータ行があった場合にその行を2つのCSVから取り除きたいんだけどどうしたらいいの?
ヘッダーがDate,Shop,Sales だとしてユニークな項目がなく全く同じデータが1つ目のCSVに1行、2つ目のCSVに2行あった場合に2つ目のCSVは1行だけ消したい
Where-object だと2行とも消えちゃう

98:デフォルトの名無しさん
24/02/27 18:46:20.00 hxHkafQb.net
2つのCSVをどうやってwhere-objectに渡してんだよ
その2行が消える間抜けコード晒してみなよ

99:デフォルトの名無しさん
24/02/27 19:14:40.76 JyRut9xW.net
chatgptに聞いたらそうなった

100:デフォルトの名無しさん
24/02/27 22:08:44.15 JyRut9xW.net
# 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:デフォルトの名無しさん
24/02/27 23:21:34.71 j3BJYXF1.net
わーいできたー
$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:デフォルトの名無しさん
24/02/27 23:58:09.98 IJ26J3uc.net
$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:デフォルトの名無しさん
24/02/28 00:21:41.74 JjFjLo/S.net
段階を踏まないのは謎だよな
ファイルをコピーする概念もなさそう

104:デフォルトの名無しさん
24/02/28 00:54:14.86 hPdEXjNd.net
これで良かったわ
$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:デフォルトの名無しさん
24/02/28 01:32:49.70 anWSvM2g.net
CSVファイルに想定外のデータがあることを考慮しないのか

106:デフォルトの名無しさん
24/02/28 02:17:43.88 gh65zyvf.net
わ仕事早い…
csv1の方はDateがYYYY/MM/DDの10桁固定で
csv2の方はDateがYYYY/M/Dで8~10桁になってて
日付としてみれば同じなんですが1行を文字ででみると違う可能性があります…
後出しですいません
またShopはだいたい一致してるのですが
「ローソン札幌店」と「ローソン札幌」や「ローソンサッポロ」みたいな内容が異なることがあってそこを必ず自前のfunctionの変換リストかましてから比較する予定でした
私の想定を超えるプログラムでfunctionを挟むこともできない

107:デフォルトの名無しさん
24/02/28 02:24:06.13 yYqm5P+g.net
カラムの曖昧さとかは全く興味沸かないなあ自分でやんな

108:デフォルトの名無しさん
24/02/29 08:30:06.44 Qx0i34px.net
ファイルのサイズが大きければ実装が変わる

109:デフォルトの名無しさん
24/02/29 08:47:23.80 8KhlEQjj.net
チンコのサイズが大きければ実績が変わる

110:デフォルトの名無しさん
24/03/01 15:53:36.57 bh14ivY9.net
昨日の少し試しましたが

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

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

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

土日に頑張ります

111:デフォルトの名無しさん
24/03/02 23:39:14.56 XQV1Pqn6.net
目的よりも手段にこだわっていると思われる
テキストファイルとPowerShellだけで、イレギュラーなデータがあるかもしれないデータを操作をするのは、かなり面倒なやり方だぞ。

112:デフォルトの名無しさん
24/03/02 23:40:34.42 XQV1Pqn6.net
>>110 はキャラクタセットも気にしてなさそうなんだよな

113:デフォルトの名無しさん
24/03/03 03:11:25.14 CrVe/94r.net
行比較が出来るようになれば対象が何だろうが応用できるだろ
話はとっくに終わってんのよ
>目的よりも手段にこだわっていると思われる
これまんまお前のことじゃね?

114:デフォルトの名無しさん
24/03/05 01:41:57.29 Mm4X91cX.net
そんなに複雑なら、シェルの範囲を超えている。
Ruby など動的言語の出番

>>106
RubyのCSV では、コンバーターで変換器を自作する

115:デフォルトの名無しさん
24/03/06 05:34:48.47 oDRlZbsC.net
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:デフォルトの名無しさん
24/03/06 07:42:44.20 wzhaiXwv.net
PowerShellだと何も考えずにDateTime変換できるのに、Rubyだとそんなに手間かかるのか
もうそんな言語使うの止めて大人しくPowerShell使ったら?

117:デフォルトの名無しさん
24/03/06 17:02:39.85 8FQ+1AZx.net
すいません初心者でとんちんかんな質問だったらごめんなさい
PowerShellからarduinoにデータを送ってOLEDで表示するセンサーモニターを作ってます
CPU・GPUの使用率や温度は取り出せて表示できたのですが
FPSってどこからか取り出す方法ってありますか?
使用率や温度と違うのでPresentMonやAfterburnerからGet-Counterで取得する?
とか考えて調べてるのですが分からなくて
とんちんかんなこと言ってたらすいません
できるできない含めて教えてください

118:115
24/03/07 01:47:21.31 Z/86eyX0.net
基本的に、Go でも、こういうのしかない

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

それか、RFC 3339, RFC 3339 Nano

これら以外を使っているシステムは、バグるからダメ!

119:デフォルトの名無しさん
24/03/07 01:55:49.10 yhOhiWWp.net
>>117
FPSて。要するにモニタのリフレッシュレートが欲しいんじゃろ?
ほれ
$RefreshRate = Get-WmiObject -Class:Win32_videocontroller | Select-Object -ExpandProperty CurrentRefreshRate

120:デフォルトの名無しさん
24/03/07 10:15:46.32 s2RGChkv.net
>>119
返事ありがとうございます
言葉足らずですいません
頂いた情報は現在設定しているリフレッシュレートが表示されるようです
欲しいデータはGeForce ExperienceやMSI Afterburnerで画面上でオーバーレイさせて
表示しているリアルタイムのFPSとして表示されている数値なんです
FPSやフレームレートで検索してましたがリフレッシュレートでも探してみます

121:デフォルトの名無しさん
24/03/07 10:15:52.25 s2RGChkv.net
>>119
返事ありがとうございます
言葉足らずですいません
頂いた情報は現在設定しているリフレッシュレートが表示されるようです
欲しいデータはGeForce ExperienceやMSI Afterburnerで画面上でオーバーレイさせて
表示しているリアルタイムのFPSとして表示されている数値なんです
FPSやフレームレートで検索してましたがリフレッシュレートでも探してみます

122:デフォルトの名無しさん
24/03/07 10:51:01.07 s2RGChkv.net
連投してましたすいません
引き続き皆さんの知恵を貸してください

123:デフォルトの名無しさん
24/03/07 13:04:08.87 9xBYf94s.net
まずそれらがfps値返すようなAPI持ってるか調べなよ
無いなら値として取得は無理だろうね
fps表示部分が単色ならそのエリアをキャプチャして数字認識でもした方が早そう

124:デフォルトの名無しさん
24/03/07 14:35:34.66 s2RGChkv.net
>>123
ヒントありがとうございます
APIを調べてみたらNVIDIAにNVAPIと言うのがありました
ここからどうやって取り出すか調べてます
もし良かったらもう少し何かヒントをください

125:デフォルトの名無しさん
24/03/07 17:21:43.79 9xBYf94s.net
もうpowershell関係ないがPresentMon64に計測対象のPID渡せばfps取得できるみたいね

126:デフォルトの名無しさん
24/03/07 17:56:53.13 YZU0b9T9.net
>>125
はいPresentMonでもFPSを取れるみたいなのは調べました
ただ、今arduinoㇸpowarshellからCPUGPUのデータを
受け取ってたのでそこと一緒に入れる方法が見つけられなくて

127:110
24/03/07 22:55:03.61 PPl+ScPv.net
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])

128:110
24/03/07 22:56:30.34 PPl+ScPv.net
# ファイル名から日付に変換する
$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) }

129:110
24/03/07 22:57:21.99 PPl+ScPv.net
# 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 '=>' }

130:110
24/03/07 23:00:00.89 PPl+ScPv.net
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:デフォルトの名無しさん
24/03/08 02:02:18.05 nneR3Lgu.net
それだけプログラミングできるなら、
データベースもある、Ruby on Rails で稼げ
PowerShell では稼げないだろ

132:デフォルトの名無しさん
24/03/08 19:54:09.17 kAti37wZ.net
無償のRDBに取り込んで操作すれば楽なのにな
SQL Server ExpressもSQLもわからないのかもしれないが

133:デフォルトの名無しさん
24/03/08 23:00:20.01 swFfFcBY.net
いや、それならSQLiteでええやん

134:デフォルトの名無しさん
24/03/09 21:26:55.41 HJGXBhOf.net
>>133
それマイクロソフト製品じゃないぞ?

135:デフォルトの名無しさん
24/03/10 01:11:42.47 AxZkOQF1.net
sqliteはnugetから落とせるだろ

136:デフォルトの名無しさん
24/03/10 02:22:29.61 dZzOrK8S.net
マイクロソフト製品じゃないとダメな理由がよく分からない

137:デフォルトの名無しさん
24/03/10 12:24:51.84 2l3n+JcC.net
>>136
マイクロソフトのサポートが対応を渋る

138:デフォルトの名無しさん
24/03/10 12:25:36.50 2l3n+JcC.net
SQL Server Expressを嫌がる理由がわからない

139:デフォルトの名無しさん
24/03/13 12:54:32.04 dDXeoITb.net
FPS値を取得したがっていた者です
あれから色々調べてHWiNFOから取得する事ができました
ご協力ありがとうございました

140:デフォルトの名無しさん
24/03/14 01:25:06.87 3xDTJGqn.net
ウェブ開発では、Ruby on Rails 一択。
Railsは、PostgreSQL, MySQL, SQLite の3大データベースに対応している。
ただし本番用では、PostgreSQL一択。
SQLiteは開発用・個人用など
AWS Aurora は、PostgreSQL, MySQLに対応している。
SQLiteはブラウザなど、多くのアプリに含まれて使われている

141:デフォルトの名無しさん
24/03/14 04:08:32.14 XOsoQn4t.net
ORACLE「え?ワイは?」

142:デフォルトの名無しさん
24/03/14 04:11:13.73 MTVljuIS.net
Rubyとかいう20年前の言語w

143:デフォルトの名無しさん
24/03/14 14:26:49.02 i9kIdifV.net
デフォで存在してるところが良いんじゃないか
わざわざインストールするのなら今更新規にRubyを入れるのは無いだろうな

144:デフォルトの名無しさん
24/03/14 21:10:47.40 xE50NtDY.net
>>141
オラクル社とマイクロソフト社がクラウドの世界では提携しているのを知らないのか?

145:デフォルトの名無しさん
24/03/15 03:50:52.94 d5IiPK+0.net
「主なRDB」でググった結果
Microsoft SQL Server.
Oracle Database
PostgreSQL.
MySQL
Amazon Relational Database Service.
IBM Db2 Database.

146:デフォルトの名無しさん
24/03/15 08:13:53.75 X0BgzxQ9.net
まだ続くの?家計簿に適してるのはどれよ

147:デフォルトの名無しさん
24/03/15 19:27:44.40 Yppsp93L.net
家計簿レベルなら1ヶ月に多くても1000件ないでしょ
csvをそのままOS標準で使える言語で処理するのがいいよ

148:デフォルトの名無しさん
24/03/16 23:37:28.12 5O1O3AvE.net
>>147
複式簿記というものを知らないのがバレているぞ

149:140
24/03/17 01:43:19.61 02imyFwJ.net
複式簿記の自作なんて無理。
テーブル数も、100 ぐらい行きそう
総勘定元帳とか、複数のテーブルを紐付けしないといけないから、
プログラムがめちゃめちゃ複雑。
これは有料の会計ソフトを使うべき
自作では、単純な単式簿記しかできない
Ruby のCSV Table や、データベースを使うなら、Ruby on Rails とか。
Railsなら、3大データベースに対応している
参照、>>140

150:デフォルトの名無しさん
24/03/17 10:50:03.64 b6WSYS3s.net
Rubyガイジってどこにでもわくんだな
トコジラミ並み

151:デフォルトの名無しさん
24/03/19 02:21:32.51 ilfn8WqH.net
>>97
Ruby のCSV.Table で作ってみた
URLリンク(paiza.io)

152:デフォルトの名無しさん
24/03/19 13:20:31.92 xCYlYIv4.net
このスレは
PowerShell -Part 7
です

153:デフォルトの名無しさん
24/04/05 00:59:22.85 VnIedoxP.net
Set-ExecutionPolicyとSudoって何が違うん?
とあるps1ファイルを実行する時にそのプロセスだけ実行ポリシーを変更するSet-ExecutionPolicy -ExecutionPolicy Bypass -Scope Processを実行後にxxx.ps1を実行してるんだが
Sudoが実装されたし楽ちんになるなとSudo xxx.ps1を入力するとエラーになる
どっちも一時的にパーミッションを変更してアクセス権限を付与するコマンドだと思うんだが何が違うんだ?

154:デフォルトの名無しさん
24/04/05 01:03:46.96 Lw8p7kTG.net
窓の杜のニュース記事だけど、ここの情報参考になる?
URLリンク(forest.watch.impress.co.jp)

155:デフォルトの名無しさん
24/04/05 01:55:57.21 3ECyzj96.net
>>153
そもそもいつからあなたのなかでは、ps1ファイルが実行形式ファイルになったのか?

156:デフォルトの名無しさん
24/04/05 20:13:09.22 Uri/y4c1.net
Powershell コンソールで、xxx.ps1 とするとエラーになる!
パス付きで、./xxx.ps1, .\xxx.ps1 か、
powershell ./xxx.ps1, powershell .\xxx.ps1 なら実行できる

157:デフォルトの名無しさん
24/04/06 01:56:00.53 q9eV9Q7I.net
だいたい間違って実行してしまわないような仕様にしたのがわからない世代がいるのか

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

自分で作って自分かミスして自分だけの問題で終わるならかまわないが、そんな趣味でPowerShellを使っている人間なんてほとんどいないと思う。

158:デフォルトの名無しさん
24/04/06 01:58:23.66 q9eV9Q7I.net
コマンドレベルまで作り込んでテストされつくされているものと、自作のスクリプトをPATHに設定してどこからでも実行できるものが同列とはおそろしいな

159:デフォルトの名無しさん
24/04/06 02:15:20.68 9cPJ1AnL.net
vscodeのターミナルと、windowsターミナルで同じpowershellでも認識できるコマンドが違うのなんでだろ
プロファイル見るとそれぞれ同じpowershellのexe参照してるのに

160:デフォルトの名無しさん
24/04/06 02:50:42.29 q9eV9Q7I.net
>>159
VSCodeはWindowsの一部じゃないぞ?

VSCodeアプリケーションは、同じような動きと結果をマネているだけで、エミュレーションのようなことをしているのだから、完全に同じようにするのは困難。

161:デフォルトの名無しさん
24/04/06 02:58:46.88 Zc90rRma.net
大体ps1の1って何なのとか
vbsやcmdやらがそのまま実行できるのにps1だけ半端に縛るのもおかしな話だし
>間違って実行してしまわないような仕様
こんなのいつ決まったんだ
MSでポリシーが統一されてるようには全く思えないんだが

162:デフォルトの名無しさん
24/04/06 07:02:00.61 jPXaIytz.net
世を取り巻くセキュリティ事情が日々刻々と変わっているのにかなり先発のvbsやcmdと同じじゃないからおかしいとな
少なくともある程度シェアを占める見込みがあるのだし前例踏襲に固執して0か100か思考に陥るほうがまずい
そういう脊髄反射的な他責や論点ずらしの癖は周囲を白眼視させるだけじゃよ

163:デフォルトの名無しさん
24/04/06 07:25:25.77 6zl9Uxmg.net
>>161
>>間違って実行してしまわないような仕様
>こんなのいつ決まったんだ
powershellが出たばかりの頃に中の人が言ってたよ

164:デフォルトの名無しさん
24/04/06 08:19:52.54 NGHFFTyQ.net
>大体ps1の1って何なのとか
バージョン1の事
元々の計画ではPowerShell2向けのスクリプトファイルは.ps2にするつもりだった

165:デフォルトの名無しさん
24/04/06 15:04:28.66 M3AJuz+l.net
拡張子にバージョン含めるアホは初めて見たかも
Windowsの技術者の発想ではないね
Powershellはこの拡張子含めて起動周りだけ残念

166:デフォルトの名無しさん
24/04/06 20:16:29.68 qfnATLfz.net
まぁMSはOSも言語も開発環境も既に人気もなく寿命もつきようとしてるから
Windows最後の砦だったゲームもValveがProtonとSteam OS作ったからLinuxでほぼすべてのゲームが動いてパフォーマンスもWindowsより良い場合もある
ただしあくまでエミュレートだからカーネルモードで動くアンチチートだけは動かなくてフォトナやヴァロやApexなんかの人気FPSが動かなかったり永久BAN対象になる
まぁこれも時間の問題でWindowsが必要とされなくなるのは間近だな

167:デフォルトの名無しさん
24/04/06 20:56:33.00 9cPJ1AnL.net
いるよねこういう極論振り回す人
脳内で完結してるから聞く耳を持たない

168:デフォルトの名無しさん
24/04/07 09:15:27.80 nb2SxK5J.net
プログラマに限らずIT界隈はMS批判するのがカッコいいと勘違いしてる人多いからね

169:デフォルトの名無しさん
24/04/07 10:22:00.29 K0Taf7XF.net
>>165
まあ、マイクロソフトだから、拡張子を3文字にする慣習が伝統的にあるせいかな。

170:デフォルトの名無しさん
24/04/07 10:23:05.93 K0Taf7XF.net
>>167
いまでもシェアのほとんどがWindowsなのにね

171:デフォルトの名無しさん
24/04/08 21:40:31.39 bL5gAXu8.net
PowerShell の ps1 ファイルは 何故 1なのか
URLリンク(tech.guitarrapc.com)

172:デフォルトの名無しさん
24/04/09 00:15:02.63 32z8iBj9.net
powershell 7.xってどういう立ち位置なんだろ
windows標準では入ってないから、開発者向けなのかな
Rubookは7.2が標準だけど

173:デフォルトの名無しさん
24/04/09 03:22:25.95 Gy4/KbO3.net
PowerShell Core(6.0以降) では
・.NET Coreインストール可能なWindows以外のOSでも実行可能
・デフォルト文字コードがUTF8(BOMなし)、改行がLF
・WorkFlowなど機能の一部は使用不可
あと
WindowsPowerShell → PowerShell Coreで破壊的変更あり(PowerShell Core 破壊的変更でBingってください)
C#のソースを流用する場合ジェネリックが使える7.3が便利かなと思います
自分は未だPowerShell Coreに移行出来ていません

174:デフォルトの名無しさん
24/04/09 20:15:01.39 ru6IFaGR.net
>>172
解釈はまかせるけど技術ブログでは以下の記載がある
URLリンク(devblogs.microsoft.com)
> 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:デフォルトの名無しさん
24/04/09 21:52:45.57 yR8KPsJp.net
用がないなら関わる必要ないんじゃね
OSに標準で入ってる事しかメリット無いんだし

176:デフォルトの名無しさん
24/04/13 22:49:21.10 7ey9vG0h.net
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:デフォルトの名無しさん
24/04/13 22:51:19.83 7ey9vG0h.net
shift-jifになってますがjisでもちゃんとエラーになります

178:デフォルトの名無しさん
24/04/13 22:52:54.00 OrtqC7Lq.net
コマンドレットの引数と.NETのそれを混同してるのでは
-Encoding Defaultでしょ

179:デフォルトの名無しさん
24/04/14 08:27:07.05 JqEwLIX+.net
なんでなんですかと言われても自分で貼ったエラーメッセージに書いてある通りでしょ
URLリンク(learn.microsoft.com)
どうしてもShift-JISと書きたいならPowerShell6.2以降をご利用ください
URLリンク(learn.microsoft.com)

180:デフォルトの名無しさん
24/04/15 14:56:57.87 PE3M1YJ/.net
よく知らんけど、UTF8もSHIFT-JISもMS932
ASCIIも、全部半角英数文字なら、
完全に互換性あるよな❓
BOM付UTF8はダメだろうが

ていうか、改行はLF CR LF+CR CR+LF
のどれが正しいの❓

181:デフォルトの名無しさん
24/04/15 15:02:21.24 PE3M1YJ/.net
ていうか、拡張子mp3は音楽で音なのに、
でもてか、拡張子mp4は動画で映像だし、ま、音声も含まれてるけど
もしかして、拡張子mp5は匂いとかになるのかな❓ なんて訳ないよね

182:デフォルトの名無しさん
24/04/15 15:11:13.01 t9UnzSYj.net
mp3: MPEG-1 Audio Layer-3
mp4: MPEG-4 Part 14

183:デフォルトの名無しさん
24/04/15 22:02:24.55 uMyBIzHs.net
>>180
0x5Cと0x7Eが違うだろ
0x5CはASCIIやUTF-8だと逆スラッシュだけどShift-JISでは円記号
0x7EはASCIIやUTF-8ではチルダでShift-JISだとオーバーライン


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch