前スレ
PowerShell -Part 3
https://mevius.5ch.net/test/read.cgi/tech/1539074808/
次スレは>>980が立ててね!!
探検
PowerShell -Part 4
レス数が1000を超えています。これ以上書き込みはできません。
2020/01/01(水) 16:08:31.66ID:4oQ1Kxot
926デフォルトの名無しさん
2021/02/07(日) 10:03:05.78ID:fgGFki9a 変数名を変え忘れたので訂正
$found = $colors -contains 'green'
$found = $colors -contains 'green'
927デフォルトの名無しさん
2021/02/07(日) 10:18:17.21ID:jVPjdJHk >>923-925
レスありがとうございます。
> 否定をtrueにするってどういうことだろ
> どう見ても$data.Contains('green')の方がわかりやすいと思うけど
$exec_shinai_jikan=@('01','02','03')
$imananji=Get-Date -Format HH
if ($exec_shinai_jikan -notcontains $imananji){
"実行するよ"
} else {
"実行しないよ"
}
実際のコード(一部)はこれです。変数名のセンスが独特ですよね・・(By 開発の人、私は開発じゃないです)といわれているので
出すのが恥ずかしかったんです。混乱を生んだようでして申し訳ない。
>で何が戻ってくるか確認すればなぜそう言うふうに動くかわかると思う
・0か0を超える値か
・nullかnullを除く何らかの値か
でtrue or falseが決まる感じでしょうか?
-notって、-notだけじゃ赤傍線引かれるけどなにがだめなんだと思ったら、-not〜って表現があったんですね。
ありがとうございます。
レスありがとうございます。
> 否定をtrueにするってどういうことだろ
> どう見ても$data.Contains('green')の方がわかりやすいと思うけど
$exec_shinai_jikan=@('01','02','03')
$imananji=Get-Date -Format HH
if ($exec_shinai_jikan -notcontains $imananji){
"実行するよ"
} else {
"実行しないよ"
}
実際のコード(一部)はこれです。変数名のセンスが独特ですよね・・(By 開発の人、私は開発じゃないです)といわれているので
出すのが恥ずかしかったんです。混乱を生んだようでして申し訳ない。
>で何が戻ってくるか確認すればなぜそう言うふうに動くかわかると思う
・0か0を超える値か
・nullかnullを除く何らかの値か
でtrue or falseが決まる感じでしょうか?
-notって、-notだけじゃ赤傍線引かれるけどなにがだめなんだと思ったら、-not〜って表現があったんですね。
ありがとうございます。
928デフォルトの名無しさん
2021/02/07(日) 10:22:55.16ID:5sEA4G4p929デフォルトの名無しさん
2021/02/07(日) 10:24:14.00ID:fgGFki9a なるほどそういう感じか
-not演算子のハイフン書き忘れてた
ごめんね
-not演算子のハイフン書き忘れてた
ごめんね
930デフォルトの名無しさん
2021/02/07(日) 10:26:29.15ID:fgGFki9a >>923
($data -eq 'green').Count -eq 0
これってgreenが含まれない場合は最初の-eq演算による絞り込み結果が$nullになって
ぬるぽになるかと思いきや$null.Countの呼び出しは特例的に0を返すんやね
またPowershellの妙な癖を覚えてしまった
($data -eq 'green').Count -eq 0
これってgreenが含まれない場合は最初の-eq演算による絞り込み結果が$nullになって
ぬるぽになるかと思いきや$null.Countの呼び出しは特例的に0を返すんやね
またPowershellの妙な癖を覚えてしまった
931デフォルトの名無しさん
2021/02/07(日) 11:48:29.36ID:jX/y7Db/ >>930
> これってgreenが含まれない場合は最初の-eq演算による絞り込み結果が$nullになって
ならないよ、単に空の配列になるだけ
gm -inputobject ($data -eq 'yellow')
とかやればわかる
> これってgreenが含まれない場合は最初の-eq演算による絞り込み結果が$nullになって
ならないよ、単に空の配列になるだけ
gm -inputobject ($data -eq 'yellow')
とかやればわかる
932デフォルトの名無しさん
2021/02/07(日) 12:10:49.69ID:fgGFki9a933デフォルトの名無しさん
2021/02/07(日) 13:45:02.08ID:hwDwbBnD934デフォルトの名無しさん
2021/02/07(日) 20:57:33.01ID:rt2m338a >>913,917
6.0で仕様変更された
https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/breaking-changes-ps6?view=powershell-7.1#unify-cmdlets-with-parameter--encoding-to-be-of-type-systemtextencoding-5080
-Encoding の値 Byteはファイルシステム プロバイダーのコマンドレットから削除されました。 新しいパラメーター -AsByteStream を使用して、入力としてバイト ストリームが必要なこと、あるいは出力がバイト ストリームであることを指定してください。
6.0で仕様変更された
https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/breaking-changes-ps6?view=powershell-7.1#unify-cmdlets-with-parameter--encoding-to-be-of-type-systemtextencoding-5080
-Encoding の値 Byteはファイルシステム プロバイダーのコマンドレットから削除されました。 新しいパラメーター -AsByteStream を使用して、入力としてバイト ストリームが必要なこと、あるいは出力がバイト ストリームであることを指定してください。
935デフォルトの名無しさん
2021/02/10(水) 10:00:24.88ID:hefdb5Yb 可変長配列数?的なものの実現方法を教えてください。
CSVを以下の通り加工したいのですが、
1554412,A,B,C,D
2176944,D,C,E,F,G,H,I,J
4887447,F,H,J,A,K
こんな感じのカンマ区切りcsvを
1554412,A
1554412,B
1554412,C
1554412,D
以下同じパターン
で成形したいのです。
csv区切り文字は必ずカンマで、
フィールド数は行により異なります。
行を読み込んで、配列に入れて〜、配列の最初のフィールドを入れて〜
とぼんやり想像しているのですが、「個数が定まっていない行を、配列に入れる方法」が想像つきません。
可変長配列数?的なものの実現方法を教えてください。
CSVを以下の通り加工したいのですが、
1554412,A,B,C,D
2176944,D,C,E,F,G,H,I,J
4887447,F,H,J,A,K
こんな感じのカンマ区切りcsvを
1554412,A
1554412,B
1554412,C
1554412,D
以下同じパターン
で成形したいのです。
csv区切り文字は必ずカンマで、
フィールド数は行により異なります。
行を読み込んで、配列に入れて〜、配列の最初のフィールドを入れて〜
とぼんやり想像しているのですが、「個数が定まっていない行を、配列に入れる方法」が想像つきません。
可変長配列数?的なものの実現方法を教えてください。
936デフォルトの名無しさん
2021/02/10(水) 18:12:00.38ID:hRqw8VTE 2つ目のカンマ or 改行まで読んでから要素数2の固定長配列に入れるのはどうですか。
エレガントな方法ではないと思うので、他の方の意見も参考にしてください
エレガントな方法ではないと思うので、他の方の意見も参考にしてください
937デフォルトの名無しさん
2021/02/10(水) 18:19:41.40ID:hRqw8VTE あ、A, D, FじゃなくてA, B, Cでしたか。
マルチバリューカラムになっているのを正規化したいんですね。
最初の一つ目だけ取るのと勘違いしてました。
1. 一行読んでstring
2. カンマでstring.splitしてstring[]
3. [1]からstring.lengthまでを、[0]とstring.joinして、string[]
4. 全行ループ
これでどうですか
マルチバリューカラムになっているのを正規化したいんですね。
最初の一つ目だけ取るのと勘違いしてました。
1. 一行読んでstring
2. カンマでstring.splitしてstring[]
3. [1]からstring.lengthまでを、[0]とstring.joinして、string[]
4. 全行ループ
これでどうですか
938デフォルトの名無しさん
2021/02/10(水) 19:17:13.97ID:JrOSOdLx PowerShell っぽくならこんな感じかな
'1554412,A,B,C,D', '2176944,D,C,E,F,G,H,I,J', '4887447,F,H,J,A,K' | %{
$a, $b = $_ -split ',', 2
$b -split ',' | %{ "$a,$_" }
}
'1554412,A,B,C,D', '2176944,D,C,E,F,G,H,I,J', '4887447,F,H,J,A,K' | %{
$a, $b = $_ -split ',', 2
$b -split ',' | %{ "$a,$_" }
}
939デフォルトの名無しさん
2021/02/10(水) 19:51:01.55ID:hRqw8VTE どうしてこれ動かないの?
$fが更新されない
スマホでコード書くの疲れたんで、誰か教えて下さい。
https://tio.run/##TY3LCsIwEEX38xVDyEJxLEaiVUHw/cYfkC5EUluoqTRFreK316kguBm4hzn3XtO7yVxkkqQs5cPhEEcCVKejtWrTmCY0pRm0ld/ta00zTnNa0JJWtKYN6F7P19pnsqINf29BjLDprkmcozjM7S3OUnsxNg8Gg72572JrBECYZuZ4irAmHxhb5NU6vkAW1Tijn08CZFihwh1awZ9VfC2myvM4OW9n7DmPmqoefIuelRRio6rgKwtG8IZ3WX4A
$fが更新されない
スマホでコード書くの疲れたんで、誰か教えて下さい。
https://tio.run/##TY3LCsIwEEX38xVDyEJxLEaiVUHw/cYfkC5EUluoqTRFreK316kguBm4hzn3XtO7yVxkkqQs5cPhEEcCVKejtWrTmCY0pRm0ld/ta00zTnNa0JJWtKYN6F7P19pnsqINf29BjLDprkmcozjM7S3OUnsxNg8Gg72572JrBECYZuZ4irAmHxhb5NU6vkAW1Tijn08CZFihwh1awZ9VfC2myvM4OW9n7DmPmqoefIuelRRio6rgKwtG8IZ3WX4A
940デフォルトの名無しさん
2021/02/10(水) 21:07:38.33ID:bnTPmcqs941デフォルトの名無しさん
2021/02/10(水) 21:45:54.25ID:JrOSOdLx942デフォルトの名無しさん
2021/02/10(水) 21:58:58.82ID:hefdb5Yb >>937
とりあえず用は足せました。が、多分ご紹介の内容と全然違うことをやってると思います。
レスの内容が半分分かりませんでした。
>3. [1]からstring.lengthまでを
ここが猛烈にヒントになってこんな感じにしました。
foreach ($l in Get-Content C:\temp\test.txt) {
$l=$l.Split(",")
1..(($l.Length) - 1) | % {write-host ($l[0],$l[$_]) }
}
サンプルのコードをいただけると幸いです。
>>938
これも無事動きました。ありがとうございます。
%ってのを知りませんでした。
Powershell難しすぎです。
勉強してるんですが、正直心折れそうです。
bashはそこそこ使えるので行けるだろと思ってたんですが、ナメてました。
死にそうです。
とりあえず用は足せました。が、多分ご紹介の内容と全然違うことをやってると思います。
レスの内容が半分分かりませんでした。
>3. [1]からstring.lengthまでを
ここが猛烈にヒントになってこんな感じにしました。
foreach ($l in Get-Content C:\temp\test.txt) {
$l=$l.Split(",")
1..(($l.Length) - 1) | % {write-host ($l[0],$l[$_]) }
}
サンプルのコードをいただけると幸いです。
>>938
これも無事動きました。ありがとうございます。
%ってのを知りませんでした。
Powershell難しすぎです。
勉強してるんですが、正直心折れそうです。
bashはそこそこ使えるので行けるだろと思ってたんですが、ナメてました。
死にそうです。
943デフォルトの名無しさん
2021/02/10(水) 22:00:44.14ID:hefdb5Yb >>942
自己レスすいません。
これも結局、
write-host ($l[0],$l[$_]) }
で間をカンマ区切りにしたかったんですけど、
1時間手を変え品を変えで結局ダメでした。
何が悪いんでしょうか。
自己レスすいません。
これも結局、
write-host ($l[0],$l[$_]) }
で間をカンマ区切りにしたかったんですけど、
1時間手を変え品を変えで結局ダメでした。
何が悪いんでしょうか。
944デフォルトの名無しさん
2021/02/10(水) 22:12:55.91ID:hefdb5Yb 何度もすいません。
write-hostで標準で区切り文字が半角スペースになってるという事実がやっとわかりました。
{write-host -Separator "," $l[0]$l[$_]}
で無事に希望の出力を得ることができました。
ありがとうございました。
write-hostで標準で区切り文字が半角スペースになってるという事実がやっとわかりました。
{write-host -Separator "," $l[0]$l[$_]}
で無事に希望の出力を得ることができました。
ありがとうございました。
945デフォルトの名無しさん
2021/02/11(木) 00:08:14.80ID:lj0aoxL+ すっきり書けなくてもどかしい
$csv -split "\r\n" | % { $a = $_ -split ','; $a[1..($a.Count - 1)] } | % { $a[0], $_ -join ',' }
$csv -split "\r\n" | % { $a = $_ -split ','; $a[1..($a.Count - 1)] } | % { $a[0], $_ -join ',' }
946デフォルトの名無しさん
2021/02/11(木) 19:38:29.26ID:rrBqcjKj >>939
newlineにクォートつけてたわw
>> 940, 941 さんthx
一応quote外した結果。
https://tio.run/##TY3dCoJAEIXv5ykG2YuiUdrY0oKg/396gfAiYk3B1nClsujZbYwuuhk4H/Odc83uOrexTtOqEg@LQxw5ILtdpWSHxjShKc2gI/1eXymacZrTgpa0ojVtQAWBr5TPZEUb/t6CM0LXXtOkwMPc3JI8MxdtinAw2Ov7LjEaIMpyfTzF2BAPTAzyZhNfIMp6mtHPdsgBEdWotId2@GeVX4up9DxO1ttpcy5iVzbDb9GzliJs1RV8RckI3vCuqg8
newlineにクォートつけてたわw
>> 940, 941 さんthx
一応quote外した結果。
https://tio.run/##TY3dCoJAEIXv5ykG2YuiUdrY0oKg/396gfAiYk3B1nClsujZbYwuuhk4H/Odc83uOrexTtOqEg@LQxw5ILtdpWSHxjShKc2gI/1eXymacZrTgpa0ojVtQAWBr5TPZEUb/t6CM0LXXtOkwMPc3JI8MxdtinAw2Ov7LjEaIMpyfTzF2BAPTAzyZhNfIMp6mtHPdsgBEdWotId2@GeVX4up9DxO1ttpcy5iVzbDb9GzliJs1RV8RckI3vCuqg8
947デフォルトの名無しさん
2021/02/12(金) 09:16:23.07ID:q/2+I+Zd $?で直前のコマンドの実行結果を知ることができますが、
直前に実行したコマンドのPIDを知る方法ってありませんか?
Start-Process -FilePath c:\bin\command.exe -ArgumentList 1
$cmd1pid=get-chokuzenn-pid
$cmd1pid
78968
Start-Process -FilePath c:\bin\command.exe -ArgumentList 2
$cmd1pid=get-chokuzenn-pid
$cmd1pid
4292
実際に動かしたいのは、ttpmacro.exe(Teratermのマクロ)です。
Teratemマクロで外部の機器にsshで接続して、ssh接続のログの内容を見て
そのプロセスを終了させるか判断したいと思っております
書こうとしているスクリプトを動かす時点で、1個もTeratermが動いていないなら、
Get-Processでなんとかなると思うのですが、上記スクリプトを実行する時点で
ほかのTeratermが動いている可能性があり、それを間違って死なすわけにはいかず、
Powershellスクリプト内で、Start-Processなりで動かした、直前のプロセスのIDを知る方法があればと思い相談させていただきます
すいません、よろしくお願いいたします。
直前に実行したコマンドのPIDを知る方法ってありませんか?
Start-Process -FilePath c:\bin\command.exe -ArgumentList 1
$cmd1pid=get-chokuzenn-pid
$cmd1pid
78968
Start-Process -FilePath c:\bin\command.exe -ArgumentList 2
$cmd1pid=get-chokuzenn-pid
$cmd1pid
4292
実際に動かしたいのは、ttpmacro.exe(Teratermのマクロ)です。
Teratemマクロで外部の機器にsshで接続して、ssh接続のログの内容を見て
そのプロセスを終了させるか判断したいと思っております
書こうとしているスクリプトを動かす時点で、1個もTeratermが動いていないなら、
Get-Processでなんとかなると思うのですが、上記スクリプトを実行する時点で
ほかのTeratermが動いている可能性があり、それを間違って死なすわけにはいかず、
Powershellスクリプト内で、Start-Processなりで動かした、直前のプロセスのIDを知る方法があればと思い相談させていただきます
すいません、よろしくお願いいたします。
948デフォルトの名無しさん
2021/02/12(金) 09:17:40.74ID:q/2+I+Zd test.ps1
Start-Process -FilePath c:\bin\command.exe -ArgumentList 1
$cmd1pid=get-chokuzenn-pid
$cmd1pid
78968
Start-Process -FilePath c:\bin\command.exe -ArgumentList 2
$cmd2pid=get-chokuzenn-pid
$cmd2pid
4292
すいません、スクリプトの例に誤りがありました
訂正します
Start-Process -FilePath c:\bin\command.exe -ArgumentList 1
$cmd1pid=get-chokuzenn-pid
$cmd1pid
78968
Start-Process -FilePath c:\bin\command.exe -ArgumentList 2
$cmd2pid=get-chokuzenn-pid
$cmd2pid
4292
すいません、スクリプトの例に誤りがありました
訂正します
949デフォルトの名無しさん
2021/02/12(金) 09:57:59.46ID:JWXF4JEZ950デフォルトの名無しさん
2021/02/12(金) 10:15:49.19ID:JXvYdGCL 引数に -PassThru を付けて戻り値からidで取れないかな?
951デフォルトの名無しさん
2021/02/12(金) 11:17:25.75ID:jxDcSv/l952デフォルトの名無しさん
2021/02/12(金) 13:51:19.53ID:q/2+I+Zd953デフォルトの名無しさん
2021/02/12(金) 13:58:44.73ID:aXMNNeBu すばらしい
954デフォルトの名無しさん
2021/02/13(土) 18:04:24.59ID:elIMNXvv 音楽プレーヤーで MP3 ファイルをシャッフル再生させたいので、
dir /n /-b /s *.mp3 > playlist.txt
の結果をランダムに入れ替えるにはどうすればいいでしょうか?
(乱数で再生する行を求めると同じ曲がつづくかもしれないのでシャッフルにしたい。)
dir /n /-b /s *.mp3 > playlist.txt
の結果をランダムに入れ替えるにはどうすればいいでしょうか?
(乱数で再生する行を求めると同じ曲がつづくかもしれないのでシャッフルにしたい。)
955デフォルトの名無しさん
2021/02/13(土) 19:45:47.08ID:PYtZn7CJ956デフォルトの名無しさん
2021/02/13(土) 20:59:17.73ID:9JYy97c0 Sort-Object {Get-Random}じゃあかんの?
957デフォルトの名無しさん
2021/02/13(土) 21:06:22.08ID:PYtZn7CJ958デフォルトの名無しさん
2021/02/13(土) 21:14:23.98ID:D/l9Txdy 自分の音楽コレクションのプレイリスト作る要件なら速度は別にと思わなくもない
5分とか掛かるならちょとやだけど
5分とか掛かるならちょとやだけど
959デフォルトの名無しさん
2021/02/13(土) 21:58:32.75ID:WEbw7iAW プレイリストのランダム再生機能ぐらい大抵のプレイヤーに付いてるだろうに
960デフォルトの名無しさん
2021/02/13(土) 22:34:07.74ID:XvWS5Qrl >>957 のリンク先のコードで質問です
勉強のためちょこちょこ編集してみたところ、
「なんでこれで変数の中がランダムにおきかわるの?」と疑問がわきました
$r = @(1,2,3,4,5,6,7,8,9,10)
$r=($r | sort -Property @{Exp={[Guid]::NewGuid()}})
$r
$foo = @(1,2,3,4,5,6,7,8,9,10)
$foo[0] = $foo | sort -prop @{Exp={[Guid]::NewGuid()}}
$foo[0]
前者のように、$rの中身を $r | sort -Prop〜で置き換えるというのなら納得がいくんですが、
なぜ、後者のように、書いてもランダムになるのかが納得いきません
変数定義はパイプの前の話で、どうしてそれがパイプ先の、ランダムにする操作で置き換わるのでしょうか。
勉強のためちょこちょこ編集してみたところ、
「なんでこれで変数の中がランダムにおきかわるの?」と疑問がわきました
$r = @(1,2,3,4,5,6,7,8,9,10)
$r=($r | sort -Property @{Exp={[Guid]::NewGuid()}})
$r
$foo = @(1,2,3,4,5,6,7,8,9,10)
$foo[0] = $foo | sort -prop @{Exp={[Guid]::NewGuid()}}
$foo[0]
前者のように、$rの中身を $r | sort -Prop〜で置き換えるというのなら納得がいくんですが、
なぜ、後者のように、書いてもランダムになるのかが納得いきません
変数定義はパイプの前の話で、どうしてそれがパイプ先の、ランダムにする操作で置き換わるのでしょうか。
961デフォルトの名無しさん
2021/02/13(土) 22:48:16.31ID:PYtZn7CJ >>960
やってることは同じで結果が単に$foo[0]に入ってるだけ
$foo[1]~$foo[9] の内容は変わってないはず
ちなみに置き換えてるわけじゃなくて新しい配列を作ってそれを$rとか$foo[0]に入れてる
やってることは同じで結果が単に$foo[0]に入ってるだけ
$foo[1]~$foo[9] の内容は変わってないはず
ちなみに置き換えてるわけじゃなくて新しい配列を作ってそれを$rとか$foo[0]に入れてる
962デフォルトの名無しさん
2021/02/13(土) 22:59:06.67ID:XvWS5Qrl >>961
ありがとうございます
書き方が違うけど処理が同じというとらえ方でいいですか?
"パターン1"
$foo = @(1,2,3,4,5,6,7,8,9,10)
$foo=($foo | sort -prop @{Exp={[Guid]::NewGuid()}})
$foo
"パターン2"
$foo = @(1,2,3,4,5,6,7,8,9,10)
$foo = $foo | sort -prop @{Exp={[Guid]::NewGuid()}}
$foo
パターン1の書き方違いが、パターン2のようなとらえ方でいいでしょうか?
ありがとうございます
書き方が違うけど処理が同じというとらえ方でいいですか?
"パターン1"
$foo = @(1,2,3,4,5,6,7,8,9,10)
$foo=($foo | sort -prop @{Exp={[Guid]::NewGuid()}})
$foo
"パターン2"
$foo = @(1,2,3,4,5,6,7,8,9,10)
$foo = $foo | sort -prop @{Exp={[Guid]::NewGuid()}}
$foo
パターン1の書き方違いが、パターン2のようなとらえ方でいいでしょうか?
963デフォルトの名無しさん
2021/02/13(土) 23:33:24.56ID:PYtZn7CJ964954
2021/02/13(土) 23:36:43.19ID:elIMNXvv Get-ChildItem -path d:\ -filter *.mp3 -recurse | foreach {$_.FullName} | sort {Get-Random}
や、
Get-ChildItem -path d:\ -filter *.mp3 -recurse | foreach {$_.FullName} | sort -prop @{Exp={[Guid]::NewGuid()}}
でうまくいきそうです。 ありがとうございました。
や、
Get-ChildItem -path d:\ -filter *.mp3 -recurse | foreach {$_.FullName} | sort -prop @{Exp={[Guid]::NewGuid()}}
でうまくいきそうです。 ありがとうございました。
965デフォルトの名無しさん
2021/02/14(日) 00:07:20.96ID:rA0IJrKX966デフォルトの名無しさん
2021/02/14(日) 00:22:33.69ID:D24G58JB967デフォルトの名無しさん
2021/02/14(日) 00:28:18.02ID:D24G58JB968デフォルトの名無しさん
2021/02/19(金) 08:22:42.85ID:islL1Ifn Announcing the PowerShell Community Blog
https://devblogs.microsoft.com/powershell-community/announcing-the-powershell-community-blog/
https://devblogs.microsoft.com/powershell-community/announcing-the-powershell-community-blog/
969デフォルトの名無しさん
2021/02/23(火) 08:20:29.72ID:XBzTqCMZ posh-git と GetChildItemColor
でダイブましになった
他にもおすすめあったらおせーて!
でダイブましになった
他にもおすすめあったらおせーて!
970デフォルトの名無しさん
2021/02/23(火) 20:50:03.67ID:8GGn/OTs GetChildItemColorを入れるとシンボリックリンクのリンク先のパスが表示されなくなるのがクソ
971デフォルトの名無しさん
2021/03/02(火) 00:20:13.77ID:NQgDi+il #test.ps1
param([array]$foo)
echo ('$ARGS[0]' +':'+ $ARGS[0])
echo ('$foo[0]' +':'+ $foo[0])
echo ('$foo[1]' +':'+ $foo[1])
echo ('$foo[2]' +':'+ $foo[2])
PS> .\test.ps1 aaa -foo bbb,ccc,ddd
$ARGS[0]:aaa
$foo[0]:bbb
$foo[1]:ccc
$foo[2]:ddd
PS> .\test.ps1 aaa -bar bbb,ccc,ddd
$ARGS[0]:-bar
$foo[0]:aaa
$foo[1]:
$foo[2]:
PS C:\script>
PS> \test.ps1 aaa
$ARGS[0]:
$foo[0]:aaa
$foo[1]:
$foo[2]:
@引数やパラメータの数、パラメーター名などのエラーをチェックする方法を教えてください。
Aパラメータの区切りをカンマで無くスペースにする方法があれば教えてください。
ググってみたのですが、ググり方が悪いのか、見つからず苦しんでおります
param([array]$foo)
echo ('$ARGS[0]' +':'+ $ARGS[0])
echo ('$foo[0]' +':'+ $foo[0])
echo ('$foo[1]' +':'+ $foo[1])
echo ('$foo[2]' +':'+ $foo[2])
PS> .\test.ps1 aaa -foo bbb,ccc,ddd
$ARGS[0]:aaa
$foo[0]:bbb
$foo[1]:ccc
$foo[2]:ddd
PS> .\test.ps1 aaa -bar bbb,ccc,ddd
$ARGS[0]:-bar
$foo[0]:aaa
$foo[1]:
$foo[2]:
PS C:\script>
PS> \test.ps1 aaa
$ARGS[0]:
$foo[0]:aaa
$foo[1]:
$foo[2]:
@引数やパラメータの数、パラメーター名などのエラーをチェックする方法を教えてください。
Aパラメータの区切りをカンマで無くスペースにする方法があれば教えてください。
ググってみたのですが、ググり方が悪いのか、見つからず苦しんでおります
972デフォルトの名無しさん
2021/03/02(火) 00:22:05.89ID:NQgDi+il >>971
行数制限に引っかかったので分割します。
@は引数〇個、パラメーター名foo、パラメーターfooの数、fooが1個以上(0はだめ)というのをチェックしたいです。
なにとぞよろしくお願いいたします。
行数制限に引っかかったので分割します。
@は引数〇個、パラメーター名foo、パラメーターfooの数、fooが1個以上(0はだめ)というのをチェックしたいです。
なにとぞよろしくお願いいたします。
973デフォルトの名無しさん
2021/03/02(火) 10:00:39.98ID:TaWWQOJL >>972
about_Functions_Advanced_Parameters
https://docs.microsoft.com/ja-jp/previous-versions/windows/powershell-scripting/hh847743(v=wps.640)
about_Functions_Advanced_Parameters
https://docs.microsoft.com/ja-jp/previous-versions/windows/powershell-scripting/hh847743(v=wps.640)
974デフォルトの名無しさん
2021/03/02(火) 23:49:57.97ID:NQgDi+il975デフォルトの名無しさん
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 に渡される
特にオプションを指定しなければ、複数の引数を設定すれば空白区切りで渡せる
>>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 に渡される
特にオプションを指定しなければ、複数の引数を設定すれば空白区切りで渡せる
976デフォルトの名無しさん
2021/03/12(金) 15:14:39.63ID:VgGpSMHu PowerShell起動すると毎回更新しろって出るのがウザくて7入れてみたけど起動時の立ち上がりが遅くなって切れそう
しかも結局help云々が毎回出るし
MS頭おかしいんでねーの
しかも結局help云々が毎回出るし
MS頭おかしいんでねーの
977デフォルトの名無しさん
2021/03/12(金) 19:40:18.23ID:gsxqF2ed おバカ自慢要らね
978デフォルトの名無しさん
2021/03/13(土) 10:00:11.18ID:fu8qQk1O979デフォルトの名無しさん
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っぽい書き方があったら教えてください
あるサービスの実行状態を知るために、こういうことをしてるんですが、
(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
ワンライナーにこだわっているのか?
ワンライナーにこだわっているのか?
981デフォルトの名無しさん
2021/03/13(土) 15:31:11.30ID:33EHGK5P Ruby の3項演算子みたいなものは無いの?
真偽値となる条件式 ? 真の時の値 : 偽の時の値
真偽値となる条件式 ? 真の時の値 : 偽の時の値
982デフォルトの名無しさん
2021/03/13(土) 15:36:01.07ID:ErfpRTBJ (gsv adobe*).status -contains 'running'
983デフォルトの名無しさん
2021/03/13(土) 15:48:12.79ID:Qa5+c/Kf >>979
[int][bool](Get-Service | Where-Object {($_.Name -Match 'Adobe') -and ($_.Status -Match 'Running')})
[int][bool](Get-Service | Where-Object {($_.Name -Match 'Adobe') -and ($_.Status -Match 'Running')})
984デフォルトの名無しさん
2021/03/13(土) 20:59:36.95ID:3roljCwu985デフォルトの名無しさん
2021/03/14(日) 15:40:02.21ID:am3+IzSP PowerShellは処理の方法が多くていいな
986デフォルトの名無しさん
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' の引数変換を処理できません。引数には参照型を指定する必要があります。
何が悪いん?ググっても見つけられなくてさっきから悩んでる(汗
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' の引数変換を処理できません。引数には参照型を指定する必要があります。
何が悪いん?ググっても見つけられなくてさっきから悩んでる(汗
987デフォルトの名無しさん
2021/03/14(日) 21:55:49.94ID:8nGQn8Lf 括弧とカンマいらないのでは
988デフォルトの名無しさん
2021/03/14(日) 22:41:43.33ID:T+RcbFBu f ([ref]$h) $s
989デフォルトの名無しさん
2021/03/14(日) 23:07:21.02ID:8YYOAayf990デフォルトの名無しさん
2021/03/15(月) 15:30:15.42ID:2OtrSpOH カッコとカンマで引数渡すのはオブジェクトのメソッドの時だけだね
関数はスペース区切りで渡す
これは文法だから理由はない
関数はスペース区切りで渡す
これは文法だから理由はない
991デフォルトの名無しさん
2021/03/15(月) 16:45:16.26ID:bRJV5TtK 1, 2 で配列作っちゃうようにしちゃったからねぇ
記法がシェルスクリプトとプログラム言語のあいの子みたいになってるからちょっと直感に反する所がちらほら見え隠れするのはしょうがない
記法がシェルスクリプトとプログラム言語のあいの子みたいになってるからちょっと直感に反する所がちらほら見え隠れするのはしょうがない
992デフォルトの名無しさん
2021/03/16(火) 23:02:58.87ID:Bd62bkLQ993デフォルトの名無しさん
2021/03/17(水) 08:00:24.75ID:EzeD0xtp 俺がPowerShellを気に入ったのはPerlと同じ匂いを感じたからだ
994デフォルトの名無しさん
2021/03/17(水) 08:19:50.03ID:vnLGIRIV しかしPerlではないのがいいところ
995デフォルトの名無しさん
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.
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.
996デフォルトの名無しさん
2021/03/17(水) 11:52:58.50ID:eAjGywmP interactive性は'標準で'エイリアスが定義されてることで十分満足してる
997デフォルトの名無しさん
2021/03/18(木) 00:08:54.40ID:t06qOp3P PerlとPythonは文字に対するencode, decodeの意味が逆。まめな
998デフォルトの名無しさん
2021/03/18(木) 00:30:47.74ID:/MpReTiX999デフォルトの名無しさん
2021/03/18(木) 00:39:40.12ID:3weRgygV >>998
ナイス滑り込み
ナイス滑り込み
1000デフォルトの名無しさん
2021/03/18(木) 01:34:48.09ID:dIgskCmL 質問良いですか
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 441日 9時間 26分 17秒
新しいスレッドを立ててください。
life time: 441日 9時間 26分 17秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 [ぐれ★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★3 [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 中国高官と話す外務省局長の表情、やばい ★2 [175344491]
- ラーメン屋「日高屋が安いせいで客が来ない!日高屋はもっと値上げしろ!」 [449534113]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 本日開催の人口戦略本部に安倍晋三が出席😲 生きとったんかワレ [884040186]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
