前スレ
PowerShell -Part 4
https://mevius.5ch.net/test/read.cgi/tech/1577862511/
次スレは>>980が立ててね!!
探検
PowerShell -Part 5
■ このスレッドは過去ログ倉庫に格納されています
2021/03/18(木) 00:29:52.04ID:/MpReTiX
224デフォルトの名無しさん
2021/04/27(火) 20:51:05.42ID:P9G7ihch >>220
リテラルではカンマで渡してるから配列にしないとダメみたいね
test.txtの内容:
*.jpg,*.png
$r = gc test.txt
gci パス\* -Include ($r -split ",")
パスがカレントフォルダなら
gci ($r -split ",")
または
gci .\* -Include ($r -split ",")
または
gci * -Include ($r -split ",")
リテラルではカンマで渡してるから配列にしないとダメみたいね
test.txtの内容:
*.jpg,*.png
$r = gc test.txt
gci パス\* -Include ($r -split ",")
パスがカレントフォルダなら
gci ($r -split ",")
または
gci .\* -Include ($r -split ",")
または
gci * -Include ($r -split ",")
225デフォルトの名無しさん
2021/04/28(水) 09:11:25.07ID:BmPpt58I なんかテキストベースの志向してる人多くない?
テキストベースのデータは最低限配列化して扱うもんじゃないの?
テキストベースのデータは最低限配列化して扱うもんじゃないの?
226デフォルトの名無しさん
2021/04/28(水) 10:37:10.61ID:mkVGlKi3 PowerShellで配列を明示的に使うのはダサいしハマりやすいよ
パイプに任せた方がいい
パイプに任せた方がいい
227デフォルトの名無しさん
2021/04/28(水) 11:05:06.60ID:DwQIIr/C 他のシェルではテキストベースが普通というかむしろpwshが異端だしなぁ
手段を選ばなけりゃpwshでもInvoke-Expression使えるし
手段を選ばなけりゃpwshでもInvoke-Expression使えるし
228デフォルトの名無しさん
2021/04/28(水) 15:44:13.18ID:6n3amPUA229デフォルトの名無しさん
2021/04/29(木) 12:08:07.23ID:1cDcYESD 略称としてはpwshが今公式に推されている?
しかしposh呼びしているMSドキュメントも多い
拡張子的にはps
pshとか収まり良いけど既にあったりして紛らわしい系?
しかしposh呼びしているMSドキュメントも多い
拡張子的にはps
pshとか収まり良いけど既にあったりして紛らわしい系?
230デフォルトの名無しさん
2021/04/29(木) 12:47:36.17ID:Gvkp+FCp 推すとかじゃなくPowerShell6から実行ファイル名がpwshになった
コマンドとしてpwshが正式名称
コマンドとしてpwshが正式名称
231デフォルトの名無しさん
2021/04/29(木) 12:58:06.09ID:h5Kbt4/j pwshへのリネームはとんでもない破壊的変更なわけだけど、今後どうするんだろうね
powershellをpwshのエイリアスにしたらそれこそ阿鼻叫喚だろうからそれもなさそう
5は凍結して、そのうちWindowsにデフォルトでは入らなくてオプションで入れるようになるんだろうか
powershellをpwshのエイリアスにしたらそれこそ阿鼻叫喚だろうからそれもなさそう
5は凍結して、そのうちWindowsにデフォルトでは入らなくてオプションで入れるようになるんだろうか
232デフォルトの名無しさん
2021/04/29(木) 13:49:20.18ID:zjFXGfaT 実行ファイルの名前以前にwindows由来のモジュールが分離されてインポート必須になってるから、移行するんであればスクリプトの修正は必須ですね
233デフォルトの名無しさん
2021/04/29(木) 16:15:10.36ID:BF1GEXOZ 複数バージョンの同居認めてるからその辺は問題にならないと思う
つーかログオンスクリプトで既にガンガン使ってるから5が標準で消えたら死ぬ
つーかログオンスクリプトで既にガンガン使ってるから5が標準で消えたら死ぬ
234デフォルトの名無しさん
2021/04/29(木) 16:25:44.14ID:1cDcYESD 6はapt経由で7-preview入れたら塗りつぶされたけど、大体互換だからかな?
とりあえず俺は問題起きてないしよしとしよう
とりあえず俺は問題起きてないしよしとしよう
235デフォルトの名無しさん
2021/04/29(木) 16:35:06.74ID:LBeD0nWX 当面はIEとEdgeみたいに行くんじゃないかな
236デフォルトの名無しさん
2021/04/29(木) 21:07:38.49ID:XqZ5GoqI やっぱ、バッチだろ?
237デフォルトの名無しさん
2021/04/29(木) 21:34:01.87ID:tWFzcYm5 自分のスクリプト用はPowershell7
社内スクリプトやらはWindows Powershell(5系)
MSは互換性維持の為に古いものを限界まで残す所だから当面問題は無いと思う
ただPowershell7系はそろそろ安定して快適だしWindows標準で入れてくれて良いと思う
社内スクリプトやらはWindows Powershell(5系)
MSは互換性維持の為に古いものを限界まで残す所だから当面問題は無いと思う
ただPowershell7系はそろそろ安定して快適だしWindows標準で入れてくれて良いと思う
238デフォルトの名無しさん
2021/04/29(木) 23:43:33.70ID:BF1GEXOZ 7ってWindows7でも動くんだな
239デフォルトの名無しさん
2021/04/30(金) 02:48:31.39ID:YlfW6qtC 6→7では||とか&&とか?:とか演算子かなり増えたと思ったけど
6で実行すると将来の拡張に予約的なメッセージが出たはず
後方互換性はちゃっかり確保してるのね
6で実行すると将来の拡張に予約的なメッセージが出たはず
後方互換性はちゃっかり確保してるのね
240デフォルトの名無しさん
2021/04/30(金) 03:23:30.90ID:YlfW6qtC >>238
バックエンドの.NETが提供される限り、言語の部分に関してプラットフォームは関係ないからね
(俺は7持ってないから確認は出来ないが)
シス管機能に関わるプロバイダの部分は、VistaくらいからCim規格準拠(WMIとして)に力入れてるので、それも寄与してるかと
まだ公式リリースされてないが、 linuxでは特にUbuntuもCim準拠に力入れてる
近いうちにpwshのプラットフォーム間相互運用性の確保(pwshコードベースのメンテコスト)はかなり楽になるだろう
今はまだ統一的に見えるユーザーエクスペリエンスは、対応するAPIを繋ぎ合わせたアドホック実装されてる
アドホック実装が減ればコードベースが削減されるわけで、伝統シェルに劣るとされるファイルサイズデカい問題も解消されると期待している
バックエンドの.NETが提供される限り、言語の部分に関してプラットフォームは関係ないからね
(俺は7持ってないから確認は出来ないが)
シス管機能に関わるプロバイダの部分は、VistaくらいからCim規格準拠(WMIとして)に力入れてるので、それも寄与してるかと
まだ公式リリースされてないが、 linuxでは特にUbuntuもCim準拠に力入れてる
近いうちにpwshのプラットフォーム間相互運用性の確保(pwshコードベースのメンテコスト)はかなり楽になるだろう
今はまだ統一的に見えるユーザーエクスペリエンスは、対応するAPIを繋ぎ合わせたアドホック実装されてる
アドホック実装が減ればコードベースが削減されるわけで、伝統シェルに劣るとされるファイルサイズデカい問題も解消されると期待している
241デフォルトの名無しさん
2021/04/30(金) 04:34:13.88ID:wKh1zPtl >>229
そこらの経緯はこの記事にまとまってるよ
PowerShell 6.0からPowerShellのプログラム名がpwshに変わります
https://blog.shibata.tech/entry/2017/10/19/073001
元々、略称はposh呼びが多かったみたい(容易に発音可能だし)
pshはPerl Shellと被るので避けたそうだ
そこらの経緯はこの記事にまとまってるよ
PowerShell 6.0からPowerShellのプログラム名がpwshに変わります
https://blog.shibata.tech/entry/2017/10/19/073001
元々、略称はposh呼びが多かったみたい(容易に発音可能だし)
pshはPerl Shellと被るので避けたそうだ
242デフォルトの名無しさん
2021/04/30(金) 04:37:38.21ID:wKh1zPtl マルチプラットフォーム化の為に作り替えて、
違う系統であることが明確になるよう、名前も変えてたね
(.NETと同じく過渡的な措置だったのだろうけど)
Windows PowerShell(5系以前) → PowerShell Core(6系) → PowerShell(7系以降)
違う系統であることが明確になるよう、名前も変えてたね
(.NETと同じく過渡的な措置だったのだろうけど)
Windows PowerShell(5系以前) → PowerShell Core(6系) → PowerShell(7系以降)
243デフォルトの名無しさん
2021/04/30(金) 09:49:22.19ID:jI6ILm2+ PowerShell core(6系)の時はWindowsの内部操作系(IP確認やら)はホントまともに動かなかった
それがPowerShell7になったら殆ど動く様になった時は感動したわ、Out-GridViewも復活したし
それがPowerShell7になったら殆ど動く様になった時は感動したわ、Out-GridViewも復活したし
244デフォルトの名無しさん
2021/04/30(金) 11:12:11.62ID:vAph35tm 略称を作る時に母音を飛ばすのは普通なので、poshよりはpwshの方がまとも
posh1が上品とかの意味を持つ既存の英単語だから、わざとそう呼んだ
posh2として軽蔑する時に発する音、という意味もあるのでなおさら
posh1が上品とかの意味を持つ既存の英単語だから、わざとそう呼んだ
posh2として軽蔑する時に発する音、という意味もあるのでなおさら
245デフォルトの名無しさん
2021/04/30(金) 11:38:19.70ID:wi8S/EBa >>243
言語の移植はそれほど難しくないけど環境依存のコードを含むコマンドレットとかは地道にやるしかないからIP確認とかが遅れるのはしゃーない
言語の移植はそれほど難しくないけど環境依存のコードを含むコマンドレットとかは地道にやるしかないからIP確認とかが遅れるのはしゃーない
246デフォルトの名無しさん
2021/04/30(金) 15:57:16.65ID:YlfW6qtC 名前にdefine使って、偶然7時点で将来に予約メッセージを受けた
まあこんな一般的な単語をユーザーが使うべきではないというのは置いといて…
まあこんな一般的な単語をユーザーが使うべきではないというのは置いといて…
247デフォルトの名無しさん
2021/04/30(金) 18:32:28.97ID:EP14bd4r わりと1の時点から将来的に使いそうなのは予約語に入ってたよ、classとか
248デフォルトの名無しさん
2021/04/30(金) 21:39:12.47ID:YlfW6qtC249デフォルトの名無しさん
2021/04/30(金) 21:42:27.17ID:YlfW6qtC 標準はちょっとverboseすぎるから、共通パラメータやメンバを無視して表示くらいの設定はしておきたい
250デフォルトの名無しさん
2021/04/30(金) 23:05:03.03ID:HzZKeJse GetTypeとか存在すると分かりきってて、定義も自明なのはする必要ないね
高度なメタプログラミングしてたら別だけれども
高度なメタプログラミングしてたら別だけれども
251デフォルトの名無しさん
2021/05/13(木) 00:10:17.01ID:JmJXN960 PowerShell7のGet-ClipboardにFormatパラメータ的なものないの?
PowerShell5ではそれを指定してクリップボード内の画像だったりを取得できたと思うが
PowerShell5ではそれを指定してクリップボード内の画像だったりを取得できたと思うが
252デフォルトの名無しさん
2021/05/13(木) 08:30:28.50ID:D1RFiq2C253デフォルトの名無しさん
2021/05/13(木) 08:47:27.44ID:GPaJZvxF >>251
クロスプラットフォーム化でテキスト以外のサポートはなくなった
画像とか取得したければ、面倒だけど自前でSystem.Windows.Forms.Clipboard使ってやるしかないね
こういうやつ↓
https://qiita.com/saggie/items/44cb8b317fe0effa5891
クロスプラットフォーム化でテキスト以外のサポートはなくなった
画像とか取得したければ、面倒だけど自前でSystem.Windows.Forms.Clipboard使ってやるしかないね
こういうやつ↓
https://qiita.com/saggie/items/44cb8b317fe0effa5891
254デフォルトの名無しさん
2021/05/13(木) 13:12:28.84ID:RarJcXhy255デフォルトの名無しさん
2021/05/13(木) 20:36:41.84ID:6FdqfrSd256デフォルトの名無しさん
2021/05/13(木) 22:30:23.52ID:gFpazqk/ マチルプラットフォーム化すると各プラットフォームの最小公倍数の機能になっちゃうからね
257デフォルトの名無しさん
2021/05/13(木) 23:15:59.38ID:QRC6YBG4 なら高機能化しているな
258デフォルトの名無しさん
2021/05/14(金) 19:43:20.62ID:0BboAQlT Windows PowerShellとか処理は遅いし使えない機能は多いわ文字コードはSJISがデフォルトだったりとか仕様も古くて微妙だしな
一部機能は使えなくてもPowerShell7はかなり進化してるわ
一部機能は使えなくてもPowerShell7はかなり進化してるわ
259デフォルトの名無しさん
2021/05/14(金) 20:03:04.00ID:SDgEiaJx それでもWindows PowerShellが好き
260デフォルトの名無しさん
2021/05/19(水) 03:38:40.25ID:ZyjXFBY0 winのクリップボードはやけに高機能だよな
田+vで履歴、それを再編集、ピン留め等
gui環境ならコマンドヒストリの代わりにもなる、というかより便利
rtfはターミナル民的には興味ないけど、pwsh がコマンドライン上でサポートしなくても、ターミナルアプリの設定あたりで補えるのでは
(wtの設定にはある)
田+vで履歴、それを再編集、ピン留め等
gui環境ならコマンドヒストリの代わりにもなる、というかより便利
rtfはターミナル民的には興味ないけど、pwsh がコマンドライン上でサポートしなくても、ターミナルアプリの設定あたりで補えるのでは
(wtの設定にはある)
261デフォルトの名無しさん
2021/05/19(水) 03:42:31.56ID:ZyjXFBY0 プレーンテキストといえど、所詮リッチテキストはマークアップされたプレーンテキストなのだから、適当にエスケープするように*-clipboard cmdletsをラップしてしまえば良いのでは
思い付きなんで上手くいくかはわからんが
思い付きなんで上手くいくかはわからんが
262デフォルトの名無しさん
2021/05/24(月) 18:38:56.02ID:BIWUkQ+d TCP IPをPowerShellでさわったことある人いたらクライアントで受信する方法について教えてほしい
何から手を付けたらいいかわからん
何から手を付けたらいいかわからん
263デフォルトの名無しさん
2021/05/24(月) 18:53:53.78ID:cJIXfLgE >>262
まずは何をしたいのか書くところからかな
TCP/IP上に独自プロコトルでデータやり取りしたいとか言うならPowerShellよりC#とかの方が楽かもしれないからPowerShellでやりたい理由も書いてくれるといいかも
まずは何をしたいのか書くところからかな
TCP/IP上に独自プロコトルでデータやり取りしたいとか言うならPowerShellよりC#とかの方が楽かもしれないからPowerShellでやりたい理由も書いてくれるといいかも
264デフォルトの名無しさん
2021/05/24(月) 19:40:52.20ID:CXmqjMeO Powershellでやる場合はC#と同じく.NET FrameworkのSystem.Net.Socketsを使うことになるだろうから
他の言語でのやり方を知ってるなら下ののC#(.NET)の箇所を参考にすればいいのでは
https://www.ne.jp/asahi/hishidama/home/tech/lang/socket.html
他の言語でのやり方を知ってるなら下ののC#(.NET)の箇所を参考にすればいいのでは
https://www.ne.jp/asahi/hishidama/home/tech/lang/socket.html
265デフォルトの名無しさん
2021/05/24(月) 20:40:25.85ID:ux+C+2yc まずは、やりたい事を説明出来るレベルにまではなってからじゃないと無理ゲーじゃね?
266デフォルトの名無しさん
2021/05/24(月) 20:41:05.87ID:ux+C+2yc ワシの日本語なんか変だな。
人の事言えんかったわw
人の事言えんかったわw
267デフォルトの名無しさん
2021/05/24(月) 20:48:57.94ID:w2G2xBi9 今帰宅した262です。
>>263
やりたいことは限りなくデフォルトのwindowsで動くTCP IPのクライアントを作ること。
お客さんに納品する機械がTCP IPでしか操作できないらしいので出来るだけ環境構築やインストール作業の必要ないクライアントを作る必要があったからなんだ。
>>264のレス見たらなんとなくわかった気がする。今の問題としては、適当に作ったサーバーに送信したものを返させてテストしてるけど数字しか帰ってこなくて困っていた。
とりま今あるスクリプト晒します。
$socket = New-Object System.Net.Sockets.TcpClient("127.0.0.1",40001)
$stream = $socket.GetStream()
$reader = New-Object System.IO.StreamReader($stream)
$writer = New-Object System.IO.StreamWriter($stream)
$writer.AutoFlush = $TRUE
$buffer = New-Object System.Byte[] 1024
while ($TRUE) {
$data = Read-Host("command?>>> ")
if ($data -eq "q") {
break
}elseif ($data) {
$writer.WriteLine($data) | Out-Null
$rawresponse = $reader.Read($buffer,0,1024)
Write-Output $rawresponse.GetType()
$response = [System.Text.Encoding]::Default.GetString($rawresponse)
Write-Output $response
}
}
$socket.Close()
>>263
やりたいことは限りなくデフォルトのwindowsで動くTCP IPのクライアントを作ること。
お客さんに納品する機械がTCP IPでしか操作できないらしいので出来るだけ環境構築やインストール作業の必要ないクライアントを作る必要があったからなんだ。
>>264のレス見たらなんとなくわかった気がする。今の問題としては、適当に作ったサーバーに送信したものを返させてテストしてるけど数字しか帰ってこなくて困っていた。
とりま今あるスクリプト晒します。
$socket = New-Object System.Net.Sockets.TcpClient("127.0.0.1",40001)
$stream = $socket.GetStream()
$reader = New-Object System.IO.StreamReader($stream)
$writer = New-Object System.IO.StreamWriter($stream)
$writer.AutoFlush = $TRUE
$buffer = New-Object System.Byte[] 1024
while ($TRUE) {
$data = Read-Host("command?>>> ")
if ($data -eq "q") {
break
}elseif ($data) {
$writer.WriteLine($data) | Out-Null
$rawresponse = $reader.Read($buffer,0,1024)
Write-Output $rawresponse.GetType()
$response = [System.Text.Encoding]::Default.GetString($rawresponse)
Write-Output $response
}
}
$socket.Close()
268デフォルトの名無しさん
2021/05/24(月) 21:18:25.42ID:cJIXfLgE >>267
> 数字しか帰ってこなくて困っていた。
> $rawresponse = $reader.Read($buffer,0,1024)
そりゃReadメソッドの戻り値は数値(読み取った文字数)だから当たり前かと
PowerShell は文字列と数値を適宜変換しちゃったりするからC#やC++が使えるならそっちの方がデバッグが楽だと思う
> 数字しか帰ってこなくて困っていた。
> $rawresponse = $reader.Read($buffer,0,1024)
そりゃReadメソッドの戻り値は数値(読み取った文字数)だから当たり前かと
PowerShell は文字列と数値を適宜変換しちゃったりするからC#やC++が使えるならそっちの方がデバッグが楽だと思う
269デフォルトの名無しさん
2021/05/24(月) 21:35:34.82ID:w2G2xBi9270デフォルトの名無しさん
2021/05/24(月) 22:01:00.03ID:uBa1LY8b Ruby on Rails のテストでは、
HTTP のREST API なら、curl, Postman。
VSCode の拡張機能なら、REST Client, Thunder Client
REST Client では、コマンドパレットのGenerate Code Snippet で、
Ruby, PowerShell など、各言語のコードに変換してくれる!
TCP と言うのは、あまりに原始的過ぎて、よく分からない。
curlで出来るかも知れない
新し目のWindows 10 には、curl.exe も入った。
コマンドプロンプトで、where curl と入力すると、
C:\Windows\System32\curl.exe
なお、PowerShell内でcurlを使うのには注意が必要。
デフォルトで「Invoke-WebRequest」コマンドのエイリアスとして、curlが設定されている。
このため、PowerShell内でcurlコマンドを使うには、
フルパスを指定するか、curl.exeと指定する必要がある
Linux のcurlと区別するため、
漏れは、Invoke-WebRequest は、curlモドキ・なんちゃってcurlなどと呼んでいる
HTTP のREST API なら、curl, Postman。
VSCode の拡張機能なら、REST Client, Thunder Client
REST Client では、コマンドパレットのGenerate Code Snippet で、
Ruby, PowerShell など、各言語のコードに変換してくれる!
TCP と言うのは、あまりに原始的過ぎて、よく分からない。
curlで出来るかも知れない
新し目のWindows 10 には、curl.exe も入った。
コマンドプロンプトで、where curl と入力すると、
C:\Windows\System32\curl.exe
なお、PowerShell内でcurlを使うのには注意が必要。
デフォルトで「Invoke-WebRequest」コマンドのエイリアスとして、curlが設定されている。
このため、PowerShell内でcurlコマンドを使うには、
フルパスを指定するか、curl.exeと指定する必要がある
Linux のcurlと区別するため、
漏れは、Invoke-WebRequest は、curlモドキ・なんちゃってcurlなどと呼んでいる
271デフォルトの名無しさん
2021/05/24(月) 22:03:00.09ID:CXmqjMeO C#で書いてAdd-Typeで貼り付ければpowershellとして納品できるよ
下手にC#のコードをpowershellで書き直してもややこしくなるだけと俺は思う
C#のusingとか便利な機能はpowershellじゃ使えないし
下手にC#のコードをpowershellで書き直してもややこしくなるだけと俺は思う
C#のusingとか便利な機能はpowershellじゃ使えないし
272デフォルトの名無しさん
2021/05/24(月) 22:06:04.28ID:JeDrA5YU273270
2021/05/24(月) 22:12:06.08ID:uBa1LY8b 例えば、HTTP のREST API で、VSCode の拡張機能・REST Client で、
コマンドパレットのGenerate Code Snippet から、
PowerShell のInvoke-WebRequest に変換すると、
POST http://localhost:8888/ HTTP/1.1
content-type: application/json
[[0,0],[10,20],[10,10]]
変換後は、
$headers=@{}
$headers.Add("user-agent", "vscode-restclient")
$headers.Add("content-type", "application/json")
$response = Invoke-WebRequest -Uri 'http://localhost:8888/'
-Method POST -Headers $headers -ContentType 'application/json'
-Body '[[0,0],[10,20],[10,10]]'
コマンドパレットのGenerate Code Snippet から、
PowerShell のInvoke-WebRequest に変換すると、
POST http://localhost:8888/ HTTP/1.1
content-type: application/json
[[0,0],[10,20],[10,10]]
変換後は、
$headers=@{}
$headers.Add("user-agent", "vscode-restclient")
$headers.Add("content-type", "application/json")
$response = Invoke-WebRequest -Uri 'http://localhost:8888/'
-Method POST -Headers $headers -ContentType 'application/json'
-Body '[[0,0],[10,20],[10,10]]'
274デフォルトの名無しさん
2021/05/24(月) 22:44:21.48ID:w2G2xBi9275デフォルトの名無しさん
2021/05/25(火) 00:37:08.72ID:BrdQ0eWW 俺ならGo使うかな
276デフォルトの名無しさん
2021/05/25(火) 01:23:28.04ID:HjVIkAeM >>274
rawresponseじゃなくてbufferをencodingしてあげればいいところまでできてるんだから、このままpowershellでいいんでない?
rawresponseじゃなくてbufferをencodingしてあげればいいところまでできてるんだから、このままpowershellでいいんでない?
277デフォルトの名無しさん
2021/05/25(火) 08:42:47.61ID:ENuLboQX278デフォルトの名無しさん
2021/05/25(火) 09:15:13.27ID:aFPnVfgm readlineしたら解決しました。CUIだめって言われたらC#に手を出そうと思いますありがとうございました
279デフォルトの名無しさん
2021/05/26(水) 22:31:01.46ID:MX2vxe2/ xargs -I @に変わるものって何かあります?
280デフォルトの名無しさん
2021/05/26(水) 23:15:56.00ID:MX2vxe2/ 自己解決しました
$_にすでに代入されてました
$_にすでに代入されてました
281デフォルトの名無しさん
2021/05/31(月) 00:53:31.89ID:jC76eDpN サーバーのログファイルが24時越えの時刻形式で出力してくるんだけど
これをDateTime型に変換するもっとスマートな方法ありませんか?
$Date = "20210531285930"
# 24時超えなのでDateTime型に変換できない
[DateTime]::ParseExact($Date,"yyyyMMddHHmmss",$null)
# HH部分を-24でDateTime型に変換してからAddDays
[DateTime]::ParseExact(($Date.Insert(8,"{0:D2}" -f ($Date.Substring(8,2) -24))).Remove(10,2),"yyyyMMddHHmmss",$null).AddDays(1)
# 各部を切り出して-24でDateTime型に変換してからAddDays
([DateTime]($Date.SubString(0,4) + "/" + $Date.SubString(4,2) + "/" + $Date.SubString(6,2) + " {0:D2}" -f ($Date.SubString(8,2) -24) + ":" + $Date.SubString(10,2))).AddDays(1)
これをDateTime型に変換するもっとスマートな方法ありませんか?
$Date = "20210531285930"
# 24時超えなのでDateTime型に変換できない
[DateTime]::ParseExact($Date,"yyyyMMddHHmmss",$null)
# HH部分を-24でDateTime型に変換してからAddDays
[DateTime]::ParseExact(($Date.Insert(8,"{0:D2}" -f ($Date.Substring(8,2) -24))).Remove(10,2),"yyyyMMddHHmmss",$null).AddDays(1)
# 各部を切り出して-24でDateTime型に変換してからAddDays
([DateTime]($Date.SubString(0,4) + "/" + $Date.SubString(4,2) + "/" + $Date.SubString(6,2) + " {0:D2}" -f ($Date.SubString(8,2) -24) + ":" + $Date.SubString(10,2))).AddDays(1)
282デフォルトの名無しさん
2021/05/31(月) 00:57:08.36ID:jC76eDpN 一番下のやつ秒2桁が抜けてた・・
283デフォルトの名無しさん
2021/05/31(月) 04:45:30.44ID:c+QWTXgx ごく普通のやり方しか思いつかんかった
if ('20210531285931' -match '(\d{8})(\d\d)(\d\d)(\d\d)') {
$date = [datetime]::ParseExact($Matches[1],'yyyyMMdd', $null)
$h = $null
$date = $date.AddDays([math]::DivRem($Matches[2], 24, [ref]$h))
$date += [TimeSpan]::new($h, $Matches[3], $Matches[4])
$date.ToString('yyyyMMddhhmmss')
}
if ('20210531285931' -match '(\d{8})(\d\d)(\d\d)(\d\d)') {
$date = [datetime]::ParseExact($Matches[1],'yyyyMMdd', $null)
$h = $null
$date = $date.AddDays([math]::DivRem($Matches[2], 24, [ref]$h))
$date += [TimeSpan]::new($h, $Matches[3], $Matches[4])
$date.ToString('yyyyMMddhhmmss')
}
284デフォルトの名無しさん
2021/05/31(月) 07:24:21.11ID:M6x27Cpl >>281
24からいくつまで考慮すればいいですか?
24からいくつまで考慮すればいいですか?
285デフォルトの名無しさん
2021/05/31(月) 09:41:49.56ID:etoumxTf 0〜23時は、そのまま
24〜47時は、24 を引いて、0〜23 にして、1日足す
24〜47時は、24 を引いて、0〜23 にして、1日足す
286デフォルトの名無しさん
2021/05/31(月) 09:54:44.55ID:FG6+Y3f8 Javaだと勝手に繰り上げてむしろ頼んでねーよと思ったけどシェルスクリプトであるPSにはLenientな日付解釈が見当たらないな
ままならないね
ままならないね
287デフォルトの名無しさん
2021/05/31(月) 11:40:17.32ID:96kHy/rj 整数の24で割って割った値を日付に加算、余りを時間にすればいいんじゃね
288デフォルトの名無しさん
2021/05/31(月) 16:07:40.72ID:HhBT8tJD >>287
コード化するとこんな感じスかねぇ
$Date = "20210531285930"
if ($Date -match '(\d{8})(\d\d)(\d{4})') {
[DateTime]::ParseExact(
$matches[1] + "{0:00}" -f ($matches[2] % 24) + $Matches[3],
"yyyyMMddHHmmss",$null).AddDays([Math]::Truncate($matches[2] / 24))
}
結果
2021年6月1日 4:59:30
コード化するとこんな感じスかねぇ
$Date = "20210531285930"
if ($Date -match '(\d{8})(\d\d)(\d{4})') {
[DateTime]::ParseExact(
$matches[1] + "{0:00}" -f ($matches[2] % 24) + $Matches[3],
"yyyyMMddHHmmss",$null).AddDays([Math]::Truncate($matches[2] / 24))
}
結果
2021年6月1日 4:59:30
289デフォルトの名無しさん
2021/05/31(月) 17:54:07.74ID:Ji9/Q1Oe 短くできたw
if ('20210531285930' -match '(¥d{8})(¥d¥d)(¥d¥d)(¥d¥d)') {
$date = [datetime]::ParseExact($Matches[1],'yyyyMMdd', $null)
$date = $date.AddSeconds(3600 * $Matches[2] + 60 * $Matches[3] + $Matches[4])
}
if ('20210531285930' -match '(¥d{8})(¥d¥d)(¥d¥d)(¥d¥d)') {
$date = [datetime]::ParseExact($Matches[1],'yyyyMMdd', $null)
$date = $date.AddSeconds(3600 * $Matches[2] + 60 * $Matches[3] + $Matches[4])
}
291sage
2021/05/31(月) 22:04:33.58ID:u2buNtAx 普通にtimespanを足せば良いのでは
if ('20210531285930' -match '(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)') {
$date = [datetime]::new($Matches[1],$Matches[2],$Matches[3]) + [timespan]::new($Matches[4],$Matches[5],$Matches[6])
}
if ('20210531285930' -match '(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)') {
$date = [datetime]::new($Matches[1],$Matches[2],$Matches[3]) + [timespan]::new($Matches[4],$Matches[5],$Matches[6])
}
292デフォルトの名無しさん
2021/05/31(月) 22:21:34.37ID:Xrj+zWn5 それで良さそう
293デフォルトの名無しさん
2021/05/31(月) 22:56:32.02ID:Jlz0F1qQ なんや?!
みんな天才か〜?
みんな天才か〜?
295デフォルトの名無しさん
2021/06/01(火) 14:33:19.17ID:XU9T32gU うむ。.netのクラスとか俺ほとんど知らんしなw
296デフォルトの名無しさん
2021/06/01(火) 22:23:28.52ID:9NYpA/Ih Powershellって無くなるって本当ですか?
ある人が言うには、マイクロソフトが公式で
「Powershellは無くして、Bashに統合するって言ってるからPowershellなんて使えても意味ないよ」<ほぼ原文
という事らしいです。
@そのものズバリの公式案内って出てますか?
A「xxを拡大解釈して、↑のような話と勘違いしてるのではないか」というのがあったら教えてください。
ある人が言うには、マイクロソフトが公式で
「Powershellは無くして、Bashに統合するって言ってるからPowershellなんて使えても意味ないよ」<ほぼ原文
という事らしいです。
@そのものズバリの公式案内って出てますか?
A「xxを拡大解釈して、↑のような話と勘違いしてるのではないか」というのがあったら教えてください。
297デフォルトの名無しさん
2021/06/01(火) 22:39:23.71ID:4GbGJr6m 無くすとしても10年くらいかかりそう
298デフォルトの名無しさん
2021/06/01(火) 23:08:56.48ID:j5BVtDLr powershell 5.1じゃなくて.Net Coreベースのpowershell 7を学習しようとかじゃなくて、まるっきりbashに置き換わるってなると妄想レベルとしか
299デフォルトの名無しさん
2021/06/01(火) 23:19:45.60ID:zB/DdO2P マイクロソフト公式がそう言ってるならその発言ソースをググって見つければいい
公式→ある人→296→いまここ
なので、しょうもない伝言ゲームだろうね
公式→ある人→296→いまここ
なので、しょうもない伝言ゲームだろうね
300デフォルトの名無しさん
2021/06/02(水) 00:33:14.18ID:eotjJV13 そんな発言があれば間違いなくニュースになってる
301デフォルトの名無しさん
2021/06/02(水) 01:29:05.02ID:bSFCodu+ まあ無くなるかはともかく、pscoreでちょっと怪しくなってきたよね
pscoreが今後Windowsにバンドルされることは恐らくないだろうから、PowerShellはWindowsOSの一部から単なるアプリの一つへとある意味格下げされたわけだ
それについてはMSも公式に明言している(https://docs.microsoft.com/ja-jp/powershell/scripting/powershell-support-lifecycle?view=powershell-7.1)
そしてps5の方は既に完全にメンテナンスモード入りしており、今後の進化は無いし、いずれはWindowsにバンドルされなくなるだろう
PowerShellはWindowsプラットフォームにおいて特別な存在ではなくなりつつあり、bashと同じ土俵に降りるんだよ
pscoreが今後Windowsにバンドルされることは恐らくないだろうから、PowerShellはWindowsOSの一部から単なるアプリの一つへとある意味格下げされたわけだ
それについてはMSも公式に明言している(https://docs.microsoft.com/ja-jp/powershell/scripting/powershell-support-lifecycle?view=powershell-7.1)
そしてps5の方は既に完全にメンテナンスモード入りしており、今後の進化は無いし、いずれはWindowsにバンドルされなくなるだろう
PowerShellはWindowsプラットフォームにおいて特別な存在ではなくなりつつあり、bashと同じ土俵に降りるんだよ
302デフォルトの名無しさん
2021/06/02(水) 01:51:03.87ID:2CEtavTf 正直bash標準はイヤだな
PowerShellと比較して仕様が古臭過ぎる
PowerShellと比較して仕様が古臭過ぎる
303デフォルトの名無しさん
2021/06/02(水) 07:37:21.92ID:GaFo88h4 bashでwindowsの中身いじるのができなかったからpowershell作る必要があった訳で
304デフォルトの名無しさん
2021/06/02(水) 08:00:00.07ID:QekliMfV >>301
.NET 5か6がOSリリースに組み込まれるようになれば一緒に置き換わるでしょ
インタラクティブなシェル機能だけが重要でbashというかreadlineが使いたいなら使えばよいけど、.NETをbashから使える仕組みってできてるんだっけ?
.NET 5か6がOSリリースに組み込まれるようになれば一緒に置き換わるでしょ
インタラクティブなシェル機能だけが重要でbashというかreadlineが使いたいなら使えばよいけど、.NETをbashから使える仕組みってできてるんだっけ?
305デフォルトの名無しさん
2021/06/02(水) 08:48:27.00ID:UfLjqhXv bashとかを置き換えるつもりだと思ってたんだけど…
もうちょい野心持っていいのよ?
wsl使ってるけど$profileとか共有できてすごく便利なんだけど
bashもよく使うが、補完が各コマンドにハードコード対応してる仕組みなので、GNU Readlineが生きてないなと
PSReadline/pwshみたいにユーザースクリプトにParam記述できる仕様じゃないとインタラクティブシェルとして将来性が無いと思う
逆に言えば、コメントに#Param記述して読んで補完くれるbsh系があれば便利ね
コメントなら互換性も問題ないでしょ
もうちょい野心持っていいのよ?
wsl使ってるけど$profileとか共有できてすごく便利なんだけど
bashもよく使うが、補完が各コマンドにハードコード対応してる仕組みなので、GNU Readlineが生きてないなと
PSReadline/pwshみたいにユーザースクリプトにParam記述できる仕様じゃないとインタラクティブシェルとして将来性が無いと思う
逆に言えば、コメントに#Param記述して読んで補完くれるbsh系があれば便利ね
コメントなら互換性も問題ないでしょ
306デフォルトの名無しさん
2021/06/02(水) 08:52:13.04ID:UfLjqhXv wslスレ覗くとpwsh使ってる人結構多いように思える
まあ変なのいっぱい居てアレ過ぎるスレだが、蛇足
まあ変なのいっぱい居てアレ過ぎるスレだが、蛇足
307デフォルトの名無しさん
2021/06/02(水) 09:04:39.46ID:Q9QmX+x6 Windows Subsystem for Linux に関してよく寄せられる質問
https://docs.microsoft.com/ja-jp/windows/wsl/faq#powershell-----------------
PowerShell においてこれは何を意味しますか。
OSS プロジェクトでの作業中、PowerShell プロンプトから Bash を実行すると非常に役立つシナリオが多数あります。
Bash のサポートは補完的なものであり、Windows でのそのコマンド ラインの価値を高め、
PowerShell と PowerShell コミュニティでその他の一般的なテクノロジを利用できるようにします。
詳細については、PowerShell チームのブログ「Windows の Bash:それがすばらしい理由と PowerShell における意味」をお読みください
https://devblogs.microsoft.com/powershell/bash-for-windows-why-its-awesome-and-what-it-means-for-powershell/
https://docs.microsoft.com/ja-jp/windows/wsl/faq#powershell-----------------
PowerShell においてこれは何を意味しますか。
OSS プロジェクトでの作業中、PowerShell プロンプトから Bash を実行すると非常に役立つシナリオが多数あります。
Bash のサポートは補完的なものであり、Windows でのそのコマンド ラインの価値を高め、
PowerShell と PowerShell コミュニティでその他の一般的なテクノロジを利用できるようにします。
詳細については、PowerShell チームのブログ「Windows の Bash:それがすばらしい理由と PowerShell における意味」をお読みください
https://devblogs.microsoft.com/powershell/bash-for-windows-why-its-awesome-and-what-it-means-for-powershell/
308デフォルトの名無しさん
2021/06/02(水) 09:37:33.58ID:F5GxLFUH >>304
.NET5以降がWindowsにバンドルされることはないでしょ
ライフサイクルをWindowsに拘束されたくないから.NET Coreは完全なサイドバイサイドとSCDを実現したのに、そんなことをしたら台無し
.NETを使うならpwshというのはこれからもずっと変わらないだろうし、一貫したコマンドレットの体系でWindowsのサーバー管理ができるという強みもあるけど、後者については案外突然.NET非依存のWindows CLIとか出るかもよ
Azure CLIだってPythonで書かれてるんだし
.NET5以降がWindowsにバンドルされることはないでしょ
ライフサイクルをWindowsに拘束されたくないから.NET Coreは完全なサイドバイサイドとSCDを実現したのに、そんなことをしたら台無し
.NETを使うならpwshというのはこれからもずっと変わらないだろうし、一貫したコマンドレットの体系でWindowsのサーバー管理ができるという強みもあるけど、後者については案外突然.NET非依存のWindows CLIとか出るかもよ
Azure CLIだってPythonで書かれてるんだし
309デフォルトの名無しさん
2021/06/02(水) 09:53:48.83ID:IMALmVrS それもしかして、WSHというヤツでは?
まあ好きでもないし新しいのに置き換えてくれるのは歓迎だよ
$wsh = new-object -com w/cscript.shell
みたいにしてたまにメソッドこねこねするけど、COMオブジェクトのインターフェイス備えるなら今まで通り叩けるんじゃない
まあ好きでもないし新しいのに置き換えてくれるのは歓迎だよ
$wsh = new-object -com w/cscript.shell
みたいにしてたまにメソッドこねこねするけど、COMオブジェクトのインターフェイス備えるなら今まで通り叩けるんじゃない
310デフォルトの名無しさん
2021/06/02(水) 11:02:38.88ID:CFdyIdLe C#越しとかでローレベルAPI叩けたり大丈夫かこれって思ってたらやっぱ消えるのか・・・
311デフォルトの名無しさん
2021/06/02(水) 11:07:50.97ID:E0Lr8asm >>310
消えないよ
消えないよ
312デフォルトの名無しさん
2021/06/02(水) 11:15:29.60ID:UfLjqhXv .net coreの実装はいっぱいあるからバックエンドは心配ないんじゃない?
MS推奨の.net core, asp core, 使ったことないがMSから少し離れてもmonoとか他にも
.net core(linux)は50MBくらいにまとまってたかと
MS推奨の.net core, asp core, 使ったことないがMSから少し離れてもmonoとか他にも
.net core(linux)は50MBくらいにまとまってたかと
313デフォルトの名無しさん
2021/06/02(水) 11:35:59.36ID:UfLjqhXv >>308
winへの巨大なpythonランタイムのバンドルが許されるんなら、.net coreもバンドルしていいんじゃないかな(並存で)
.net coreはpythonライブラリとしても便利だし、今時数百MBくらいケチらないで両方入れて欲しい
スマホにすら.net core以上相当のXamarinやmono入ってるだろ(多分ストアから依存経由で)
winへの巨大なpythonランタイムのバンドルが許されるんなら、.net coreもバンドルしていいんじゃないかな(並存で)
.net coreはpythonライブラリとしても便利だし、今時数百MBくらいケチらないで両方入れて欲しい
スマホにすら.net core以上相当のXamarinやmono入ってるだろ(多分ストアから依存経由で)
314デフォルトの名無しさん
2021/06/02(水) 12:14:47.64ID:F5GxLFUH >>313
WindowsにバンドルされてしまうとMSはそれをWindowsの一部としてサポートしなければならなくなり、.NETのモダンライフサイクルポリシーと矛盾する
また、Windowsにバンドルされているバージョン以外はほとんど利用されなくなり、プラットフォームの進化が停滞する
もしpwshをWindowsにバンドルするならSCDにして.NETのライフサイクルから分離してしまうしかないだろうけど、
それはそれで.NETランタイムのバージョンがpwshにバンドルされているものに拘束されることになり、pwshエコシステムの外にある.NET資産との連携がしづらくなるだろうから難しいところだな
WindowsにバンドルされてしまうとMSはそれをWindowsの一部としてサポートしなければならなくなり、.NETのモダンライフサイクルポリシーと矛盾する
また、Windowsにバンドルされているバージョン以外はほとんど利用されなくなり、プラットフォームの進化が停滞する
もしpwshをWindowsにバンドルするならSCDにして.NETのライフサイクルから分離してしまうしかないだろうけど、
それはそれで.NETランタイムのバージョンがpwshにバンドルされているものに拘束されることになり、pwshエコシステムの外にある.NET資産との連携がしづらくなるだろうから難しいところだな
315デフォルトの名無しさん
2021/06/02(水) 12:36:23.07ID:rkuOfU34 winはサードパーティの物はバンドルしない方針じゃない?ルールになってるかはしらんが
まあ善き終身独裁者はMS社員なので、pythonがMSサポートになる可能性はあるかも?
最近サポート切れた2.7をバンドルし、ディストリ拡張に汎用してたlinuxは現に大変なことなってるし、止めといた方がいい
まあ善き終身独裁者はMS社員なので、pythonがMSサポートになる可能性はあるかも?
最近サポート切れた2.7をバンドルし、ディストリ拡張に汎用してたlinuxは現に大変なことなってるし、止めといた方がいい
316デフォルトの名無しさん
2021/06/02(水) 12:41:40.74ID:zHxHmDvh >>315
ゲイツはMSから退いてるぞ
ゲイツはMSから退いてるぞ
317デフォルトの名無しさん
2021/06/02(水) 12:47:09.90ID:UfLjqhXv python作者のことだろ、BDFL(benevolent dictator for life,だっけ)
30年以上歴史あるのに未だにバンバン破壊的変更加えてる姿勢は見習うべき
pwsh core使ってる層にロングタームサポート望んでる人はそんな多くないだろ
堅牢にやりたいならshやwsh、.net framework使え
30年以上歴史あるのに未だにバンバン破壊的変更加えてる姿勢は見習うべき
pwsh core使ってる層にロングタームサポート望んでる人はそんな多くないだろ
堅牢にやりたいならshやwsh、.net framework使え
318デフォルトの名無しさん
2021/06/02(水) 13:04:35.43ID:UfLjqhXv 見てきた
Version サポート終了
7.1 2022 年 2 月中旬 (予定)
7.0 2022 年 12 月 3 日 ☆LTS
意外と短かった、こんなもんでいい
python3はマイナーバージョンでも予告なしでAPI変わるけど誰も気にしてない
3.10にして外部ライブラリ入れたら標準ライブラリcollectionsでNotFound頻発してるけど、その場で名前書き変えて問題なし、ヨシ!
って感じだし
Version サポート終了
7.1 2022 年 2 月中旬 (予定)
7.0 2022 年 12 月 3 日 ☆LTS
意外と短かった、こんなもんでいい
python3はマイナーバージョンでも予告なしでAPI変わるけど誰も気にしてない
3.10にして外部ライブラリ入れたら標準ライブラリcollectionsでNotFound頻発してるけど、その場で名前書き変えて問題なし、ヨシ!
って感じだし
319デフォルトの名無しさん
2021/06/02(水) 13:11:04.61ID:CFdyIdLe .>誰も気にしてない
めっちゃ主語でかいなー
そんなわけないだろ
めっちゃ主語でかいなー
そんなわけないだろ
320デフォルトの名無しさん
2021/06/02(水) 13:16:47.25ID:UfLjqhXv ごめん、エンドユーザーじゃなくてライブラリユーザーレベルの話だね
まあ気にしてる作者は仮想環境で複数バージョンテストしてそのうち直すだろ
まあ気にしてる作者は仮想環境で複数バージョンテストしてそのうち直すだろ
321デフォルトの名無しさん
2021/06/02(水) 13:35:13.53ID:gM4d3FGp パッケージマネージャに対してversion≧3.3のような、未来バージョンも含めた指定をするのは普通じゃなかろうか
対象に含まれてるはずなのに対応してないってことはそういう事だろ
対象に含まれてるはずなのに対応してないってことはそういう事だろ
322デフォルトの名無しさん
2021/06/02(水) 14:38:34.65ID:UfLjqhXv >>314
そういうことかね
ところで.net(core含む)はwindowsコンポーネントではないけど、windows updateでリンクすることは可能なよう
Automatic patching on Windows operating system
All versions of .NET that are supported can be automatically patched via Microsoft Update. This enables organizations to manage all .NET updates in the same way.
ついでにpwshもランタイム分離版(sdkに付いてるdotnetサブコマンドで起動するやつ)を含めてしまえば、停滞も避けれると思うのだけれど
社内デプロイ想定のようだけど、その場合はWindow Updateはむしろ切っときたいというのは、ツッコミどころ?
https://dotnet.microsoft.com/platform/support/policy/dotnet-core
そういうことかね
ところで.net(core含む)はwindowsコンポーネントではないけど、windows updateでリンクすることは可能なよう
Automatic patching on Windows operating system
All versions of .NET that are supported can be automatically patched via Microsoft Update. This enables organizations to manage all .NET updates in the same way.
ついでにpwshもランタイム分離版(sdkに付いてるdotnetサブコマンドで起動するやつ)を含めてしまえば、停滞も避けれると思うのだけれど
社内デプロイ想定のようだけど、その場合はWindow Updateはむしろ切っときたいというのは、ツッコミどころ?
https://dotnet.microsoft.com/platform/support/policy/dotnet-core
323デフォルトの名無しさん
2021/06/02(水) 17:45:18.44ID:eotjJV13 .NET 5のバンドルがありえないならbashのバンドルはもっとありえないだろ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 約700頭のコアラを狙撃し殺処分 森林火災が影響 オーストラリア [少考さん★]
- 日本、アジア最大の統合型リゾート(IR)施設がついに着工、経済効果1.1兆円/年、雇用創出9.3万人、1060億円/年 大阪に収入 [お断り★]
- 【教育】なぜ「体育嫌い」は増える? 背景にホモソーシャル、性的少数者無視 ★2 [ぐれ★]
- 買春:買春容疑の社員、懲戒解雇処分に 毎日新聞社 [少考さん★]
- 駅前の一等地にデータセンター計画、「人が入れない施設が建っていいのか」と反対の声相次ぐ ★2 [蚤の市★]
- なぜ?「就職氷河期世代」への支援続々…石破首相が“就労支援”など3本柱の対策を指示するなど各党が発表 ★3 [煮卵★]
- 【正論】自民党保守派「石破首相の戦争検証は特定アジアに非難の口実を与える。自虐外交の終結という安倍さんのレガシーが無意味になる」 [519511584]
- 【同時視聴】博衣こよりのえちえちホロRust6日目まとめ🧪
- ラ ー メ ン イ ケ メ ン
- 太平洋戦争における日本兵の死因、7割が餓死・病死👈おかしくないか?軍の指導部は何してたの? [812874503]
- 【声優】石見舞菜香さん、彼氏バレしてもスルーでXを更新してしまう。もう嫌儲でも誰も騒いでない [882679842]
- 万博コスプレで炎上した女がガチギレ「二次創作がグレーなら白黒はっきりさせるべき」 [834922174]