PowerShell -Part 4

■ このスレッドは過去ログ倉庫に格納されています
2020/01/01(水) 16:08:31.66ID:4oQ1Kxot
前スレ
PowerShell -Part 3
https://mevius.5ch.net/test/read.cgi/tech/1539074808/

次スレは>>980が立ててね!!
2020/01/12(日) 04:03:14.54ID:Wu3j+6b0
70デフォルトの名無しさん
垢版 |
2020/01/12(日) 04:22:58.37ID:Uj5X0q1W
設定ファイルがスクリプトということに何も疑問を持たなかったんだろかと思うことはある。
2020/01/12(日) 05:11:45.93ID:Hfpc94Xd
知らんがな
linux板でやれよ

Linux
http://mao.5ch.net/linux/
72デフォルトの名無しさん
垢版 |
2020/01/12(日) 09:20:24.49ID:Uj5X0q1W
Linux板は荒らししかいないし、末期のウェブ板やPHP板みたいになってる。
まともな住人はここに移住してきても良いよね?
ウェブ板やPHP板も移住してるんだし。
73デフォルトの名無しさん
垢版 |
2020/01/12(日) 09:21:14.45ID:Uj5X0q1W
Linux板は志賀何とかさんのことを語る板になってしまった。
2020/01/12(日) 10:59:33.84ID:FbSdnFnB
まさかとは思うがツールというのはGUIのことだろうか
PowerShellスレでCUIよりもGUIが無条件に優れているという話をしているのだろうか

スレチを自己正当化する理由が、然るべきスレが機能不全を起こしてるから行きたくないと?
しつこいスレチがここに機能不全を招くとは思わないのだろうか

前スレに続いての「WSLでよくね」なんて明らかに反応を楽しむ愉快犯なのに、まんまとLinuxのほうが残念だもん!って
いいかげん落ち着いてくれよ
2020/01/12(日) 18:25:07.68ID:6gxIPrAU
>>72
お前はスレタイを100回読み直せ
76デフォルトの名無しさん
垢版 |
2020/01/12(日) 19:02:16.18ID:Uj5X0q1W
bash最高って書いてあるけど。
77デフォルトの名無しさん
垢版 |
2020/01/12(日) 21:27:38.66ID:gh55rPFY
>>74
>まさかとは思うがツールというのはGUIのことだろうか

なわけないよ。
要は今は良くなってきているが
シェル言語なないと処理できないようなのがUnix系の世界
だったということ
ほかにろくなものないから
78デフォルトの名無しさん
垢版 |
2020/01/12(日) 22:41:27.46ID:gh55rPFY
ま、そりゃいいか。
PowerShellを語る板だから
ごめん。
PowerShellの話に戻します。
2020/01/13(月) 13:13:43.40ID:GhUCXbF0
意味不明。結局、CUIでない、GUIでもない"ツール"とはいったい何だったのか
2020/01/16(木) 08:46:49.48ID:wD5IBL5x
テキストユーザインタフェース
https://ja.wikipedia.org/wiki/%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%A6%E3%83%BC%E3%82%B6%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9
81デフォルトの名無しさん
垢版 |
2020/01/28(火) 00:59:10.36ID:b7mfcqCA
刻々と変化する変数をフォームに表示させたいんだけど
当然この例だと実行した時点での変数しか表示されません。
フォームのラベルの変数を動的に表示し続ける方法を教えてください(この例だと時計のように動かしたい)

$time = Get-Date
Add-Type -AssemblyName System.Windows.Forms
$form = New-Object System.Windows.Forms.Form
$label = New-Object System.Windows.Forms.Label
$label.Text = $time
$form.Controls.Add($label)
$form.ShowDialog()
2020/01/28(火) 02:09:43.73ID:Vj4Y99PX
タイマーイベントとかあるじゃろ
C#タイマーあたりでぐぐれ
2020/01/28(火) 05:27:11.17ID:gua2EZr0
正確な時間じゃなくても良いなら、Ruby なら、sleep で簡単にできる。
ただし、OS がバッファリングしてると、最後にまとめて出力されてしまう!

STDOUT.sync = true # バッファリングしない

3.times do
puts Time.now
sleep 3
end
2020/01/28(火) 08:59:06.21ID:CfcUNbbY
フォーム要素はどこに行った
2020/01/28(火) 19:45:19.95ID:xyAuIeAM
>>81
別スレッドで非同期にフォームを起動すればいい

using namespace System.Windows.Forms
using assembly System.Windows.Forms

$label = [Label]@{ Dock = "Fill"; Font = "Meiryo,20" }
$form = [Form]@{ Size = "350,100" }
$form.Controls.Add($label)

$runspace = [RunspaceFactory]::CreateRunspace()
$runspace.Open()
$pipeline = $runspace.CreatePipeline()
$pipeline.Commands.AddScript({ param ($form) $form.ShowDialog() })
$pipeline.Commands[0].Parameters.Add("form", $form)
$pipeline.InvokeAsync()

foreach ($p in 1..10) {
  if ($Runspace.RunspaceAvailability -ne "Busy") { break }
  $time = [datetime]::Now
  $label.Text = $time
  sleep 1
}

if ($Runspace.RunspaceAvailability -eq "Busy") { $form.Close() }
$runspace.Dispose()
2020/01/30(木) 19:49:29.15ID:dJd/g4Kb
>>85
すげー一気に解決したわ
Runspaceとか知らんよありがと
2020/02/01(土) 09:36:54.77ID:tNoLSDZ1
v6.2.4
https://github.com/PowerShell/PowerShell/releases/tag/v6.2.4
2020/02/01(土) 10:30:55.09ID:escHc8OK
PowerShel で凝ったことやろうとすると、どうしても C# の知識が必要になるよな。
おかげで、C# を勉強する良いきっかけになったわ。スキルの幅が広がるのは嬉しい。
2020/02/01(土) 11:42:52.32ID:S54SgdVf
C#スキル?
.net frameworkの知識じゃなくて?
2020/02/01(土) 21:57:28.51ID:KsqMKxaU
C#全く使えん奴は凝ったことすら思いつかないのでは
2020/02/01(土) 22:22:36.87ID:QN2fVxGF
$label = [Label]@{ Dock = "Fill"; Font = "Meiryo,20" }
という式を初めて見て驚いてるんだけど、これについてのドキュメントってどこかにありますか?
2020/02/01(土) 23:27:18.65ID:1A0Wf54C
>>91
PowerShell 3からの機能
クラスが引数を取らないコンストラクタを持っていて、プロパティがパブリックでset可能なら使える

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_hash_tables?view=powershell-7#creating-objects-from-hash-tables
2020/02/02(日) 11:46:03.71ID:9GpNdTap
>>92
ありがとう
だいぶ楽になった

こういうの知ってる人ってMSDNのヘルプに全部目を通してるの?
2020/02/04(火) 17:22:37.51ID:Rq+qX9o+
オブジェクト志向ライクでいいんだけど、
powershellへbatやVBSから置き換えようとすると機能によってはバージョンチェックをしないといけないのがもどかしい
.NETにしろそうなんだけどね
2020/02/04(火) 20:42:27.29ID:uL6VAIkG
ご教示ください。
商品の価格を定期的にWebサイトから取得したいのですが、Invoke-WebRequestで取得したHtmlWebResponseObjectから要素の内の文字列を取り出そうとすると「Windows セキュリティの警告」のポップアップが表示されてしまいます。
ポップアップを出さずに要素の内の文字列を取得するにはどうすればよいでしょうか?

$response = Invoke-WebRequest -uri "https://www.yodobashi.com/product/100000001002955686/";
$price = $response.ParsedHtml.getElementById("js_scl_unitPrice").innerText

これを実行すると「この Web サイトから個人用の情報を提供できるように、Cookie と呼ばれる小さなファイルをこのコンピューターに配置できるようにしますか?」と表示されます。
2020/02/04(火) 21:00:56.36ID:sy7Lzsaq
なんでPSで?・・・
2020/02/04(火) 22:40:04.72ID:tW1M7Be/
cookie powershellでぐぐればやり方は出てくる
javascriptとか出てきたら素直にseleniumを使う
seleniumをpowershellで使う方法もある
2020/02/07(金) 03:46:32.51ID:eL08TT0Y
DateTimePickerで翌日の日付をデフォルト選択する方法ありませんか?
2020/02/07(金) 06:17:27.09ID:Ec63bSXx
[DateTimePicker]@{ Value = [datetime]::Now.AddDays(1) }
2020/02/07(金) 17:42:43.13ID:eL08TT0Y
>>99
できましたサンクス!
2020/02/09(日) 17:36:01.93ID:7dfvQcUC
同スクリプト重複実行抑止する場合
皆さんどうしてますか?
pid書き出し?Mutex?
2020/02/09(日) 19:33:00.88ID:9UBXd1bi
mutex
2020/02/10(月) 12:17:46.17ID:f4vRyC3Z
コールバック関数ってpowershellで可能ですか?
2020/02/10(月) 12:24:25.91ID:8uBZGbTk
可能ですよ
2020/02/10(月) 14:42:20.49ID:OVbm/XKG
どうやるのですか?
2020/02/10(月) 15:13:30.85ID:8uBZGbTk
スクリプトブロックを渡すか、関数なら
$function:関数名
で渡す
実行は & でやるのが基本で他にもいろいろ方法がある
2020/02/10(月) 18:46:32.72ID:D64OFTKi
スクリプトからフォームをshowメソッドで表示すると固まってしまい、
showDialogメソッドで表示すると操作できるようになります。
例えばモーダルフォームを表示した親フォームが固まるのは分かるのですが、
呼び出したモードレスフォームが固まってしまうのは何故なのでしょうか。
2020/02/10(月) 21:56:58.62ID:RZngPC6l
103です。
実はコールバック関数が何かもよく理解してませんが、
以下URL先の
$sslStream = New-Object System.Net.Security.SslStream($stream,$false,({$True} -as [Net.Security.RemoteCertificateValidationCallback]))
の第三引数がコールバック関数でしょうか?
このやり方を理解したくて。
https://stackoverflow.com/questions/19252963/powershell-ssl-socket-client
2020/02/11(火) 13:53:02.82ID:iYccZVyV
コールバックはこの説明が分かりやすい
https://wa3.i-3-i.info/word12295.html

Powershellだと「スクリプトブロック」というコードを { } で括った物がコールバック関数として使える
引数として直接書いてもいいし、一度変数に代入して変数を引数に渡してもいい
{$True} という部分がそれ

でも今回は「スクリプトブロック」じゃなくて「RemoteCertificateValidationCallback」でと指定されている
三つ目のコンストラクタの引数の型に注目
https://docs.microsoft.com/ja-jp/dotnet/api/system.net.security.sslstream?view=netframework-4.8#constructors

なので -as 演算子で型変換をしてる
2020/02/11(火) 14:24:03.53ID:AAFADizG
とりあえず、引数がご飯で戻り値がウンコと言う事だけはわかった。
2020/02/11(火) 15:25:48.37ID:LmagV5MS
>>107
win32APIでウィンドウ作ったりしたことなかったら分からないかもしれないけどざっくり言うと
ウィンドウがOSからのメッセージ(マウスがクリックされたとか、ボタンが押されたとか)
を処理するにはOSからのメッセージをウィンドウに知らせてやる必要がある(メッセージループ)
ShowDialogはその辺をよしなにやってくれる
112デフォルトの名無しさん
垢版 |
2020/02/15(土) 04:04:02.58ID:Nij30Obe
>>111
ありがとうございます。

モーダルがどうのこうのというよりも、
Showコマンドだとクリックなどの命令を受け付けないという感じでしょうか
2020/02/15(土) 08:45:46.45ID:Ba23wrvp
>>109
103です。ありがとうございます。なんとなくわかったような気がしますが、自分には.netクラスライブラリのリファレンスマニュアル読めるほどのオブジェクト指向プログラムの知識が足りてないようです。

powershellでちょっと小難しい事しようと思うといつもこの壁にぶち当たります。
2020/02/15(土) 09:54:27.30ID:/QpUFa9s
>>112
デバッガで実行ステップを追う感覚で捉えると分かりやすいよ
Powershellのようなコンソールアプリって基本シングルスレッドで、上から下に処理が流れて最後まで行ったら終わりでしょ
Showメソッドは表示するだけ
ShowDialogと違って閉じるのを待たずに呼び出し元に処理を戻すから、メインスレッドはすぐに続きのスクリプト処理を再開してしまう
ウィンドウっていつでもユーザーのマウス操作に反応できて、閉じられるまでは処理が終わらないよね
それは無限ループを回し続けて、マウス操作のような指令が来るまでキューを調べて待つ体制に入ってるから
その仕事を直接的にも間接的にもやってないならウインドウはだんまりになって当然
結論、コンソールアプリから最初に呼び出すウィンドウはモーダル表示にすべし
2020/02/16(日) 00:31:35.72ID:EHy9IoT2
>>114
ありがとうございます
スッキリしました

よくC#でShowDialogで表示した時はDisposeを呼ばないとダメと言いますが、
これもイベントループを作るのか作らないかの差なのでしょうか
また、PowerShellでもDisposeした方がいいのでしょうか
2020/03/05(木) 08:17:58.34ID:Lxf+ynQs
Announcing PowerShell 7.0
https://devblogs.microsoft.com/powershell/announcing-powershell-7-0/

Today, we’re happy to announce the Generally Available (GA) release of PowerShell 7.0!
2020/03/06(金) 04:35:17.20ID:fNVi1eTS
インストーラで出てくるスパイダーマンのパチモンみたいなの何なの
2020/03/06(金) 05:16:26.33ID:hxBXwa2S
Overwatchのソンブラにそっくりだけどパクったのか?
2020/03/06(金) 09:18:25.45ID:jyEHwxlL
https://blog.shibata.tech/entry/2017/10/14/153510

このキャラクターはあまり認知度は高くないと思いますがPowerShell公式のキャラクターです。

名前はそのまま PowerShell の様です。(よくある言語の擬人化なのでしょう)
中の人からはPowerShell HeroやPosh-Chan*2と呼ばれている様です。

いまではPowerShell TeamのTwitterアイコンにも採用されています。
2020/03/06(金) 11:37:23.38ID:B7JE7mx4
>>116
キタ━━━━(゚∀゚)━━━━!!
2020/03/06(金) 16:45:05.11ID:EUcOgnT/
PowerShellの本増えないかなー
日本でももう少し流行ってほしい
2020/03/06(金) 17:17:48.60ID:mKExt1TS
>>121
Windows が関係するインフラ系の管理ではデファクトだと思ってたけど違うんかい?

自分はインフラ系の仕事が多いんだけど、MS 製品は言うに及ばず、
VMware、AWS、HPE の設定とか構築で使うためのモジュールが用意されてるんで、
そっち系の人は全員使ってるのかと思ってた。

今関わってる案件だと客先で用意された作業用 PC でも PowerCLI は
入れさせてもらえるんで、VMware の構築&設定が超絶はかどってすごく助かってる。
2020/03/06(金) 19:23:36.96ID:EUcOgnT/
>>122
IT系ですらない製造業の人間なので、インフラとかよく知らんです
CSVファイルとか扱う定型業務でVBAの代わりに流行らないかなーと思ってる
会社PCに標準で入ってるのが何よりありがたい
たまたまC#の経験あるからPowerShellが使いやすく感じるだけなのかもしれんけど
VBAは古すぎるし、文化が違いすぎて好きになれない…
2020/03/06(金) 22:15:50.08ID:mKExt1TS
>>123
確かに、RPA 的な用途にも使えるわね。

そう言われてみれば、IT プロ向けの PowerShell の資料は山ほどあるけど、
エンドユーザの業務効率化に的を絞った資料ってあまり聞かないね。

エンドユーザが手作業でやってる定型業務を PowerShell +αで
自動化/半自動化する事例を紹介する資料を作れば需要ありそう。
2020/03/07(土) 20:55:12.96ID:yZMlhieX
Windows以外でもGridViewが使える

A new kind of GridView right in your console: Introducing the early preview of ConsoleGuiTools
https://devblogs.microsoft.com/powershell/introducing-consoleguitools-preview/
2020/03/09(月) 17:26:48.99ID:BZZ4ItAR
パワーシェルでテキストファイルを一行ずつ読み取って環境変数化するのはどうやるんでしょうか?

バッチファイルだと簡単にできるのにパワーシェルだと難しい
イメージ的にはこんなことをパワーシェルでやりたいです
for /f %%a “usebackq” in (./testfile.txt) do (
set testenv=%%a
echo !testenv!
)
2020/03/10(火) 14:15:31.74ID:qUF7p1Fi
こーゆー感じのことやりたいのか?

cat .\testfile.txt | %{ $env:testenv = $_; $env:testenv }
2020/03/10(火) 14:32:38.22ID:j2kTK4tI
>>126
Get-Content -Path .\TextFile.txt | ForEach-Object -Process { $env:TestVar = $_ }

もしくは
$ContentData = Get-Content -Path .\TextFile.txt
foreach ($LineData in $ContentData) {
$env:TestVar = $LineData
}

こんな感じじゃないかな
知らんけど

グローバルな環境変数への代入はどうするのかな?
2020/03/11(水) 20:45:46.50ID:lIDu6EwW
>>128
上の方の感じでできました!ありがとうございます

グローバルな環境変数とはなんですか?
2020/03/11(水) 20:47:48.33ID:lIDu6EwW
あ、システム環境変数のことですか
シェルスクリプト内の一時環境変数?で良いのです
2020/03/13(金) 14:02:44.23ID:MwEg+WGB
javawみたいな感じで、スクリプト実行時にコマンドプロンプトを出さない方法はありませんか?1ファイルで。
ショートカットやvbs等の2ファイル使う方法なら解ってます。
2020/03/13(金) 15:02:17.45ID:VpgJT114
まだ開発中

WIP: Add pwshw for console-less PowerShell on Windows
https://github.com/PowerShell/PowerShell/pull/10962
2020/03/13(金) 15:27:21.47ID:e1b5/B0w
↑そのpwshwが取り込まれるまでは、↓を自前でビルドして自作pwshwなり、powershellwなりを作ることもできるよ
https://github.com/SeidChr/RunHiddenConsole
ビルドしてできたhiddenw.exeをリネームして使うだけ
2020/03/13(金) 19:15:38.63ID:cafRoH7X
>>131
1,まず、.ps1 で動作するスクリプトを作る
2,1を BASE64 でエンコード
3,powershell.exe にオプション -EncodedCommand と 2をつないで実行
4,3を .cmd (.bat) に書く

詳細は「powershell EncodedCommand」みたいな感じでググればいいでしょう。
1351134
垢版 |
2020/03/13(金) 19:18:46.13ID:cafRoH7X
>>131
すまん、コマンドプロンプトを出さずに、か。勘違いしてました。
>>134 は取り下げます。
2020/03/14(土) 10:34:16.74ID:3Jd+nG/t
exe化するやつにそんなオプションがあったと思う
137デフォルトの名無しさん
垢版 |
2020/03/15(日) 16:23:53.40ID:ake3THHi
Windows PowerShell in Action、900ページあるけど面白かった
次はPowerShell fo Sysadmins読もうかな
2020/03/15(日) 23:09:18.13ID:b9Qsc7j/
python.exe / pythonw.exe や ruby.exe / rubyw.exe の違いでよく悩むのでまとめておく

https://blog.shibayan.jp/entry/20141221/1419171414
2020/03/16(月) 21:24:16.40ID:vD0R4SAm
>>133
さいこー。ありがとう
140デフォルトの名無しさん
垢版 |
2020/03/20(金) 21:08:31.06ID:hI9v4wSz
win10 バージョン5.1
Invoke-RestMethodの"-body"にjsonを入れる方法を教えてほしい
google photos apiで日付を指定して一覧を取得したい
ubuntu + curlで
curl -s -X POST -H "Authorization: Bearer " -H "Content-type: application/json"
-d '{"filters":{"dateFilter": {"dates":[{"year":2019,"month":11,"day":15}]}}}'
https://photoslibrary.googleapis.com/v1/mediaItems:search
これだと取得出来るんだけど

powershellで
$header = @{"Authorization" = "Bearer "};
$body = '{"filters":{"dateFilter": {"dates":[{"year":2019,"month":11,"day":15}]}}}';
Invoke-RestMethod -Uri https://photoslibrary.googleapis.com/v1/mediaItems:search
-Method Post -Headers $header -Body $body ;

(400) 要求が不適切ですでエラーになる
たぶんbodyの入れ方が悪いだと思うんだけど

アルバムIDの絞り込みだったら
$body=@{
"albumId"="id"
}
で取得出来た
2020/03/20(金) 23:34:49.75ID:fNo2jQuJ
-ContentType "application/json" を付けるか
もしくは全部ヘッダに入れる

$accessToken = "your access token"
$uri = "https://photoslibrary.googleapis.com/v1/mediaItems:search";

$response = Invoke-RestMethod $uri -Method Post -Headers @{
  Authorization = "Bearer $accessToken"
  Filters = @{
    DateFilter = @{
      Dates = @{ Year = 2016; Month = 3; Day = 1 }
    }
  }
}
2020/03/21(土) 00:10:00.03ID:AKmTgF3+
ごめんやっぱBodyに入れないといけない

$body = @{
  filters = @{
    dateFilter = @{
      dates = @(@{ year = 2019; month = 11; day = 15 })
    }
  }
} | ConvertTo-Json -Depth 100

$param = @{
  Uri = $uri
  Method = "Post"
  Headers = @{ Authorization = "Bearer $accessToken" }
  Body = $body
  ContentType = "application/json"
}
$response = Invoke-RestMethod @param
143デフォルトの名無しさん
垢版 |
2020/03/21(土) 00:24:48.78ID:WepcD5N+
>>141
>>142
なるほど、curlの"Content-type: application/json"の部分を指定してやらんといかんかったのか。
そしてちょっとあきらめてた連想配列も提示してもらっちゃって
超ありがとうございました。
ばっちり動いたっす
2020/03/21(土) 09:18:44.54ID:AEZYARkU
PowerShell 7.0 の新機能
https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/what-s-new-in-powershell-70
2020/03/21(土) 09:34:19.00ID:Nklv0DXu
VSCode の拡張機能、REST Client が簡単!

POST http://localhost:8888/abc HTTP/1.1
content-type: application/json

{
"name": "abc",
"time": "時刻"
}
2020/03/21(土) 10:02:37.23ID:+Hs4SQrc
>>144
・パイプラインの並列化 (ForEach-Object -Parallel を使用)
これいいな
147デフォルトの名無しさん
垢版 |
2020/03/21(土) 17:39:49.06ID:vJ0Lurek
Windows PowerShell in Actionの改3版、日本語訳してくれないかなぁ…
2020/03/23(月) 10:55:55.25ID:wpOCnP6k
パイプラインを繋げる先を条件で分岐って可能ですか?
イメージとしては

Get-Nantoka |
Switch ($_.Name)
Case ('A') | Get-NantokaA
Case ('B') | Get-NantokaB
Case ('C') | Get-NantokaC

な感じです
2020/03/23(月) 22:15:40.05ID:nB8lN/u6
さすがにそんなシンタックスはないが同じような動作はできる

$continuation = @{
  A = { select Name,Age | Write-Host -f Cyan }.GetSteppablePipeline()
  B = { select Name,Gender | Write-Host -f Magenta }.GetSteppablePipeline()
  C = { select Name | Write-Host -f Yellow }.GetSteppablePipeline()
}
$continuation.Values.ForEach("Begin", $true)

@"
Name,Age,Gender
A,12,Male
C,93,Female
B,32,Male
A,52,Female
C,73,Female
"@ | ConvertFrom-Csv | foreach { $continuation[$_.Name].Process($_) }

$continuation.Values.ForEach("End")
2020/03/24(火) 02:11:10.59ID:1omVAMXs
結局処理を別々に書かなきゃいけないなら書いてる通りswitch文でいいんじゃねって気はする
2020/03/24(火) 12:26:04.21ID:/23EZweg
switch文だと毎回新規にGetNantokaAとかが呼ばれてしまうため例えばGetNantokaAがMeasure-Objectだと意味がなくなる
2020/03/24(火) 13:30:06.69ID:n2AHJDo3
>>149
ありがとうございます
やっぱり分岐先を埋めたオブジェクトや関数を作らなきゃいけない感じですね

いま、もしかして上にある「パイプラインの並列化」って分岐の事じゃね?と思ったのだが違うのかな
2020/03/24(火) 16:14:53.92ID:/23EZweg
>>152
> いま、もしかして上にある「パイプラインの並列化」って分岐の事じゃね?と思ったのだが違うのかな
同じルーチンが複数同時に走るってことだとと思う
排他制御とか順序の保証とかがどうなってるのかが気になる
2020/03/24(火) 19:15:33.49ID:n2AHJDo3
>>153
オブジェクトをパイプライン上に並列で走らせるって事?
非同期通信的な・・・
2020/03/24(火) 19:46:16.61ID:1omVAMXs
>>151
あーそれでわざわざGetSteppablePipeline使ってるのね
2020/03/24(火) 21:24:12.31ID:LC2xv/4E
>>149が何やってるのかサッパリ
GetSteppablePipelineでぐぐっても日本人はほとんど存在士らないのかなって具合
2020/03/24(火) 22:44:37.71ID:VBWCR/ci
ScriptBlock.GetSteppablePipeline Method
https://docs.microsoft.com/en-us/dotnet/api/system.management.automation.scriptblock.getsteppablepipeline
2020/03/24(火) 23:52:12.51ID:LC2xv/4E
>>149の最初の連想配列作ってるとこは判る
問題は次
>$continuation.Values.ForEach("Begin", $true)
これ何してるの?
Values.ForEachて。
こんな書き方でSteppablePipelineのBeginメソッドが呼べるの?
C言語の配列で"A"[0]みたいなトリッキーさを連想させるのだが
2020/03/25(水) 03:41:09.46ID:IDfpoHeN
.ForEachはメソッド形式のForeach-Objectで、要するにC#のLINQをPowerShell風にアレンジした何か
どっちかというと.ForEach({ ..... }) みたいにスクリプトブロックを渡す使い方が主流だと思うけど、メソッド名を文字列で渡してオブジェクトのメソッドを呼び出すこともできる

ステッパブルパイプラインは任意のパイプライン(文)をメソッド形式で呼び出せるようにするための何か
渡された引数を先頭のコマンドにパイプして実行させることができる
2020/03/25(水) 18:56:02.32ID:8IWtSBvh
powershellで2つのファイルの差分のみを抜き出して追加や削除されたものは別ファイルに出力したいです
例えば

fileA.txt
aaa
uuu
iii

fileB.txt
iii
uuu
eee

とあった場合にfileBをマスタとしてaaaの文字列をdelete.txtにeeeの文字列をadd.txt出力したいです。
やり方教えてください!
2020/03/25(水) 19:05:36.15ID:D/1vKEW+
素人ですまんけど、
$test0 = "a", "b", "c"
$test1 = $test0[1]
こういった時に、$test0のbを同時に削除する書き方はありますか?別途処理を書く必要あり?
2020/03/26(木) 00:05:42.98ID:fIJkkKI3
>>160
function Marge([object[]]$Adds,[object[]]$Deletes){
$Adds|Where-Object{$_ -notin $Deletes}
}
Marge $(Get-Content fileB.txt) $(Get-Content fileA.txt) > add.txt
Marge $(Get-Content fileA.txt) $(Get-Content fileB.txt) > delete.txt
2020/03/26(木) 00:09:27.46ID:fIJkkKI3
>>161
bを削除という条件なら

$test0 = "a", "b", "c"
$test1 = ($test0 -ne "b")[1]

-ne演算子は左オペランドがコレクションの場合、差分を返す
2020/03/26(木) 00:14:14.98ID:fIJkkKI3
-ne演算子の場合は大小比較をしないので注意
もし比較する場合は>>162のように-notin演算子とWhere関数でフィルタする
2020/03/26(木) 08:51:19.38ID:BddTdfqa
>>162
ありがとうございます
Mergeって関数の中で処理している感じですね
詳細な処理の内容は理解していないので調べつつやってみます!
2020/03/28(土) 02:03:33.90
scoop の魅力
2020/03/30(月) 02:08:56.05ID:VM+VSYRD
> $a = try{get-content data.txt}catch{@()}
> $a = if(3 -ne 4){11}else{22}
ダメ元で試してみたらこんな書き方出来たのかよ
2020/03/30(月) 07:08:11.36ID:PN3/f/57
うん、だから三項演算子入れないでほしかった
なんでわざわざ評判微妙な記法を取り入れたんだろ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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