前スレ
PowerShell -Part 6
https://mevius.5ch.net/test/read.cgi/tech/1644744972/
次スレは>>980が立ててね!!
探検
PowerShell -Part 7
1デフォルトの名無しさん
2023/11/29(水) 16:07:49.46ID:0g8RZ7sB2023/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"
コマンドレットは変な仕様が多いから妙だな…と思ったらそれ以上深入りする必要はない
gciで-Includeを使う場合gciに与えるデフォルト引数としてアスタリスク「*」を含んだパス名が必要なんだよ特に書いてないけど
つまり「Get-ChildItem -Include *hoge*.txt *」で意図通りになるはず
というかね、-Includeなんか忘れていい。フィルタならwhere-objectでやった方が判りやすい
gci | where Name -like "*hoge*.txt"
コマンドレットは変な仕様が多いから妙だな…と思ったらそれ以上深入りする必要はない
2023/12/01(金) 22:24:22.03ID:nrjrox6C
そもそもワイルドカードの単純なフィルタならデフォルトの-pathでできるから-includeとか基本使わないな
learn見たら「-includeは-pathの末尾が*じゃないと動かない(-recurseなら省略可)」ってはっきり書いてたわ
learn見たら「-includeは-pathの末尾が*じゃないと動かない(-recurseなら省略可)」ってはっきり書いてたわ
2023/12/01(金) 22:30:34.62ID:S2lEQVa3
ファイルシステム側に検索オプションを指定するのが-Filterで
PowerShell自信でフィルタリングするのが-Includeだっけ、懐かしい話だ
PowerShell自信でフィルタリングするのが-Includeだっけ、懐かしい話だ
2023/12/02(土) 08:48:18.48ID:Fkw0aBk3
gciの表示が間延びしてるのを詰めたい
ModeとLastWriteTimeにあんなに幅いらんやろ
ModeとLastWriteTimeにあんなに幅いらんやろ
9デフォルトの名無しさん
2023/12/02(土) 20:49:53.53ID:CMdctbaC 4ですみなさんありがとうございます
当然質問する前にLearnで確認していたのですが、てっきりワイルドカードも使えるよ!ぐらいのニュアンスだと思っていました
大人しくwhere-object使います。すっきりしましたm(_ _)m
当然質問する前にLearnで確認していたのですが、てっきりワイルドカードも使えるよ!ぐらいのニュアンスだと思っていました
大人しくwhere-object使います。すっきりしましたm(_ _)m
2023/12/02(土) 21:42:01.24ID:B4ObjCpy
>>8
Format-Table -AutoSize
Format-Table -AutoSize
2023/12/03(日) 07:28:03.75ID:tKLbRUl7
すまんコマンド追加で整形したいんじゃない
デフォルトの形式をいじりたい
デフォルトの形式をいじりたい
2023/12/03(日) 09:12:08.68ID:GWzH2m5A
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
としてみたら全然違う結果になってしまった
出てきたものの数字を変えるだけじゃだめなのかな
gc .\fd.ps1xml | % { $_ -replace '7', '5' } | % { $_ -replace '26', '20' } | % { $_ -replace '14', '12' } > fd-mod.ps1xml
Update-FormatData -PrependPath .\fd-mod.ps1xml
としてみたら全然違う結果になってしまった
出てきたものの数字を変えるだけじゃだめなのかな
2023/12/03(日) 13:55:42.15ID:tKLbRUl7
なぜTable形式でなくList形式になるのでしょうか
2023/12/03(日) 17:41:11.89ID:tKLbRUl7
ファイルとディレクトリが混ざってるからだった
あとは日付と時刻を詰めたい
あとは日付と時刻を詰めたい
16デフォルトの名無しさん
2023/12/05(火) 09:46:48.52ID:RGe8cD49 引数付きエイリアスの作り方を教えてください
'ABC' > file
tar -c -f - file | tar -x -O -f - file
の 「tar -x -O -f」 をエイリアス tarout にして
tar -c -f - file | tarout - file
として使うにはどうするのでしょうか
'ABC' > file
tar -c -f - file | tar -x -O -f - file
の 「tar -x -O -f」 をエイリアス tarout にして
tar -c -f - file | tarout - file
として使うにはどうするのでしょうか
2023/12/05(火) 14:36:11.77ID:lXd0pnoy
できない
そういうのはfunctionとかfilter作ってやる
そういうのはfunctionとかfilter作ってやる
2023/12/05(火) 14:53:09.61ID:7QjuGoaz
19デフォルトの名無しさん
2023/12/05(火) 15:54:15.98ID:RGe8cD49 そこまではたどり着いたのですが苦戦しています
正直言って手も足も出ません
どうすればよいのでしょうか
正直言って手も足も出ません
どうすればよいのでしょうか
2023/12/05(火) 21:04:00.28ID:rxI6O073
何がしたいのか知らんけどpowershellのパイプはオブジェクトに変換しないとだからtarが期待する入出力にはならんだろうな
ほれ
function tarout {
tar -x -O -f $args
}
tarout - file
ほれ
function tarout {
tar -x -O -f $args
}
tarout - file
2023/12/05(火) 21:27:27.93ID:7QjuGoaz
>powershellのパイプはオブジェクトに変換しないとだからtarが期待する入出力にはならんだろうな
PSNativeCommandPreserveBytePipe
https://learn.microsoft.com/ja-jp/powershell/scripting/learn/experimental-features#psnativecommandpreservebytepipe
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くそすぎる
それは最初に自分で試してだめだったやつですな
パイプでなく標準入力を読もうとして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はくそ
PS 1> 'Success' > testfile
PS 2> tar -c -j -f test.tar.bz2 testfile
PS 3> Get-Content -Path test.tar.bz2 -AsByteStream | tar -x -O -f - testfile
Success
PS 4> tar -c -j -f - testfile | tar -x -O -f - testfile
Success
PS 5> . { tar -c -j -f - testfile } | tar -x -O -f - testfile
tar.exe: Error opening archive: bzip decompression failed
PowerShellからのバイトストリームはネイティブに通る (PS 3>)
ネイティブからネイティブもバイトのまま壊れずに通る (PS 4>)
ネイティブからPowerShell(経由でネイティブ)は通らない (PS 5>)
だからPowerShellでtaroutは書けない
Start-Processで頑張れば書けるのかもしれない、知らんけど
進歩はしたがtarout程度に苦労多すぎなPowerShellはくそ
2023/12/07(木) 08:28:41.09ID:c+XrIY2G
beginブロックで$inputを使うとバイトストリームが出てくるようになって欲しい
そしたらtaroutもこう書けるようになるのに
function tarout { begin { $input | tar -x -O -f $args }}
でもこれは難しいだろうな
そしたらtaroutもこう書けるようになるのに
function tarout { begin { $input | tar -x -O -f $args }}
でもこれは難しいだろうな
2023/12/07(木) 15:51:22.78ID:X0+oSYJ4
beginじゃない別のキーワード用意するレベルじゃないと難しいだろうなぁ
2023/12/08(金) 08:18:26.16ID:tWmRPca2
いやbeginブロックで十分でしょ
今はbeginブロックの$inputは無意味なんだから有効活用
難しいと思うのは
・beginブロックに$inputがあったら、そのfunction,ScriptBlockにパイプでバイトよこせマークをつける
・バイトよこせマークがあったらパイプラインでネイティブコマンド扱いしてバイトを流す
処理が必要だからで・・・難しく・・・な・・・い、かも
今はbeginブロックの$inputは無意味なんだから有効活用
難しいと思うのは
・beginブロックに$inputがあったら、そのfunction,ScriptBlockにパイプでバイトよこせマークをつける
・バイトよこせマークがあったらパイプラインでネイティブコマンド扱いしてバイトを流す
処理が必要だからで・・・難しく・・・な・・・い、かも
2023/12/08(金) 08:33:10.45ID:xElvY7bj
本気で難しくないと思うならお前が実装してPR送れよ
2023/12/08(金) 20:15:49.14ID:8rS6bPls
公式で7.3にもなって直してないんじゃそんなのを気にしてるのは少数派なんだろ
むしろお前が動くしかなかろうよ
むしろお前が動くしかなかろうよ
2023/12/09(土) 13:31:46.58ID:F2smNVkX
個人的にはpythonのライブラリ群をそのままPSObjectにぶっこ抜きして動かせるようにして欲しい
2023/12/09(土) 15:21:51.18ID:NdJUV/GZ
Python - Support · Issue #19418
https://github.com/PowerShell/PowerShell/issues/19418
https://github.com/PowerShell/PowerShell/issues/19418
2023/12/09(土) 18:40:01.66ID:F2smNVkX
>>30
なんかそのスレッドはpython使いの声がでかいのかpython主導でpython起動すりゃいいだろ的な話がされてて俺の意図とは違うな
俺の考えはそれとは真逆でpythonの便利ライブラリだけpowereshellで拝借してキモいpython処理系自体を入れたくないのよね
俺の言いたいこと判るよね
なんかそのスレッドはpython使いの声がでかいのかpython主導でpython起動すりゃいいだろ的な話がされてて俺の意図とは違うな
俺の考えはそれとは真逆でpythonの便利ライブラリだけpowereshellで拝借してキモいpython処理系自体を入れたくないのよね
俺の言いたいこと判るよね
32デフォルトの名無しさん
2023/12/09(土) 18:46:30.00ID:iYG1bkmj キモいpython処理www
キモいのはpowershellじゃぼけww
キモいのはpowershellじゃぼけww
2023/12/09(土) 19:18:53.30ID:F2smNVkX
34デフォルトの名無しさん
2023/12/09(土) 20:18:03.05ID:P3Dp1Ib1 $null | %{'hoge'+$_}
これでなんでhogeが出力されるんですか?
Nullになるかとおもったんですが
これでなんでhogeが出力されるんですか?
Nullになるかとおもったんですが
2023/12/09(土) 21:01:47.88ID:2orRcob9
型を合わせるために、NULLが空文字に変換されるから。
そこでNULLを期待するのはRDBとかの場合だね。(RDBにもよるけど。)
そこでNULLを期待するのはRDBとかの場合だね。(RDBにもよるけど。)
2023/12/09(土) 21:38:52.15ID:NdJUV/GZ
https://learn.microsoft.com/ja-jp/powershell/scripting/lang-spec/chapter-06?view=powershell-7.3#68-conversion-to-string
string 型に値を変換する規則は次のとおりです。
・null 型の値は、空の文字列に変換されます。
string 型に値を変換する規則は次のとおりです。
・null 型の値は、空の文字列に変換されます。
37デフォルトの名無しさん
2023/12/09(土) 21:38:52.87ID:P3Dp1Ib1 >>35
なるほど
ありがとうございます
ためしに
$null | %{$_+$hoge}
にしたらNullになりました
+演算子の左辺の型に合わせて右が型変換されるんですね
…PowerShellは難しい
なるほど
ありがとうございます
ためしに
$null | %{$_+$hoge}
にしたらNullになりました
+演算子の左辺の型に合わせて右が型変換されるんですね
…PowerShellは難しい
38デフォルトの名無しさん
2023/12/09(土) 21:42:29.77ID:P3Dp1Ib1 >>36
ありがとうございます
ありがとうございます
2023/12/13(水) 09:57:50.32ID:RVDAjcVA
PowerShellでファイルの詳細なプロパティを編集することってできますか?
評価とかタグとか下のurlに載っている300種類ぐらいの拡張プロパティです
Windows プロパティ - Win32 apps | Microsoft Learn
https://learn.microsoft.com/ja-jp/windows/win32/properties/props
プロパティの取得だけなら
$shell = New-Object -COMObject Shell.Application
$folder = Split-Path $path
$file = Split-Path $path -Leaf
$Getfolder = $shell.Namespace($folder)
$Getfile = $Getfolder.ParseName($file)
$Getfile.ExtendedProperty("System.SimpleRating")
これでできたんですけど
プロパティの編集方法は色々調べてみたんですがわかりませんでした
評価とかタグとか下のurlに載っている300種類ぐらいの拡張プロパティです
Windows プロパティ - Win32 apps | Microsoft Learn
https://learn.microsoft.com/ja-jp/windows/win32/properties/props
プロパティの取得だけなら
$shell = New-Object -COMObject Shell.Application
$folder = Split-Path $path
$file = Split-Path $path -Leaf
$Getfolder = $shell.Namespace($folder)
$Getfile = $Getfolder.ParseName($file)
$Getfile.ExtendedProperty("System.SimpleRating")
これでできたんですけど
プロパティの編集方法は色々調べてみたんですがわかりませんでした
2023/12/13(水) 21:26:19.77ID:SOLvnyCP
2023/12/13(水) 23:49:36.01ID:RVDAjcVA
2023/12/14(木) 03:02:02.55ID:EBZTu/MN
中見たら7時代のWindows-API-Code-Packとやらを拾ってきて使うのか
本来シェル名前空間からやれそうな事なのにWritePropertyへ辿りつくまでかなり遠回りしたな
本来シェル名前空間からやれそうな事なのにWritePropertyへ辿りつくまでかなり遠回りしたな
43あぼーん
NGNGあぼーん
2023/12/16(土) 07:52:34.43ID:fGCT2KhW
ps1ファイルをユーザーに手軽に実行してもらう方法ってないですかね
batだと単にダブルクリックするだけでいいところが、
ps1だとショートカット作って↓↓をくっつけてと、とても運用に耐えられないんですが
「powershell.exe -ExecutionPolicy Unrestricted 」
batだと単にダブルクリックするだけでいいところが、
ps1だとショートカット作って↓↓をくっつけてと、とても運用に耐えられないんですが
「powershell.exe -ExecutionPolicy Unrestricted 」
2023/12/16(土) 08:42:06.64ID:5tZpbEW3
>>43
これならできそう
これならできそう
2023/12/16(土) 09:34:51.52ID:pgUnJUCg
>>44
ググればバッチファイルにPowerShellスクリプトを埋め込む方法が見つかるよ
ググればバッチファイルにPowerShellスクリプトを埋め込む方法が見つかるよ
2023/12/16(土) 10:07:55.43ID:fGCT2KhW
2023/12/16(土) 10:42:25.24ID:nDmmdgrP
ps1はコード署名して、グループポリシーで証明書配付しよう
2023/12/16(土) 12:13:16.06ID:fGCT2KhW
>>48
そこまでするなら、スクリプトよりexe作った方が早・・・
そこまでするなら、スクリプトよりexe作った方が早・・・
2023/12/16(土) 12:35:03.91ID:K5lUjnCI
>>43
やってみない手はない
やってみない手はない
2023/12/16(土) 16:03:42.74ID:XRhqtdk+
埋め込むやつって結局iex経由の特殊環境だから一部の変数とか使えなくて困る
無理に使わなくていいよ
無理に使わなくていいよ
2023/12/16(土) 23:27:25.62ID:yw6xDge+
横からすみません
>>40
のインストールにチャレンジしたのですが、管理者権限のPowerShellでInstall-ModuleをしたのにImport-Moduleでdllが無いみたいなエラーが出て使えません
どなたかアドバイス頂けないでしょうか
>>40
のインストールにチャレンジしたのですが、管理者権限のPowerShellでInstall-ModuleをしたのにImport-Moduleでdllが無いみたいなエラーが出て使えません
どなたかアドバイス頂けないでしょうか
2023/12/17(日) 00:21:34.60ID:OHxpVvei
>>52
下のURLの2つのnupkgをダウンロードして、ファイル名の後ろの拡張子を.zipに変更する
https://www.nuget.org/api/v2/package/Microsoft-WindowsAPICodePack-Core/1.1.4
https://www.nuget.org/api/v2/package/Microsoft-WindowsAPICodePack-Shell/1.1.4
↓
microsoft-windowsapicodepack-core.1.1.4.nupkg.zip
microsoft-windowsapicodepack-shell.1.1.4.nupkg.zip
この2つのzipを適当なフォルダに解凍して、libフォルダその他が作成される事を確認。ここで必要なのはlib配下の*.dllのみ
libフォルダ内の自分のpowershell環境と適合する.NETのバージョンのフォルダから*.dllを取り出してカレントディレクトリに配置
でいけるんじゃないかな
下のURLの2つのnupkgをダウンロードして、ファイル名の後ろの拡張子を.zipに変更する
https://www.nuget.org/api/v2/package/Microsoft-WindowsAPICodePack-Core/1.1.4
https://www.nuget.org/api/v2/package/Microsoft-WindowsAPICodePack-Shell/1.1.4
↓
microsoft-windowsapicodepack-core.1.1.4.nupkg.zip
microsoft-windowsapicodepack-shell.1.1.4.nupkg.zip
この2つのzipを適当なフォルダに解凍して、libフォルダその他が作成される事を確認。ここで必要なのはlib配下の*.dllのみ
libフォルダ内の自分のpowershell環境と適合する.NETのバージョンのフォルダから*.dllを取り出してカレントディレクトリに配置
でいけるんじゃないかな
2023/12/22(金) 07:48:19.63ID:wPcChJb5
$PROFILE ってなんなのでしょうか
$PROFILE.GetType() だと String のようですが
$PROFILE | Select-Object * で AllUsersAllHosts などが出てくるのがわかりません
$PROFILE | Select-Object * で何が起きているのでしょうか
$PROFILE.GetType() だと String のようですが
$PROFILE | Select-Object * で AllUsersAllHosts などが出てくるのがわかりません
$PROFILE | Select-Object * で何が起きているのでしょうか
2023/12/22(金) 09:01:10.81ID:FudXFPqY
PowerShellはAdd-Memberでオブジェクトにプロパティやメソッドを追加できる
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/add-member
$PROFILE | Get-Member を実行してみればわかるけど
AllUsersAllHostsとかは$PROFILEに追加されたNotePropertyって種類のプロパティ
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/add-member
$PROFILE | Get-Member を実行してみればわかるけど
AllUsersAllHostsとかは$PROFILEに追加されたNotePropertyって種類のプロパティ
2023/12/22(金) 09:10:30.60ID:nFOKM4xK
>>54
中身がPSCustomObjectでない変数にもNotePropertyを設定できる
ただしその変数に他の値を代入するとNotePropertyの情報は消えてしまうから用途は限定される
$a = "aaa"
$a = $a | Add-Member -PassThru "Value" "xxx"
$a = $a | Add-Member -PassThru "Value2" "yyy"
$a # aaa
$a.Value # xxx
$a.Value2 # yyy
$a | select *
$a = "bbb"
$a.Value # $null
中身がPSCustomObjectでない変数にもNotePropertyを設定できる
ただしその変数に他の値を代入するとNotePropertyの情報は消えてしまうから用途は限定される
$a = "aaa"
$a = $a | Add-Member -PassThru "Value" "xxx"
$a = $a | Add-Member -PassThru "Value2" "yyy"
$a # aaa
$a.Value # xxx
$a.Value2 # yyy
$a | select *
$a = "bbb"
$a.Value # $null
2023/12/22(金) 09:51:40.03ID:wPcChJb5
('str' | Add-Member -type NoteProperty -Name 'wao' -Value 'Wao!' -passThru).wao
→ Wao!
(123 | Add-Member -type NoteProperty -Name 'wao' -Value 'Wao!' -passThru).wao
→ Wao!
理解した
→ Wao!
(123 | Add-Member -type NoteProperty -Name 'wao' -Value 'Wao!' -passThru).wao
→ Wao!
理解した
2023/12/23(土) 21:24:52.21ID:xtnhDuDo
>>56
Add-Member は変数ではなくオブジェクトにメンバーを追加する
"aaa" と "bbb" は違うオブジェクトなんだから "aaa" に追加したメンバーが "bbb" に無いのは当たり前
Add-Member は変数ではなくオブジェクトにメンバーを追加する
"aaa" と "bbb" は違うオブジェクトなんだから "aaa" に追加したメンバーが "bbb" に無いのは当たり前
2023/12/25(月) 07:53:26.01ID:5GC0Dj8P
ネイティブコマンドの出力ってPowerShell界に入るとString列になるけど
Stringのそれぞれにプロパティで元のバイナリ付けて欲しい
Stringのそれぞれにプロパティで元のバイナリ付けて欲しい
2023/12/25(月) 08:58:53.82ID:xlHQ3YOr
>>59
PSNativeCommandPreserveBytePipe
https://learn.microsoft.com/ja-jp/powershell/scripting/learn/experimental-features#psnativecommandpreservebytepipe
PSNativeCommandPreserveBytePipe
https://learn.microsoft.com/ja-jp/powershell/scripting/learn/experimental-features#psnativecommandpreservebytepipe
2023/12/25(月) 11:02:44.18ID:5GC0Dj8P
バイナリが通るようになったのは
「ネイティブからネイティブ」と「PowerShellからネイティブ」だけ
「ネイティブからPowerShell」に手軽にバイナリ通したい
バイナリ出力ネイティブ | バイナリ入力ネイティブ
として使うバイナリ入力ネイティブ用にラッパーが書きたいのに今は書けない
「ネイティブからネイティブ」と「PowerShellからネイティブ」だけ
「ネイティブからPowerShell」に手軽にバイナリ通したい
バイナリ出力ネイティブ | バイナリ入力ネイティブ
として使うバイナリ入力ネイティブ用にラッパーが書きたいのに今は書けない
2023/12/25(月) 12:37:48.60ID:5GC0Dj8P
自分には必要ないから触れなかったけど
バイナリ出力ネイティブのラッパーも書けない
バイナリ出力ネイティブのラッパーも書けない
2023/12/25(月) 12:38:42.52ID:5GC0Dj8P
あ、手間をかければ書けるな
2023/12/26(火) 07:36:13.49ID:ghNGRT5G
引数に -i を複数回指定したいので param() を使わずに function を書いています
get-help で SYNTAX に使い方を表示するにはどうすれば良いのでしょうか
get-help で SYNTAX に使い方を表示するにはどうすれば良いのでしょうか
2023/12/26(火) 12:19:47.21ID:hM6Ywi/0
about_Comment_Based_Help
ttps://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_comment_based_help?view=powershell-7.4
このページの中の項目で
スクリプト モジュールでのコメント ベースのヘルプの構文
コメントベースのヘルプ キーワード
関数のコメント ベースのヘルプ
関数構文でのパラメーターの説明
スクリプトのコメントベースのヘルプ
あたりが参考になるかも
ttps://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_comment_based_help?view=powershell-7.4
このページの中の項目で
スクリプト モジュールでのコメント ベースのヘルプの構文
コメントベースのヘルプ キーワード
関数のコメント ベースのヘルプ
関数構文でのパラメーターの説明
スクリプトのコメントベースのヘルプ
あたりが参考になるかも
2023/12/26(火) 16:47:47.85ID:ghNGRT5G
paramを使わずにSYNTAXを表示する方法を尋ねたのはそこを見たからでして
方法がありましたら具体的にご教示くださいませ
方法がありましたら具体的にご教示くださいませ
2023/12/26(火) 19:16:46.24ID:CTT8zMQ8
nugetに上がってるモジュールのソースでも嫁
2023/12/26(火) 21:29:18.59ID:QC0ZGJu/
そもそもなんで -i を複数回指定したいんだろう
引数$i の型を配列にするのとは違うの?
引数$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.
と怒られます
オプション付きエイリアス代わりのfunctionが欲しかったのです
ffmpeg -f aac -i audio.bin -f hevc -i video.bin -c copy out.mp4
のようにffmpeg.exeと同じ使い方だと嬉しい
ちなみにValueFromRemainingArgumentsで受けようとしても
ffmpeg: Parameter cannot be processed because the parameter name 'i' is ambiguous. Possible matches include: -InformationAction -InformationVariable.
と怒られます
2023/12/27(水) 13:02:29.78ID:X+3+vX99
指定する対象はaudioとvideoと決まってるんだから
-aiや-viにすりゃいい
変態的なffmpegのオナニーに付き合う必要はない
-aiや-viにすりゃいい
変態的なffmpegのオナニーに付き合う必要はない
710064
2023/12/27(水) 13:12:15.16ID:1jSqRJ5E いやaudioとvideoに限らんし個数も不定なのよ
audioが言語別複数で、videoはチャプターごとに分かれて、字幕もあったり
結局ffmpegと同じ使い方ができるようにするのが面倒ない
audioが言語別複数で、videoはチャプターごとに分かれて、字幕もあったり
結局ffmpegと同じ使い方ができるようにするのが面倒ない
2023/12/27(水) 13:59:38.84ID:Fe+mtIWC
ffmpegはシーケンスが意味を持つ引数になってるのよね
どういう順で記述するかによって適用される範囲が異なってくる
どういう順で記述するかによって適用される範囲が異なってくる
2023/12/27(水) 20:51:25.44ID:85uYBZGc
なら引数は$argsで受け取って好きなように解釈したらええがな
740064
2023/12/27(水) 22:38:05.51ID:1jSqRJ5E だからそうしてるのが理解できないのかな
paramを使わないというのは $args を自分で解釈するということ
その上でparamを使わない場合のget-helpの出力について相談したんだが
聞いた相手が想像を超えたバカだったたようだ
邪魔したな
paramを使わないというのは $args を自分で解釈するということ
その上でparamを使わない場合のget-helpの出力について相談したんだが
聞いた相手が想像を超えたバカだったたようだ
邪魔したな
2023/12/28(木) 08:55:34.70ID:xGxlWVWv
PowerShellにはPowerShellの流儀があるわけで
それに合わないことをやろうとすれば苦労するのは当たり前
C言語で関数型プログラミングをしたいって騒いでるのと同レベル
それに合わないことをやろうとすれば苦労するのは当たり前
C言語で関数型プログラミングをしたいって騒いでるのと同レベル
2023/12/28(木) 09:27:10.14ID:i2ZdA1S0
・質問者がget-helpのやり方をスレで質問
・そもそもこうすればいいんじゃね?と別解について疑問があがる
・さほど適した別解はないことが判明
・質問者に対して怒り出す
別に苦労したと文句たれてるわけでもないのに質問者がウザ絡みされて気の毒すぎる
・そもそもこうすればいいんじゃね?と別解について疑問があがる
・さほど適した別解はないことが判明
・質問者に対して怒り出す
別に苦労したと文句たれてるわけでもないのに質問者がウザ絡みされて気の毒すぎる
2023/12/28(木) 10:13:47.89ID:DhrTF4+F
助言・回答者に対しキレ散らかすパターン多いな。同一人物か?
2023/12/28(木) 10:20:56.59ID:4ANODT1z
よく見たら>>16のtarと同じ奴か
2023/12/29(金) 08:36:49.58ID:KamNl0ts
PowerShellよりdoskeyのマクロにしたほうが簡単そう
2023/12/29(金) 11:07:50.54ID:HpMDoHHU
get-helpでヘルプを表示させる
コメントベースのヘルプを記述する
param()を使わない
という条件だったら単純にスクリプトの先頭にコメントベースで
.SYNOPSIS または .DESCRIPTION に「-iが複数使える」旨を書けばいいのでは
もしくは
param()を使わず$Argsを自前で解釈しなきゃいけないので
引数の解釈を構築するついでに
$Args.Countがゼロもしくは -help -h -? /h /?
あたりの引数で独自のヘルプを表示させちゃうとか
まぁ普通に考えたらこうならね?
コメントベースのヘルプを記述する
param()を使わない
という条件だったら単純にスクリプトの先頭にコメントベースで
.SYNOPSIS または .DESCRIPTION に「-iが複数使える」旨を書けばいいのでは
もしくは
param()を使わず$Argsを自前で解釈しなきゃいけないので
引数の解釈を構築するついでに
$Args.Countがゼロもしくは -help -h -? /h /?
あたりの引数で独自のヘルプを表示させちゃうとか
まぁ普通に考えたらこうならね?
81デフォルトの名無しさん
2023/12/29(金) 15:57:16.18ID:SsN2lKB9 質問して答えにキレ散らかすキチゲエきてるねw
2023/12/29(金) 17:50:55.94ID:6zkU+tYe
>>73 がコントすぎてさすがに擁護できない
2023/12/30(土) 20:28:29.74ID:pfiAiXAK
XMLヘルプファイル用意して参照させればParam()のないfunctionに対し「構文」部分を書ける。
2023/12/30(土) 21:23:05.61ID:pfiAiXAK
PowerShell標準から外れた「引数に -i を複数回指定」みたいな内容を書けるかは知らん。
85デフォルトの名無しさん
2023/12/31(日) 16:06:42.19ID:gGg0M1TZ 国内公式からLenovoのノートPC買ったら何故かISEが英語環境になって意味わからん。
どこに言語設定あるの?当然OSは日本語設定にしてるし、他のアプリも日本語になってる。
これまでLenovoのPCは5台くらい買ってきたのにISEだけ英語になるの初めてなんだが。
https://i.imgur.com/H4NVkKH.png
どこに言語設定あるの?当然OSは日本語設定にしてるし、他のアプリも日本語になってる。
これまでLenovoのPCは5台くらい買ってきたのにISEだけ英語になるの初めてなんだが。
https://i.imgur.com/H4NVkKH.png
2023/12/31(日) 17:55:15.89ID:s/6k3+Yx
そういうのsurfaceでもあったな
OSセットアップ時の国設定が半端に適用された状態だから入れ直した方が早いかも
OSセットアップ時の国設定が半端に適用された状態だから入れ直した方が早いかも
87デフォルトの名無しさん
2024/01/01(月) 01:36:45.15ID:/rCM9JK/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/
勝手にアプリをインストールできない環境なら意味あるかもしれない
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もこれくらいシンプルになってくれんかな
VSCodeもこれくらいシンプルになってくれんかな
2024/01/02(火) 12:49:42.78ID:ztgjURNX
カスタマイズしてシンプルにすればいいと思うよ
俺はどちらかというとVSCodeのほうが機能美を感じる
デフォルトで万人の感性にフィットするモノは存在しない
カスタマイズも嫌なら自分で作るか作らせるか
俺はどちらかというとVSCodeのほうが機能美を感じる
デフォルトで万人の感性にフィットするモノは存在しない
カスタマイズも嫌なら自分で作るか作らせるか
91デフォルトの名無しさん
2024/01/02(火) 20:24:20.63ID:G9bvfkvl >>88
ヤベーもの見てるんだなw
ヤベーもの見てるんだなw
2024/01/15(月) 23:56:13.49ID:0fJNPgiU
Class C { $a = '失敗' }
function f { Param([ref]$r); $r.Value = '成功' }
$o = [C]::new()
f ([ref]$o.a)
$o.a
$t = '失敗'
f ([ref]$t)
$t
こんなの聞いてないよ
function f { Param([ref]$r); $r.Value = '成功' }
$o = [C]::new()
f ([ref]$o.a)
$o.a
$t = '失敗'
f ([ref]$t)
$t
こんなの聞いてないよ
2024/01/16(火) 12:08:02.87ID:YM90ubox
何が言いたいのかわからないw
コードを実行した結果が書かれてないので
何を言いたいのか知るにはこのコードを実行しなきゃならない
めんどくさいw
コードを実行した結果が書かれてないので
何を言いたいのか知るにはこのコードを実行しなきゃならない
めんどくさいw
2024/01/16(火) 18:55:49.27ID:6T/+PhGk
プロパティがgetterだから
2024/01/17(水) 09:27:27.73ID:HArby8R7
$o | Get-Member を実行してみれば分かるけど$o.aはフィールドじゃなくてプロパティだからな
$o.aのgetter( $o.get_a() )の戻り値を関数に渡しても$o.aの値は変わらない
$o.aのgetter( $o.get_a() )の戻り値を関数に渡しても$o.aの値は変わらない
2024/02/11(日) 23:33:57.66ID:Z05z2D4x
パワーシェルすげえな
仕事がどんどん片付いていくよ
仕事がどんどん片付いていくよ
2024/02/27(火) 14:14:12.56ID:JyRut9xW
2つのCSV(どちらも同じヘッダー)で両方に一致するデータ行があった場合にその行を2つのCSVから取り除きたいんだけどどうしたらいいの?
ヘッダーがDate,Shop,Sales だとしてユニークな項目がなく全く同じデータが1つ目のCSVに1行、2つ目のCSVに2行あった場合に2つ目のCSVは1行だけ消したい
Where-object だと2行とも消えちゃう
ヘッダーがDate,Shop,Sales だとしてユニークな項目がなく全く同じデータが1つ目のCSVに1行、2つ目のCSVに2行あった場合に2つ目のCSVは1行だけ消したい
Where-object だと2行とも消えちゃう
2024/02/27(火) 18:46:20.00ID:hxHkafQb
2つのCSVをどうやってwhere-objectに渡してんだよ
その2行が消える間抜けコード晒してみなよ
その2行が消える間抜けコード晒してみなよ
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
$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
$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}
$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
$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ファイルに想定外のデータがあることを考慮しないのか
レスを投稿する
ニュース
- 【外交】元台湾総統・馬英九氏、高市首相発言に「台湾を危険にさらす」台湾海峡の問題は「両岸の中国人が自ら話し合うべき」★2 [1ゲットロボ★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★8 [ぐれ★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 [おっさん友の会★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★5 [BFU★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 【高市売り】円安、止まらず!凄い勢いで暴落中。157円へ [219241683]
- (´ん`)「公明党、お前だったのか。自民党から国民を守ってくれていたのは...」 [603416639]
- 1,000万円のBMWに擦ってしまった札幌のガキ、捕らえられてガチで詰む [329329848]
- 格安風俗行ってきた
- 【悲報】ヤフコメ民「中国が水産物を輸入禁止にするなら、日本国民向けに安く販売すればいい。中国依存から脱するべき」 [153736977]
- SNKの悪役はギース、ルガール、山崎と魅力的なのが多いよね
