前スレ
【最強CUI】PowerShell -Part 2
http://mevius.5ch.net/test/read.cgi/tech/1480109402/
PowerShell -Part 3
レス数が900を超えています。1000を超えると表示できなくなるよ。
2018/10/09(火) 17:46:48.32ID:G4IJkzod
846デフォルトの名無しさん
2019/09/15(日) 22:28:51.53ID:tc+PQ4bB847デフォルトの名無しさん
2019/09/15(日) 22:30:29.90ID:tc+PQ4bB848デフォルトの名無しさん
2019/09/18(水) 09:25:06.97ID:jcGpm5QT849デフォルトの名無しさん
2019/09/18(水) 12:47:39.59ID:iUGh13ZQ バッチファイルでいう、
echo %errorlevel%
はパワーシェルではどうやればいいんでしょうか?
echo %errorlevel%
はパワーシェルではどうやればいいんでしょうか?
850デフォルトの名無しさん
2019/09/18(水) 14:54:54.64ID:nNyCwAkD echo $LASTEXITCODE
851デフォルトの名無しさん
2019/09/23(月) 16:12:06.99ID:yWN8gkqC [2018.11.27] 納品書A社
[2018.11.29] 納品書B社
[181129] 納品書C社
このようなフォルダ構造になっている状態で、
このフォルダ階層だけ
3行目の"[YYMMDD] 〜〜"のような書式にフォルダ名を変更したいと思っています。
" 納品書A社"などはそのままで
元の日付も保持します
正規表現では"([2][0][1][0-9])\.([01][0-9])\.([0-3][0-9])"
に反応するものだけで出来ればと思います
どのように書けばよいのでしょうか?
[2018.11.29] 納品書B社
[181129] 納品書C社
このようなフォルダ構造になっている状態で、
このフォルダ階層だけ
3行目の"[YYMMDD] 〜〜"のような書式にフォルダ名を変更したいと思っています。
" 納品書A社"などはそのままで
元の日付も保持します
正規表現では"([2][0][1][0-9])\.([01][0-9])\.([0-3][0-9])"
に反応するものだけで出来ればと思います
どのように書けばよいのでしょうか?
852デフォルトの名無しさん
2019/09/23(月) 18:10:16.40ID:mK3aarjp >>851
Get-ChildItem -Directory |
Where-Object Name -match "^\[20(1[0-9])\.([01][0-9])\.([0-3][0-9])\](.*)" |
Rename-Item -NewName { "[{0}{1}{2}]{3}" -f $Matches[1..4] } -PassThru
これ日付の妥当性チェックはガバいけどそれは別にいいんでしょ
-match演算子を使ったらその結果は変数$Matchesに入ってることを覚えておくといい
Get-ChildItem -Directory |
Where-Object Name -match "^\[20(1[0-9])\.([01][0-9])\.([0-3][0-9])\](.*)" |
Rename-Item -NewName { "[{0}{1}{2}]{3}" -f $Matches[1..4] } -PassThru
これ日付の妥当性チェックはガバいけどそれは別にいいんでしょ
-match演算子を使ったらその結果は変数$Matchesに入ってることを覚えておくといい
853デフォルトの名無しさん
2019/09/23(月) 22:41:23.65ID:CUAPT5Qo NewNameにスクリプトブロック渡せるんだ
%{〜}の中で整形して渡す発想しかなかった
%{〜}の中で整形して渡す発想しかなかった
854デフォルトの名無しさん
2019/09/23(月) 22:54:01.34ID:GUxJcSSn DIRとって一つずつ条件に合致するオブジェジェクトをパイプ渡しするだけだよ
855デフォルトの名無しさん
2019/09/23(月) 23:39:14.69ID:mK3aarjp >>853
Delay Bindingっていって以下の条件を満たすパラメータにスクリプトブロックを渡すと
パイプラインから値が入ってくる度にパラメータの値を評価してくれる
・ ByValue, ByPropertyName属性が付加されてること
・ 型が明示的に指定されてること(ただし[scriptblock]または[object]以外)
Delay Bindingっていって以下の条件を満たすパラメータにスクリプトブロックを渡すと
パイプラインから値が入ってくる度にパラメータの値を評価してくれる
・ ByValue, ByPropertyName属性が付加されてること
・ 型が明示的に指定されてること(ただし[scriptblock]または[object]以外)
856デフォルトの名無しさん
2019/09/24(火) 10:08:27.83ID:hYZHYmb1 >>852
横だけど、すごく参考になった。ありがとう。
横だけど、すごく参考になった。ありがとう。
858デフォルトの名無しさん
2019/09/25(水) 10:57:26.88ID:E/zWVp/e PowerShell って、「Shell」と一括にされてるんだっけ?
The Top Programming Languages 2019
https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2019
The Top Programming Languages 2019
https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2019
859デフォルトの名無しさん
2019/09/25(水) 20:24:06.99ID:idiO5sU0 素のCが3位とかだから老害向けランキングでしょ
860デフォルトの名無しさん
2019/10/14(月) 15:09:43.96ID:WeKpLulI LL言語入門で有名なM.Hiroiさんは
なんでpowershellにかたくなに手を出さんのかと思ってたけど
bashとかシェルスクリプト方面は全く手を付けてないので納得
今はまさかのtcltkのページを更新中というマイペースぶり
なんでpowershellにかたくなに手を出さんのかと思ってたけど
bashとかシェルスクリプト方面は全く手を付けてないので納得
今はまさかのtcltkのページを更新中というマイペースぶり
861デフォルトの名無しさん
2019/10/22(火) 22:39:49.38ID:xAr/pqiO 3位PowerShellってマジかよ
ガチ調査版::2019年プログラミング言語 求人人気ランキング
https://qiita.com/bitai/items/c8941da683ebedd135fd
ガチ調査版::2019年プログラミング言語 求人人気ランキング
https://qiita.com/bitai/items/c8941da683ebedd135fd
862デフォルトの名無しさん
2019/10/23(水) 07:15:39.57ID:4jedgKvl >>861
決め方テキトーだからあてにならんよ
決め方テキトーだからあてにならんよ
863デフォルトの名無しさん
2019/10/23(水) 08:54:10.32ID:1cyp8e5C >>861
開発案件ではなく Windows のインフラ運用系案件の求人数が及ぼした結果だと思う。
求人の要件には「必須スキル」と「スキルが有るなら尚可」とあるけど、PowerShell のスキルは
後者じゃないかと推測。
Windows 系以外でも最近は管理用のスクリプティング環境として PowerShell の採用例が
いくつかあるから、そういう案件もカウントされてるかもしれない。
自分がガッツリ使ってるところだと vSphere かな。これのスクリプティング環境 (PowerCLI) は非常に整備されてて、とても便利。
開発案件ではなく Windows のインフラ運用系案件の求人数が及ぼした結果だと思う。
求人の要件には「必須スキル」と「スキルが有るなら尚可」とあるけど、PowerShell のスキルは
後者じゃないかと推測。
Windows 系以外でも最近は管理用のスクリプティング環境として PowerShell の採用例が
いくつかあるから、そういう案件もカウントされてるかもしれない。
自分がガッツリ使ってるところだと vSphere かな。これのスクリプティング環境 (PowerCLI) は非常に整備されてて、とても便利。
864デフォルトの名無しさん
2019/10/27(日) 10:53:22.24ID:NsKzBf3L 詳しい方、教えて下さい!
シェバン記法でバッチファイル化して実行したいのですが、自スクリプトパスを取得する方法がわかりません。
誰か教えて下さい。
シェバン記法でバッチファイル化して実行したいのですが、自スクリプトパスを取得する方法がわかりません。
誰か教えて下さい。
865デフォルトの名無しさん
2019/10/27(日) 10:58:27.15ID:Lik42TLZ PowerShell、起動が遅いのがなー
なんとかならんかなー
なんとかならんかなー
866デフォルトの名無しさん
2019/10/27(日) 11:38:43.07ID:7LOf++Wk シェバン記法てなぁに?
867デフォルトの名無しさん
2019/10/27(日) 11:42:15.29ID:NsKzBf3L >>866
以下を頭につけて拡張子を.batにするとダブルクリック実行できるようになるという記法のことです。
@powershell -NoProfile -ExecutionPolicy Unrestricted "$s=[scriptblock]::create((gc \"%~f0\"|?{$_.readcount -gt 1})-join\"`n\");&$s" %*&goto:eof
以下を頭につけて拡張子を.batにするとダブルクリック実行できるようになるという記法のことです。
@powershell -NoProfile -ExecutionPolicy Unrestricted "$s=[scriptblock]::create((gc \"%~f0\"|?{$_.readcount -gt 1})-join\"`n\");&$s" %*&goto:eof
868デフォルトの名無しさん
2019/10/27(日) 11:47:16.24ID:7LOf++Wk ありがと
869デフォルトの名無しさん
2019/10/27(日) 11:48:06.40ID:hJUpCTqv Ruby では、__FILE__ が現在評価中のスクリプトファイル名
シェバンは、Linux では、
#!/usr/bin/ruby
Windows に、シェバンってあるの?
.bat に、ruby .\script.rb
と書いて、ダブルクリックで起動したりする事はあるけど
.vbs でも、起動ファイルを作れる
シェバンは、Linux では、
#!/usr/bin/ruby
Windows に、シェバンってあるの?
.bat に、ruby .\script.rb
と書いて、ダブルクリックで起動したりする事はあるけど
.vbs でも、起動ファイルを作れる
870869
2019/10/27(日) 11:52:51.51ID:hJUpCTqv .bat に、powershell .\script.ps1
と書けば、ダブルクリックで起動できないか?
または、.vbs に、
CreateObject("WScript.Shell").Run "powershell .\script.ps1", 0
と書けば、ダブルクリックで起動できないか?
または、.vbs に、
CreateObject("WScript.Shell").Run "powershell .\script.ps1", 0
871デフォルトの名無しさん
2019/10/27(日) 12:06:15.48ID:NsKzBf3L872869
2019/10/27(日) 12:21:42.69ID:hJUpCTqv よく知らないけど、powershell は、ダブルクリックで起動するような、
危険なことは出来ないのじゃないか?
危険なことは出来ないのじゃないか?
873デフォルトの名無しさん
2019/10/27(日) 12:38:31.80ID:pI9qWgY0 >>872
バッチやvbsならダブルクリックも安全だとおっしゃるのでしょうか?
バッチやvbsならダブルクリックも安全だとおっしゃるのでしょうか?
874869
2019/10/27(日) 12:54:36.77ID:hJUpCTqv ダブルクリックで起動するのは、危険!
あくまで、個人用途
仕事ではやらない方が良い。
危険すぎる
あくまで、個人用途
仕事ではやらない方が良い。
危険すぎる
875デフォルトの名無しさん
2019/10/27(日) 12:57:45.64ID:gYi3Gz62 スクリプトのパスなら$MyInvocation.MyCommand.Path
876デフォルトの名無しさん
2019/10/27(日) 13:07:05.42ID:hKAQ6fM+ >>873
そのとおり
そのとおり
877デフォルトの名無しさん
2019/10/27(日) 13:40:21.93ID:Lik42TLZ878デフォルトの名無しさん
2019/10/27(日) 13:50:19.81ID:NsKzBf3L879869
2019/10/27(日) 14:01:18.04ID:hJUpCTqv ダブルクリックで起動するのは、危険!
ファイルをちょっと触っただけでも、
ダブルクリックになって起動起動されてしまうから、Microsoft も禁止してる!
Linux のシェバンでも、
ファイル名だけじゃ起動できないようにしてるだろ
./ファイル名
みたいに、パス付きじゃないと起動しないようにしてる
これも、ファイル名だけでリターンキーを触ってしまうと、起動されてしまって危険だから!
ダブルクリック起動では、多くの被害者が出てる
ファイルをちょっと触っただけでも、
ダブルクリックになって起動起動されてしまうから、Microsoft も禁止してる!
Linux のシェバンでも、
ファイル名だけじゃ起動できないようにしてるだろ
./ファイル名
みたいに、パス付きじゃないと起動しないようにしてる
これも、ファイル名だけでリターンキーを触ってしまうと、起動されてしまって危険だから!
ダブルクリック起動では、多くの被害者が出てる
880デフォルトの名無しさん
2019/10/27(日) 14:05:08.75ID:v/8cx3Zl vbsはファイルを全部パースしようとするからシェバン記法は使えないな
881デフォルトの名無しさん
2019/10/27(日) 14:05:49.29ID:Lik42TLZ ダブルクリックは危険!
ファイルをクリックしただけで起動しちゃう!
エクスプローラーからファイルをクリックできない
全部開いちゃう!
こうですか?
ファイルをクリックしただけで起動しちゃう!
エクスプローラーからファイルをクリックできない
全部開いちゃう!
こうですか?
882デフォルトの名無しさん
2019/10/27(日) 14:06:46.38ID:v/8cx3Zl 危険はexeでもバッチでも同じだろうに
powershellスクリプトだけを危険とする理由はない
powershellスクリプトだけを危険とする理由はない
883デフォルトの名無しさん
2019/10/27(日) 14:13:43.83ID:Lik42TLZ バッチファイルは危険じゃない!
APIが使えない。PowerShellスクリプトは何でもできる!
バッチファイルは他のスクリプトを呼び出すぐらいしかできない!
こうなるんですかね?
APIが使えない。PowerShellスクリプトは何でもできる!
バッチファイルは他のスクリプトを呼び出すぐらいしかできない!
こうなるんですかね?
884デフォルトの名無しさん
2019/10/27(日) 14:22:52.49ID:4/fJTv/Q >>878
引数の名前を指定して%~dpnx0を渡せばいいのでは
# D:\a.bat
@powershell -NoProfile -ExecutionPolicy Unrestricted "$s=[scriptblock]::create((gc \"%~f0\"|?{$_.readcount -gt 1})-join\"`n\"); & $s" -hoge %~dpnx0 %* & goto:eof
Param(
[string]$hoge
)
Write-Host $hoge
Write-Host $args[0]
Write-Host $args[1]
Write-Host $args[2]
pause
# D:\a.bat eof
D:\>a 0 1 2
D:\a.bat
0
1
2
続行するには、Enter キーを押してください...:
引数の名前を指定して%~dpnx0を渡せばいいのでは
# D:\a.bat
@powershell -NoProfile -ExecutionPolicy Unrestricted "$s=[scriptblock]::create((gc \"%~f0\"|?{$_.readcount -gt 1})-join\"`n\"); & $s" -hoge %~dpnx0 %* & goto:eof
Param(
[string]$hoge
)
Write-Host $hoge
Write-Host $args[0]
Write-Host $args[1]
Write-Host $args[2]
pause
# D:\a.bat eof
D:\>a 0 1 2
D:\a.bat
0
1
2
続行するには、Enter キーを押してください...:
885デフォルトの名無しさん
2019/10/27(日) 14:26:31.81ID:vcUKQgsd >>865
PC買いかえろよ…
PC買いかえろよ…
886デフォルトの名無しさん
2019/10/27(日) 14:31:11.79ID:vcUKQgsd887デフォルトの名無しさん
2019/10/27(日) 14:32:02.36ID:v/8cx3Zl マシン替えても相対的に速くなるだけで起動が遅いのは変わらないよ
888デフォルトの名無しさん
2019/10/27(日) 14:57:41.64ID:vcUKQgsd >>887
何を言ってるんだ?w
何を言ってるんだ?w
889デフォルトの名無しさん
2019/10/27(日) 15:18:23.27ID:FsLuN3Ol 前から気になってたんだがダブルクリックでps1が起動できない設計にどれだけのセキュリティの効能があるんだろな
batの中にPSスクリプトを埋め込んで実行ポリシーも上書きできるなら実質batのセキュリティレベルまで落ちる
batをメールに添付すると自動でフィルタリングされるけどps1なら安全だからフィルタされず拡張子を書き換える手間が省ける、というレベルの価値なのかな
batの中にPSスクリプトを埋め込んで実行ポリシーも上書きできるなら実質batのセキュリティレベルまで落ちる
batをメールに添付すると自動でフィルタリングされるけどps1なら安全だからフィルタされず拡張子を書き換える手間が省ける、というレベルの価値なのかな
890デフォルトの名無しさん
2019/10/27(日) 15:40:44.98ID:Lik42TLZ >>885
WSLから実行
$ time cmd.exe /c echo ok
ok
real 0m0.051s
user 0m0.000s
sys 0m0.016s
$ time powershell.exe -Command echo ok
ok
real 0m0.355s
user 0m0.000s
sys 0m0.016s
これは遅すぎる。
WSLから実行
$ time cmd.exe /c echo ok
ok
real 0m0.051s
user 0m0.000s
sys 0m0.016s
$ time powershell.exe -Command echo ok
ok
real 0m0.355s
user 0m0.000s
sys 0m0.016s
これは遅すぎる。
891デフォルトの名無しさん
2019/10/27(日) 15:41:31.49ID:Lik42TLZ892デフォルトの名無しさん
2019/10/27(日) 15:46:43.24ID:Lik42TLZ ちなみに-NoProfileをつけても大差ない
-NoProfileが無いから当然だが
-NoProfileが無いから当然だが
893デフォルトの名無しさん
2019/10/27(日) 15:47:02.36ID:Lik42TLZ × -NoProfileが無いから当然だが
○ Profileが無いから当然だが
○ Profileが無いから当然だが
894デフォルトの名無しさん
2019/10/27(日) 15:50:55.08ID:ho9vIROt895デフォルトの名無しさん
2019/10/27(日) 16:00:15.75ID:Lik42TLZ896デフォルトの名無しさん
2019/10/27(日) 16:37:26.26ID:rrcAfXPk897デフォルトの名無しさん
2019/10/27(日) 16:42:00.99ID:ElQsR2/N898デフォルトの名無しさん
2019/10/27(日) 17:18:28.01ID:cWrRHY0n ColorTool を使わずに同等のことって出来ませんかね。客先のマシンなので入れられないんです。
powershell.exe から ssh で Linux につないでるんだけど、青と黒の色が似通ってて、すごく見づらいのをなんとかしたいです。
powershell.exe から ssh で Linux につないでるんだけど、青と黒の色が似通ってて、すごく見づらいのをなんとかしたいです。
899デフォルトの名無しさん
2019/10/27(日) 17:20:23.02ID:ElQsR2/N プロパティから画面の色を変えるだけやろ?しらんけど
900898
2019/10/27(日) 18:07:06.31ID:cWrRHY0n901デフォルトの名無しさん
2019/10/27(日) 19:03:23.84ID:vcUKQgsd902デフォルトの名無しさん
2019/10/27(日) 19:07:32.81ID:f+MCPxtM Write-Hostは日本語環境だと遅いよ
903デフォルトの名無しさん
2019/10/27(日) 21:04:44.37ID:jAqyy8Vt904デフォルトの名無しさん
2019/10/28(月) 00:41:43.54ID:T67vLNbE >>903
出るでしょ、と言われてもそれ俺の疑問とズレてると思うんだが…
その理屈だと、ネットワークから入手したときに警告が出るからbatもそれなりに安全
ps1も同じように警告が出るなら同じように安全
だったらダブルクリックで実行できない仕様にしたことにはあまり意味がなかった、という結論だと受け取って良い?
出るでしょ、と言われてもそれ俺の疑問とズレてると思うんだが…
その理屈だと、ネットワークから入手したときに警告が出るからbatもそれなりに安全
ps1も同じように警告が出るなら同じように安全
だったらダブルクリックで実行できない仕様にしたことにはあまり意味がなかった、という結論だと受け取って良い?
905デフォルトの名無しさん
2019/10/28(月) 00:48:33.12ID:ML+fUsJB ダブルクリック実行が危険ってのは、オペレーション次第で意図しないタイミングで実行されるからだろ
別に実行されても問題ないタイプのものならいいけど
ファイル削除系とか実行されたら何らかの情報が変化しちゃう系だと困るってことだよ
あと、ダウンロードでフラグが立つのはNTFSに落とした場合のみでFATなら警告なしだよ
別に実行されても問題ないタイプのものならいいけど
ファイル削除系とか実行されたら何らかの情報が変化しちゃう系だと困るってことだよ
あと、ダウンロードでフラグが立つのはNTFSに落とした場合のみでFATなら警告なしだよ
906デフォルトの名無しさん
2019/10/28(月) 02:25:37.55ID:bqlyCkZ6 読み込むアセンブリを減らしたりして0.1秒減らした。
これでコマンド実行時間が0.45秒ぐらいになった。
でもPowerShellの起動時間0.3秒がやはり大きい
ネイティブexeにすりゃいいんだろうけど、そうすると気軽じゃなくなるからな
VBScriptでAPIが使えるならそっちのほうが速くなりそうだけど
これでコマンド実行時間が0.45秒ぐらいになった。
でもPowerShellの起動時間0.3秒がやはり大きい
ネイティブexeにすりゃいいんだろうけど、そうすると気軽じゃなくなるからな
VBScriptでAPIが使えるならそっちのほうが速くなりそうだけど
907デフォルトの名無しさん
2019/10/28(月) 06:35:24.37ID:kjzN6NI8 >>890
漏れは、パソコン工房のノートPC、CPU-i3, メモリ8GB, SSD-128GB で、
WSL, Ubuntu 16.04 で、2秒ぐらいw
~$ time powershell.exe -Command echo ok
ok
real 0m1.944s
user 0m0.000s
sys 0m0.031s
漏れは、パソコン工房のノートPC、CPU-i3, メモリ8GB, SSD-128GB で、
WSL, Ubuntu 16.04 で、2秒ぐらいw
~$ time powershell.exe -Command echo ok
ok
real 0m1.944s
user 0m0.000s
sys 0m0.031s
908907
2019/10/28(月) 06:41:24.18ID:kjzN6NI8 ただし、漏れはいつも、ノートPC を、
CPUを1つだけ使う、省エネモードにして使っている
それで、コンパイルが遅いのかも?
CPUを1つだけ使う、省エネモードにして使っている
それで、コンパイルが遅いのかも?
909デフォルトの名無しさん
2019/10/28(月) 08:13:17.35ID:SMRk50Ri910デフォルトの名無しさん
2019/10/28(月) 11:15:58.10ID:tEsfLTI+911デフォルトの名無しさん
2019/10/28(月) 12:44:27.32ID:tEsfLTI+ Windows Updateしたら大幅に下がったwww
今裏でなにかビルドしてるんかな? ngenとか?
$ time powershell.exe -Command echo ok
ok
real 0m1.390s
user 0m0.000s
sys 0m0.016s
今裏でなにかビルドしてるんかな? ngenとか?
$ time powershell.exe -Command echo ok
ok
real 0m1.390s
user 0m0.000s
sys 0m0.016s
912デフォルトの名無しさん
2019/10/28(月) 13:01:44.65ID:tEsfLTI+ これやったけど速くならない(´・ω・`)
https://stofublog.wordpress.com/2014/01/01/powershell%E8%B5%B7%E5%8B%95%E9%AB%98%E9%80%9F%E5%8C%96%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/
アップデート前まで速かったのに・・・
https://stofublog.wordpress.com/2014/01/01/powershell%E8%B5%B7%E5%8B%95%E9%AB%98%E9%80%9F%E5%8C%96%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/
アップデート前まで速かったのに・・・
913デフォルトの名無しさん
2019/10/28(月) 13:15:03.68ID:tEsfLTI+ なにかやったような記憶をたどり、
https://superuser.com/questions/1212442/powershell-slow-starting-on-windows-10
. (Join-Path ([Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory()) ngen.exe) update
↑これをPowerShell(管理者)で実行したら速くなった。(もとに戻った)
でも、一部指定されたファイルが見つかりません。とかエラーがでる。
よくわからんけど、このコマンドを実行してるだけ?
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe update
https://superuser.com/questions/1212442/powershell-slow-starting-on-windows-10
. (Join-Path ([Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory()) ngen.exe) update
↑これをPowerShell(管理者)で実行したら速くなった。(もとに戻った)
でも、一部指定されたファイルが見つかりません。とかエラーがでる。
よくわからんけど、このコマンドを実行してるだけ?
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe update
914デフォルトの名無しさん
2019/10/28(月) 13:24:18.55ID:tEsfLTI+ ここに情報があった。
https://blogs.msdn.microsoft.com/jpvsblog/2018/05/07/ngen/
v4.0.30319 というバージョンはいつ変わるんだろう?
https://blogs.msdn.microsoft.com/jpvsblog/2018/05/07/ngen/
v4.0.30319 というバージョンはいつ変わるんだろう?
915デフォルトの名無しさん
2019/10/28(月) 13:28:19.78ID:tEsfLTI+ Windows Updateしたせいかとも思ったけど、Visual Studio入れたからかもしれんな
ともかく、ngen updateしたらもとに戻った。
しばらく放置してても治るんだろうけど
ともかく、ngen updateしたらもとに戻った。
しばらく放置してても治るんだろうけど
916デフォルトの名無しさん
2019/10/28(月) 21:32:05.62ID:WDVIXPLl 強力そうなので始めてみたんだけど、たかが文字コード変換がなんで
さらっとできないんだろう…
さらっとできないんだろう…
917デフォルトの名無しさん
2019/10/28(月) 22:42:59.54ID:8eaZgTeu C#もどうせ遅いんだろ?と思ってやってみたら単純なHello Worldだと0.1秒程度だった
PowerShellよりマシなのか。読み込むアセンブリで変わってくるとは思うけど
C++だと0.05秒。圧倒的だが情報が少なすぎる。
PowerShellよりマシなのか。読み込むアセンブリで変わってくるとは思うけど
C++だと0.05秒。圧倒的だが情報が少なすぎる。
918デフォルトの名無しさん
2019/10/28(月) 22:43:45.66ID:i5LGlrvW PowerShellがあれば、文字コード変換も簡単です。
http://scripting.cocolog-nifty.com/blog/2010/01/powershell-6147.html
http://scripting.cocolog-nifty.com/blog/2010/01/powershell-6147.html
919デフォルトの名無しさん
2019/10/29(火) 02:18:49.94ID:vBIRwBaE echoが遅いことが判明
$ time powershell.exe -Command echo 1
1
real 0m0.378s
user 0m0.000s
sys 0m0.000s
$ time powershell.exe -Command 1
1
real 0m0.264s
user 0m0.000s
sys 0m0.000s
$ time powershell.exe -Command "[Console]::WriteLine(1)"
1
real 0m0.243s
user 0m0.000s
sys 0m0.000s
$ time powershell.exe -Command echo 1
1
real 0m0.378s
user 0m0.000s
sys 0m0.000s
$ time powershell.exe -Command 1
1
real 0m0.264s
user 0m0.000s
sys 0m0.000s
$ time powershell.exe -Command "[Console]::WriteLine(1)"
1
real 0m0.243s
user 0m0.000s
sys 0m0.000s
920デフォルトの名無しさん
2019/10/29(火) 03:21:02.42ID:rBco2ITF echoというよりコマンドレットの呼び出しにコストがかかるんだよ
Write-Outputの使用はあらゆる場面で完全に無意味で無駄だから使わない方がいい
それについてブログ書いてる人もいた
https://get-powershellblog.blogspot.com/2017/06/lets-kill-write-output.html
Write-Outputの使用はあらゆる場面で完全に無意味で無駄だから使わない方がいい
それについてブログ書いてる人もいた
https://get-powershellblog.blogspot.com/2017/06/lets-kill-write-output.html
921デフォルトの名無しさん
2019/10/29(火) 03:55:39.34ID:vBIRwBaE >>920
そうなんだろうなって気はしてた。
まだどれがコマンドレットかそうでないかよくわかってないレベルだけどw
間にハイフンで区切られてて、呼び出しにカッコがいらないのはコマンドレットだよな?
Where-Objectとかもなくせば速くなるんだろうか?
ようやくC++で実装できそうな情報が溜まってきた。
Unicodeとか訳わかんねぇ。情報がバラバラで多すぎてわからん。
たったこれだけ、たったこれだけなのに!
C++で実装したら0.1秒。だけどバイナリのビルドが必要
PowerShellだと0.45秒。
CLIコマンドとしてサクッと実行したときの体感速度が違いすぎる。
そうなんだろうなって気はしてた。
まだどれがコマンドレットかそうでないかよくわかってないレベルだけどw
間にハイフンで区切られてて、呼び出しにカッコがいらないのはコマンドレットだよな?
Where-Objectとかもなくせば速くなるんだろうか?
ようやくC++で実装できそうな情報が溜まってきた。
Unicodeとか訳わかんねぇ。情報がバラバラで多すぎてわからん。
たったこれだけ、たったこれだけなのに!
C++で実装したら0.1秒。だけどバイナリのビルドが必要
PowerShellだと0.45秒。
CLIコマンドとしてサクッと実行したときの体感速度が違いすぎる。
922デフォルトの名無しさん
2019/10/29(火) 04:14:17.53ID:rBco2ITF >>921
Where-Objectはめちゃくちゃ遅くて遅いコマンドレットの代表みたいな奴だから俺はスクリプトでは一切使わない
同様にForEach-Objectも遅い
何作ってるのか知らんけどC++はスレ違いだからあとはC++のスレでやった方がいい
powershell自体の起動も含めてC++で作ったバイナリより遅いとかいう情報は当然すぎるから要らない
Where-Objectはめちゃくちゃ遅くて遅いコマンドレットの代表みたいな奴だから俺はスクリプトでは一切使わない
同様にForEach-Objectも遅い
何作ってるのか知らんけどC++はスレ違いだからあとはC++のスレでやった方がいい
powershell自体の起動も含めてC++で作ったバイナリより遅いとかいう情報は当然すぎるから要らない
923デフォルトの名無しさん
2019/10/29(火) 05:02:05.41ID:CowX2GWO Ruby が良い。
Rubyから、クリップボード・powershell も使える。
CP932・UTF-8 の変換もできる
C++ は、コンパイル済みだろ。
コンパイル自体に時間が掛かるのは、Rubyも同じ
# クリップボード内の複数行文字列の、各行の先頭・末尾から、
# 連続する空白類を除去して、クリップボードに入れる
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
ary = str.each_line.map( &:strip ) # 連続する空白類を除去する
IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
Rubyから、クリップボード・powershell も使える。
CP932・UTF-8 の変換もできる
C++ は、コンパイル済みだろ。
コンパイル自体に時間が掛かるのは、Rubyも同じ
# クリップボード内の複数行文字列の、各行の先頭・末尾から、
# 連続する空白類を除去して、クリップボードに入れる
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
ary = str.each_line.map( &:strip ) # 連続する空白類を除去する
IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
924デフォルトの名無しさん
2019/10/29(火) 08:28:11.85ID:+8XugnXa925デフォルトの名無しさん
2019/10/29(火) 20:44:54.51ID:ltL5L5Cn こっちのスレにも書いておくわ
Windows 10 1903、PowerShell 5.1.18362.145
コマンドプロンプトを起動して
C:\Users\user> powershell.exe -Command [Console]::OutputEncoding
BodyName : iso-2022-jp
EncodingName : 日本語 (シフト JIS)
HeaderName : iso-2022-jp
WebName : shift_jis
WindowsCodePage : 932
IsSingleByte : False
EncoderFallback : System.Text.InternalEncoderBestFitFallback
DecoderFallback : System.Text.InternalDecoderBestFitFallback
IsReadOnly : True
CodePage : 932
C:\Users\user> powershell.exe -Command [Console]::OutputEncoding = [Text.Encoding]::UTF8
UTF8に変更する。
C:\Users\user>powershell.exe -Command [Console]::OutputEncoding
BodyName : utf-8
EncodingName : Unicode (UTF-8)
HeaderName : utf-8
WebName : utf-8
WindowsCodePage : 1200
IsSingleByte : False
EncoderFallback : System.Text.EncoderReplacementFallback
DecoderFallback : System.Text.DecoderReplacementFallback
IsReadOnly : True
CodePage : 65001
それぞれ、別々のコマンドとして実行してるのに、状態が変わるのはなんで?
Windows 10 1903、PowerShell 5.1.18362.145
コマンドプロンプトを起動して
C:\Users\user> powershell.exe -Command [Console]::OutputEncoding
BodyName : iso-2022-jp
EncodingName : 日本語 (シフト JIS)
HeaderName : iso-2022-jp
WebName : shift_jis
WindowsCodePage : 932
IsSingleByte : False
EncoderFallback : System.Text.InternalEncoderBestFitFallback
DecoderFallback : System.Text.InternalDecoderBestFitFallback
IsReadOnly : True
CodePage : 932
C:\Users\user> powershell.exe -Command [Console]::OutputEncoding = [Text.Encoding]::UTF8
UTF8に変更する。
C:\Users\user>powershell.exe -Command [Console]::OutputEncoding
BodyName : utf-8
EncodingName : Unicode (UTF-8)
HeaderName : utf-8
WebName : utf-8
WindowsCodePage : 1200
IsSingleByte : False
EncoderFallback : System.Text.EncoderReplacementFallback
DecoderFallback : System.Text.DecoderReplacementFallback
IsReadOnly : True
CodePage : 65001
それぞれ、別々のコマンドとして実行してるのに、状態が変わるのはなんで?
926デフォルトの名無しさん
2019/10/29(火) 20:47:41.08ID:ltL5L5Cn しかも powershell.exe だけに影響する話じゃなくて、
UTF8で書いたファイルを、コマンドプロンプト起動直後、
シフトJISモードのときにtypeしたら文字化けし、
UTF8に変更してからtypeしたら文字化けしない
明らかにコマンドプロンプトの状態が変わってる。
だけどchcpの値は932のままかわらない
ただ、PowerShellを使ってUTF8モードに切り替えると、
chcpすると「Active code page: 932」と英語で表示される。
UTF8で書いたファイルを、コマンドプロンプト起動直後、
シフトJISモードのときにtypeしたら文字化けし、
UTF8に変更してからtypeしたら文字化けしない
明らかにコマンドプロンプトの状態が変わってる。
だけどchcpの値は932のままかわらない
ただ、PowerShellを使ってUTF8モードに切り替えると、
chcpすると「Active code page: 932」と英語で表示される。
927デフォルトの名無しさん
2019/10/29(火) 23:40:36.07ID:JjalWxmz928デフォルトの名無しさん
2019/11/02(土) 12:30:04.56ID:1PdjBp7d この場合は True が返るんだけど(当然)、
Test-Path ${home}\ntuser.dat
こうした場合は False になる。
$a = [xml]('<?xml version="1.0"?><File>${home}\ntuser.dat</File>')
Test-Path $a.File
XML の値は、
"${home}\ntuser.dat" こうじゃなくて
'${home}\ntuser.dat' というふうに格納されてるようなんだけど、変数を展開するにはどうすればいいだろう?
Test-Path ${home}\ntuser.dat
こうした場合は False になる。
$a = [xml]('<?xml version="1.0"?><File>${home}\ntuser.dat</File>')
Test-Path $a.File
XML の値は、
"${home}\ntuser.dat" こうじゃなくて
'${home}\ntuser.dat' というふうに格納されてるようなんだけど、変数を展開するにはどうすればいいだろう?
929デフォルトの名無しさん
2019/11/02(土) 12:34:23.96ID:dF2n6ehk invoke expression
930デフォルトの名無しさん
2019/11/02(土) 13:07:31.37ID:esIitHWU931928
2019/11/02(土) 13:33:24.00ID:1PdjBp7d932デフォルトの名無しさん
2019/11/02(土) 18:11:26.52ID:71SUtLbe Powershellの演算子の優先順位が判るサイトが見当たらないんですがどっかにないですかね
演算子をカテゴリ毎に紹介してるサイトは多く見かけるんですが
演算子をカテゴリ毎に紹介してるサイトは多く見かけるんですが
933デフォルトの名無しさん
2019/11/02(土) 20:16:26.21ID:0WeT0cpY934デフォルトの名無しさん
2019/11/03(日) 02:57:41.69ID:hkCRv+PE >>933
ありがとうございます!助かりました!
ありがとうございます!助かりました!
935デフォルトの名無しさん
2019/11/03(日) 03:32:58.98ID:Y1hBQ+8z どういたしまして!
936デフォルトの名無しさん
2019/11/05(火) 23:35:55.67ID:ocMK86pm m(_ _)m誰か教えて下さい。
フォーム上にコンボボックスを大量配置したいのですが、一つずつ以下みたいに書くと大変です。
これを関数化する方法を教えて下さい。
$Combo = New-Object System.Windows.Forms.Combobox
$Combo.Location = New-Object System.Drawing.Point(10,10)
$Combo.size = New-Object System.Drawing.Size(150,30)
フォーム上にコンボボックスを大量配置したいのですが、一つずつ以下みたいに書くと大変です。
これを関数化する方法を教えて下さい。
$Combo = New-Object System.Windows.Forms.Combobox
$Combo.Location = New-Object System.Drawing.Point(10,10)
$Combo.size = New-Object System.Drawing.Size(150,30)
937デフォルトの名無しさん
2019/11/06(水) 02:58:52.99ID:+N82MWJ/ >>936
普通に$comboを返す関数を作ればいい
winforms書く時は使えるバージョンならusing namespaceを使った方がすっきりする
個人的にNew-Objectは遅いだけなのでなるべく使わない
暗黙の型変換を積極的に使うとすっきりする
using namespace System.Windows.Forms
Add-Type -AssemblyName System.Windows.Forms
function Create-ComboBox($Left, $Top, $Width, $Height) {
$combo = [ComboBox]::new()
$combo.Location = "$Left, $Top"
$combo.size = "$Width, $Height"
$combo
}
$form = [Form]::new()
$form.Size = "200,200"
$combo1 = Create-ComboBox -Left 10 -Top 50 -Width 160 -Height 30
$form.Controls.Add($combo1)
$form.ShowDialog()
普通に$comboを返す関数を作ればいい
winforms書く時は使えるバージョンならusing namespaceを使った方がすっきりする
個人的にNew-Objectは遅いだけなのでなるべく使わない
暗黙の型変換を積極的に使うとすっきりする
using namespace System.Windows.Forms
Add-Type -AssemblyName System.Windows.Forms
function Create-ComboBox($Left, $Top, $Width, $Height) {
$combo = [ComboBox]::new()
$combo.Location = "$Left, $Top"
$combo.size = "$Width, $Height"
$combo
}
$form = [Form]::new()
$form.Size = "200,200"
$combo1 = Create-ComboBox -Left 10 -Top 50 -Width 160 -Height 30
$form.Controls.Add($combo1)
$form.ShowDialog()
938デフォルトの名無しさん
2019/11/06(水) 05:18:39.91ID:+Isovp9U x.Size="1,2"
こういう書き方できるの知らんかった
こういう書き方できるの知らんかった
939936
2019/11/06(水) 11:38:21.31ID:viRYf3W9940デフォルトの名無しさん
2019/11/06(水) 19:25:34.62ID:du9DeY6n >>939
5.0以上にアップグレードすればWin7でも使えるんじゃないの?インストール不可なだめだけど
5.0以上にアップグレードすればWin7でも使えるんじゃないの?インストール不可なだめだけど
941936
2019/11/08(金) 09:54:16.57ID:RMGDBEVY 緊急でお願いします。マルチバイト文字のパディングのやり方を教えて下さい。サンプルコードがあると嬉しいです。
942デフォルトの名無しさん
2019/11/08(金) 10:20:36.03ID:weGpRZzk 入力と出力のサンプル位出したら
943デフォルトの名無しさん
2019/11/08(金) 10:20:37.27ID:bpFYbH+Z うっかり bash と間違えて ctrl+R と打ってしまったんだけど、PowerShel でも同じように機能したんだな。
軽く感動したわ。
軽く感動したわ。
944デフォルトの名無しさん
2019/11/08(金) 10:41:43.51ID:wfK2aVsO ctrl + Alt + shift + /
でショートカット一覧が出るからざっと見ておくといいよ
でショートカット一覧が出るからざっと見ておくといいよ
945デフォルトの名無しさん
2019/11/08(金) 11:47:48.53ID:bt2cbsd4 PowerShellにディレクトリ、ファイル名以外の
補完機能ってあるの?
補完機能ってあるの?
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 日経平均の下落率3%超す、財政懸念で長期金利上昇 ★2 [お断り★]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市朗報】 日本政府「一昨年は1300億円。去年も防衛費が1100億円余ったw」 日本の防衛費は充分足りてる事が判明。増やす必要無し [485983549]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
