PowerShell -Part 4

レス数が1000を超えています。これ以上書き込みはできません。
2020/01/01(水) 16:08:31.66ID:4oQ1Kxot
前スレ
PowerShell -Part 3
https://mevius.5ch.net/test/read.cgi/tech/1539074808/

次スレは>>980が立ててね!!
2021/03/03(水) 03:07:24.22ID:hWQCqBl5
そもそもPowerShellの関数(コマンドレット)は空白区切りで引数渡すんだけどね
>>971はカンマ区切りで引数を渡してるんじゃなくて、カンマで作った配列を渡してるだけ
自動変数の$args(配列)はjavascriptでいう残余引数みたいな物

PS> .\test.ps1 aaa -foo bbb,ccc,ddd
名前付き引数 $foo に配列 bbb,ccc,ddd が渡され、未定義の aaa が $args に渡されてる

PS> .\test.ps1 aaa -bar bbb,ccc,ddd
$foo に先頭の引数 aaa が渡され、未定義の -bar と配列 bbb,ccc,ddd が $args に渡される

特にオプションを指定しなければ、複数の引数を設定すれば空白区切りで渡せる
2021/03/12(金) 15:14:39.63ID:VgGpSMHu
PowerShell起動すると毎回更新しろって出るのがウザくて7入れてみたけど起動時の立ち上がりが遅くなって切れそう
しかも結局help云々が毎回出るし
MS頭おかしいんでねーの
2021/03/12(金) 19:40:18.23ID:gsxqF2ed
おバカ自慢要らね
2021/03/13(土) 10:00:11.18ID:fu8qQk1O
v7.0.6
https://github.com/PowerShell/PowerShell/releases/tag/v7.0.6
v7.1.3
https://github.com/PowerShell/PowerShell/releases/tag/v7.1.3
2021/03/13(土) 14:33:26.87ID:LuYPD+lh
| where-objectで、条件に引っかかったら0(True)、引っかからなかったら1(False)を返す方法ってありませんでしょうか。

あるサービスの実行状態を知るために、こういうことをしてるんですが、

(Get-Service | Where-Object -Property Name -Match Adobe | Where-Object -Property Status -Match Running).length
1 ←AdobeがRunnningだった
0 ←AdobeがRunningじゃなかった

他に、もっとPowershellっぽい書き方があったら教えてください
980デフォルトの名無しさん
垢版 |
2021/03/13(土) 14:59:52.96ID:4/YYKqK7
>>979
ワンライナーにこだわっているのか?
2021/03/13(土) 15:31:11.30ID:33EHGK5P
Ruby の3項演算子みたいなものは無いの?

真偽値となる条件式 ? 真の時の値 : 偽の時の値
2021/03/13(土) 15:36:01.07ID:ErfpRTBJ
(gsv adobe*).status -contains 'running'
2021/03/13(土) 15:48:12.79ID:Qa5+c/Kf
>>979
[int][bool](Get-Service | Where-Object {($_.Name -Match 'Adobe') -and ($_.Status -Match 'Running')})
2021/03/13(土) 20:59:36.95ID:3roljCwu
>>981
三項演算子
https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/what-s-new-in-powershell-70#ternary-operator
2021/03/14(日) 15:40:02.21ID:am3+IzSP
PowerShellは処理の方法が多くていいな
2021/03/14(日) 21:46:47.24ID:8YYOAayf
連想配列の参照渡しで
function f([ref]$h) { $h.value }
$h = @{ a = 0; b = 1}
f([ref]$h)
はうまくいくんだけど、引数もう一個増やして
function f([ref]$h, $s) { $h.value; $s }
$h = @{ a = 0; b = 1}
$s = 2
f([ref]$h, $s)
にすると、
f : パラメーター 'h' の引数変換を処理できません。引数には参照型を指定する必要があります。
何が悪いん?ググっても見つけられなくてさっきから悩んでる(汗
2021/03/14(日) 21:55:49.94ID:8nGQn8Lf
括弧とカンマいらないのでは
2021/03/14(日) 22:41:43.33ID:T+RcbFBu
f ([ref]$h) $s 
2021/03/14(日) 23:07:21.02ID:8YYOAayf
>>988
出来た!ありがとう
でもなぜその書き方になるのかわからない(汗
2021/03/15(月) 15:30:15.42ID:2OtrSpOH
カッコとカンマで引数渡すのはオブジェクトのメソッドの時だけだね
関数はスペース区切りで渡す

これは文法だから理由はない
2021/03/15(月) 16:45:16.26ID:bRJV5TtK
1, 2 で配列作っちゃうようにしちゃったからねぇ
記法がシェルスクリプトとプログラム言語のあいの子みたいになってるからちょっと直感に反する所がちらほら見え隠れするのはしょうがない
992デフォルトの名無しさん
垢版 |
2021/03/16(火) 23:02:58.87ID:Bd62bkLQ
>>985
処理の方法が多いことは、可読性が落ちる原因にもなる。
PythonをもちあげてPerlをくさす時に使われたのと同じ論法だよ。
2021/03/17(水) 08:00:24.75ID:EzeD0xtp
俺がPowerShellを気に入ったのはPerlと同じ匂いを感じたからだ
2021/03/17(水) 08:19:50.03ID:vnLGIRIV
しかしPerlではないのがいいところ
2021/03/17(水) 08:38:00.89ID:sqd1XF3h
Why did you do that? $VAR/ {} / Weak Intellisense
https://docs.microsoft.com/en-us/archive/blogs/monad/why-did-you-do-that-var-weak-intellisense

The $ in front of variables comes from our design center of being an interactive command oriented shell.
Interactive shells are NOT the same thing as Scripting languages with command interpretors.
Interactive shells are case studies in engineering tradeoffs (another way of saying that is that they tend to be a little quirky).
There is a tension between the needs of a great interactive experience and a great scripting/programming experience.
Time and time again during the course of the project, people would try to make us "choose" between one or the other.
We refused.

We believe that if you work hard enough at it, you can solve the puzzle and provide a great solution for both.
We were absolutely subborn on this point. Time and time again, we were able to succeed with this approach if we travailed long enough.
2021/03/17(水) 11:52:58.50ID:eAjGywmP
interactive性は'標準で'エイリアスが定義されてることで十分満足してる
2021/03/18(木) 00:08:54.40ID:t06qOp3P
PerlとPythonは文字に対するencode, decodeの意味が逆。まめな
2021/03/18(木) 00:30:47.74ID:/MpReTiX
PowerShell -Part 5
https://mevius.5ch.net/test/read.cgi/tech/1615994992/

次スレ。
2021/03/18(木) 00:39:40.12ID:3weRgygV
>>998
ナイス滑り込み
2021/03/18(木) 01:34:48.09ID:dIgskCmL
質問良いですか
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 441日 9時間 26分 17秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況