1 名前:デフォルトの名無しさん mailto:sage [2020/01/01(水) 16:08:31.66 ID:4oQ1Kxot.net] 前スレ PowerShell -Part 3 https://mevius.5ch.net/test/read.cgi/tech/1539074808/ 次スレは>>980 が立ててね!!
152 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 12:26:04.21 ID:/23EZweg.net] switch文だと毎回新規にGetNantokaAとかが呼ばれてしまうため例えばGetNantokaAがMeasure-Objectだと意味がなくなる
153 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 13:30:06.69 ID:n2AHJDo3.net] >>149 ありがとうございます やっぱり分岐先を埋めたオブジェクトや関数を作らなきゃいけない感じですね いま、もしかして上にある「パイプラインの並列化」って分岐の事じゃね?と思ったのだが違うのかな
154 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 16:14:53.92 ID:/23EZweg.net] >>152 > いま、もしかして上にある「パイプラインの並列化」って分岐の事じゃね?と思ったのだが違うのかな 同じルーチンが複数同時に走るってことだとと思う 排他制御とか順序の保証とかがどうなってるのかが気になる
155 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 19:15:33.49 ID:n2AHJDo3.net] >>153 オブジェクトをパイプライン上に並列で走らせるって事? 非同期通信的な・・・
156 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 19:46:16.61 ID:1omVAMXs.net] >>151 あーそれでわざわざGetSteppablePipeline使ってるのね
157 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 21:24:12 ID:LC2xv/4E.net] >>149 が何やってるのかサッパリ GetSteppablePipelineでぐぐっても日本人はほとんど存在士らないのかなって具合
158 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 22:44:37.71 ID:VBWCR/ci.net] ScriptBlock.GetSteppablePipeline Method https://docs.microsoft.com/en-us/dotnet/api/system.management.automation.scriptblock.getsteppablepipeline
159 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 23:52:12.51 ID:LC2xv/4E.net] >>149 の最初の連想配列作ってるとこは判る 問題は次 >$continuation.Values.ForEach("Begin", $true) これ何してるの? Values.ForEachて。 こんな書き方でSteppablePipelineのBeginメソッドが呼べるの? C言語の配列で"A"[0]みたいなトリッキーさを連想させるのだが
160 名前:デフォルトの名無しさん mailto:sage [2020/03/25(水) 03:41:09 ID:IDfpoHeN.net] .ForEachはメソッド形式のForeach-Objectで、要するにC#のLINQをPowerShell風にアレンジした何か どっちかというと.ForEach({ ..... }) みたいにスクリプトブロックを渡す使い方が主流だと思うけど、メソッド名を文字列で渡してオブジェクトのメソッドを呼び出すこともできる ステッパブルパイプラインは任意のパイプライン(文)をメソッド形式で呼び出せるようにするための何か 渡された引数を先頭のコマンドにパイプして実行させることができる
161 名前:デフォルトの名無しさん mailto:sage [2020/03/25(水) 18:56:02.32 ID:8IWtSBvh.net] powershellで2つのファイルの差分のみを抜き出して追加や削除されたものは別ファイルに出力したいです 例えば fileA.txt aaa uuu iii fileB.txt iii uuu eee とあった場合にfileBをマスタとしてaaaの文字列をdelete.txtにeeeの文字列をadd.txt出力したいです。 やり方教えてください!
162 名前:デフォルトの名無しさん mailto:sage [2020/03/25(水) 19:05:36 ID:D/1vKEW+.net] 素人ですまんけど、 $test0 = "a", "b", "c" $test1 = $test0[1] こういった時に、$test0のbを同時に削除する書き方はありますか?別途処理を書く必要あり?
163 名前:デフォルトの名無しさん mailto:sage [2020/03/26(木) 00:05:42 ID:fIJkkKI3.net] >>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
164 名前:デフォルトの名無しさん mailto:sage [2020/03/26(木) 00:09:27 ID:fIJkkKI3.net] >>161 bを削除という条件なら $test0 = "a", "b", "c" $test1 = ($test0 -ne "b")[1] -ne演算子は左オペランドがコレクションの場合、差分を返す
165 名前:デフォルトの名無しさん mailto:sage [2020/03/26(木) 00:14:14 ID:fIJkkKI3.net] -ne演算子の場合は大小比較をしないので注意 もし比較する場合は>>162 のように-notin演算子とWhere関数でフィルタする
166 名前:デフォルトの名無しさん mailto:sage [2020/03/26(木) 08:51:19.38 ID:BddTdfqa.net] >>162 ありがとうございます Mergeって関数の中で処理している感じですね 詳細な処理の内容は理解していないので調べつつやってみます!
167 名前:デフォルトの名無しさん mailto:sage [2020/03/28(土) 02:03:33 .net] scoop の魅力
168 名前:デフォルトの名無しさん mailto:sage [2020/03/30(月) 02:08:56 ID:VM+VSYRD.net] > $a = try{get-content data.txt}catch{@()} > $a = if(3 -ne 4){11}else{22} ダメ元で試してみたらこんな書き方出来たのかよ
169 名前:デフォルトの名無しさん mailto:sage [2020/03/30(月) 07:08:11.36 ID:PN3/f/57.net] うん、だから三項演算子入れないでほしかった なんでわざわざ評判微妙な記法を取り入れたんだろ
170 名前:デフォルトの名無しさん mailto:sage [2020/03/30(月) 18:31:48.20 ID:2xrywwd7.net] 三項演算子は俺の大好物
171 名前:デフォルトの名無しさん mailto:sage [2020/03/30(月) 18:44:14.41 ID:kxtxXuN0.net] C#8.0のswitch式見ててあれってなったけど、そういえば右辺に文を持ってこれるのってPowerShellくらいなんだっけ
172 名前:デフォルトの名無しさん mailto:sage [2020/03/30(月) 22:05:50.57 ID:bK3E1kug.net] goto を禁止して 今度は if then else を禁止しようってか?
173 名前:デフォルトの名無しさん [2020/03/31(火) 09:18:05 ID:hmCJ2D6X.net] # RSSの内容を取得 $url="https://rss.itmedia.co.jp/rss/2.0/ait.xml" $webclient = new-object System.Net.WebClient $webclient.Encoding = [System.Text.Encoding]::UTF8 $rss = [xml]$webclient.downloadstring($url) とやった場合に$rssの内容を手早く調べるにはどうやればいいですか? $rss | ConvertTo-Json -Depth 100 $rss | Out-GridView なんかは表示が貧弱すぎてわかりません 多少長くてもいいので正確に(できればJSONで)階層化する方法が知りたいです $rssはあくまで一例で類似の複雑なオブジェクト全般について知りたいです
174 名前:デフォルトの名無しさん mailto:sage [2020/03/31(火) 12:14:42.73 ID:b44czDa9.net] >>172 $rss.rss.channel.item で一覧表示される(もちろんGridViewで見てもよい)けど、そういうことではなくて?
175 名前:デフォルトの名無しさん mailto:sage [2020/03/31(火) 13:02:27.84 ID:UGGIMXD4.net] >>172 JSONとXMLじゃ表現できる範囲が違うから「正確に」と言うなら$rss.OuterXmlとかで見るしかないと思うよ インデントとか付けて見易くしたいならXmlWriter使って整形すればいい https://imihito.hatenablog.jp/entry/2018/01/20/225513
176 名前:172 mailto:sage [2020/03/31(火) 15:56:05.63 ID:hmCJ2D6X.net] ISEからVSCodeに変えてデバッグ&インスペクトしたら大体望み通りの表示が得られました https://i.imgur.com/HRVgQP3.png [xml]な$rssも細部まで階層表示が出来ました 余計なプロパティがあまりにもごちゃごちゃしていて目視で$rssの把握は無理気味でしたが… ありがとうございました
177 名前:デフォルトの名無しさん mailto:sage [2020/04/01(水) 05:14:26.18 ID:T/a2Vy7O.net] VSCode に、XML のお勧め拡張機能はないの?
178 名前:デフォルトの名無しさん mailto:sage [2020/04/01(水) 08:11:20.55 ID:VNCwfYlv.net] >>176 スレタイ1024回読み直せ
179 名前:デフォルトの名無しさん [2020/04/01(水) 20:40:01.19 ID:wuY/0uuQ.net] classとclassを使うスクリプトの場所を分けたい場合 例えば c:\workフォルダに main.ps1 c:\work\class フォルダに class1.ps1 class2.ps1 class2.ps1はclass1.ps1を読込ので先頭に cd $PSScriptRoot . ".\class1.ps1" main.ps1はclass2.ps1を読込ので先頭に cd $PSScriptRoot . ".\class\class2.ps1" これでmain.ps1動かすとディレクトリがc:\work\classに変わっちゃうから class2.ps1を読み込んだ後にもう一度cd $PSScriptRootでディレクトリを移動し直すのが なんか気持ち悪いんですが、絶対パスでやる以外に方法はあるんでしょうか
180 名前:デフォルトの名無しさん mailto:sage [2020/04/02(木) 02:02:55 ID:sgXKVFsI.net] pushd popd
181 名前:デフォルトの名無しさん mailto:sage [2020/04/02(木) 23:47:54.92 ID:W0wv5F0P.net] . "$PSScriptRoot\class1.ps1" と絶対パスでやるのが一般的 カレントディレクトリの移動はやらんほうがいい
182 名前:デフォルトの名無しさん mailto:sage [2020/04/03(金) 01:06:03.07 ID:BrOkETDP.net] なる程その手があったか どうもありがとう
183 名前:デフォルトの名無しさん mailto:sage [2020/04/08(水) 19:04:23.59 ID:bFKpwotA.net] 連想配列をカンマ区切りに置換してファイル出力する方法教えてください 配列の場合はわかるんですが連想配列の場合がわかりません @{id=001;name=hoge} みたいなやつを↓ 001,hoge みたいな感じにしたいんです
184 名前:デフォルトの名無しさん mailto:sage [2020/04/08(水) 19:27:34.84 ID:VOICq9dy.net] @{id="001";name="hoge"}.Values -join ","
185 名前:デフォルトの名無しさん mailto:sage [2020/04/08(水) 20:46:56 ID:u/iW9oDx.net] >>183 なるほど!!
186 名前:デフォルトの名無しさん mailto:sage [2020/04/09(木) 10:17:18 ID:qPytwYgo.net] powershellのエラー発生時のログ出力って皆さんどうやってますか? 単純にpowershellの画面上に出力されてるエラーをログに吐き出したいだけなのですがイマイチやり方が分かりません!
187 名前:デフォルトの名無しさん mailto:sage [2020/04/09(木) 11:37:10.62 ID:ZcR3gUW3.net] $error
188 名前:デフォルトの名無しさん mailto:sage [2020/04/19(日) 17:57:40.84 ID:LL/F5W9x.net] シフト右クリックからpowershellウインドウをここで開くでウインドウ立ち上げた時にアクティブな状態で立ち上がらないから一回クリックしたりして選択し直さないかんのが地味にストレス
189 名前:デフォルトの名無しさん mailto:sage [2020/04/19(日) 18:12:07 ID:wL4NwIK0.net] >>187 おま環
190 名前:デフォルトの名無しさん mailto:sage [2020/04/19(日) 18:14:16 ID:vjiWfekt.net] シフト右クリックするとメニューが出る このとき先にシフトを離してから開く操作をするといい シフトを押した状態でアプリを起動すると非アクティブで開くのはWindowsの昔からの機能
191 名前:デフォルトの名無しさん mailto:sage [2020/04/19(日) 18:18:01 ID:vjiWfekt.net] Windows95の頃からこの機能は変わっていないと思う
192 名前:デフォルトの名無しさん mailto:sage [2020/04/19(日) 19:11:09 ID:jwLUU+vG.net] >>187 シフト押さないで出すようにしたら? suyamasoft.blue.coocan.jp/Windows/Windows10/PowerShell/index.html
193 名前:デフォルトの名無しさん mailto:sage [2020/04/19(日) 19:35:33.27 ID:/0QkS1hn.net] なるほど、勉強になった ありがとう
194 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 22:23:31 ID:8Kh2/Vc8.net] >>137 結構古い本だけど今でも読み応えある感じですか?
195 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 21:26:18 ID:xCk1mGre.net] 日本語に翻訳された初版じゃなくて第3版でしょ Windows PowerShell in Action, Third Edition https://www.manning.com/books/windows-powershell-in-action-third-edition
196 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 10:53:40 ID:+ujIhWuh.net] メンバを呼ぶ.(ドット)の演算子を逆参照演算子と呼ぶらしいんだけど、どこら辺が逆なんだろう
197 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 15:39:52 ID:nkgQazrR.net] Cとかでは * で値を得ることをdereferenceということがあるよ。
198 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 19:06:19 ID:+ujIhWuh.net] 逆参照演算子もdereferenceの直訳っぽいね 参照の反対の行動という意味で逆なのかな
199 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 08:59:09 ID:pj1FfIiR.net] 参照先のオブジェクト実体を見る、参照じゃなくなるからdereference(逆参照)
200 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 10:32:55 ID:JJa9UlV/.net] 普通、参照外しって訳すけどな。「逆」じゃ意味が通じない。
201 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 11:22:32 ID:HjIuTJYT.net] Powershellに逆参照演算子なんてないでしょ ドットはMember access operatorとDot sourcing operatorの二種類のはず ほかの言語との混同があるのでは C言語の & と * を参照演算子、逆参照演算子と訳すなら分かるし、-> を逆参照演算子と呼ぶのもまあ分かる
202 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 12:43:39.55 ID:YtBfjahw.net] 日本語版Windows PowerShell in Actionにそう書いてあった気がするんだが、 確かにMSDN見るとMember access operatorだ
203 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 12:50:10 ID:YtBfjahw.net] vscode上だと高度な関数のbeginブロックで定義した変数が、 processブロック中で使ってるにも関わらず未参照の警告が出るんだけど良い解決方法ないでしょうか 未参照確認自体は便利なので黙らせたくはないです
204 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 21:28:33 ID:kj6lHAl7.net] >>199 逆参照と訳す人が現実にいるんだから仕方がない https://www.google.com/search?q=dereference+%E9%80%86%E5%8F%82%E7%85%A7
205 名前:デフォルトの名無しさん mailto:sage [2020/04/30(木) 09:42:14 ID:Lei4veWw.net] >>200-201 古い about_Operators には property dereferences operator とあるので、改名されたのかも。 https://docs.microsoft.com/en-us/previous-versions/powershell/module/microsoft.powershell.core/about/about_operators
206 名前:デフォルトの名無しさん mailto:sage [2020/04/30(木) 14:51:17 ID:qeUJHkfv.net] https://docs.microsoft.com/ja-jp/previous-versions/windows/powershell-scripting/hh847732(v=wps.640) . プロパティ逆参照演算子 オブジェクトのプロパティとメソッドにアクセスします。 $myProcess.peakWorkingSet (get-process PowerShell).kill()
207 名前:デフォルトの名無しさん mailto:sage [2020/05/01(金) 00:27:41 ID:iyqswZZm.net] 一般的には 参照 アドレスを取り出す 逆参照 アドレスに入っている値を取り出す だけど値を取り出すことを「逆」と訳した経緯がわからん
208 名前:デフォルトの名無しさん mailto:sage [2020/05/01(金) 05:46:31 ID:XmUvZ7vC.net] 変な翻訳だな 値参照でいい
209 名前:デフォルトの名無しさん mailto:sage [2020/05/01(金) 12:57:54 ID:578ddPng.net] dereferenceはやっぱ参照外しかな referenceってポインタ(または名前)が主語で、実体に向かって矢印が向いている、ポイントしている状態 逆参照というとこの矢印を逆に辿る、変数からポインタを探すになっちゃう 接頭辞de-を「離れる」と理解せずに、かなり派生的な「逆」と訳して定着した誤訳に近い語だと思う
210 名前:デフォルトの名無しさん mailto:sage [2020/05/01(金) 12:58:58 ID:578ddPng.net] いずれにしてもPowershellでdereferenceなんて概念を持ち込む必要がないからメンバアクセス演算子って名前に改善されたんでしょう
211 名前:デフォルトの名無しさん mailto:sage [2020/05/01(金) 16:33:54 ID:5CcYXcTT.net] C系は逆参照じゃないの むしろ参照外しのほうがわからんかったが
212 名前:デフォルトの名無しさん mailto:sage [2020/05/01(金) 17:34:48.85 ID:578ddPng.net] どっちがデファクトスタンダードかって話とどっちが正しいかって話は別だから 確信犯とか姑息みたいに誤用の方が普及して定義が揺らいでる言葉はいろいろあるけどどう使うかは話者次第
213 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 01:09:24.67 ID:hArtKUaR.net] 初心者です move-item等でファイル名に[]があるとエラーがある事を知りました ようやく -LiteralPath つければ良いと分かりましたが、 デフォルトの仕様がワイルドカード受け付けるのって初心者殺しというか… なれてる人はこっちの方が便利なんでしょうか
214 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 03:59:19.96 ID:eeiLu4M/.net] Powershell好きだけどファイル名の [ ] の扱いは失策だと思う
215 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 08:21:59.04 ID:ayLem+RW.net] ?や*すらファイル名に使えるUNIXの世界へようこそ!
216 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 09:28:04 ID:hArtKUaR.net] >>213 やっぱりそうですよね・・・ 比較演算子も、-matchで[ ]があるとエラーになって困りました これもいろいろ調べてようやく-match [regex]::escape() にすれば良いと分かりましたが・・・ PowerShellって参考書もあまりなくて古いし、ネットの情報もあまりなくてなかなか学習が進みません・・・ そもそもPowerShell ISEのヘルプで -pathは「ワイルドカード文字を許可する false」って嘘書いてあるのが・・・
217 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 11:59:27 ID:dnvbBZmT.net] ファイル名はともかくmatch が正規表現で比較ってのは割と知られているような気もするけど
218 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 13:19:22.94 ID:XmeTIU4M.net] 対になるlike演算子があるからなんとなくわかる ところでreplaceの正規表現じゃない版が欲しい・・・
219 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 13:22:34 ID:eeiLu4M/.net] たしかに-matchの話に限っては単なる勘違いだな match(一致)と言われて部分一致だと思うかといえば、普通はpattern matchでしょう 参考にしたサイトが悪かったのかもしれない 正規表現を使わないなら "a[b]c".Contains("[b]") でいい
220 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 13:25:02.05 ID:eeiLu4M/.net] >>217 上のレスで気付いたかもしれないけど "a[b]c".Replace("[b]", "[d]") で置換できるよ
221 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 13:42:36.44 ID:XmeTIU4M.net] なるほどね そういや -replace [regex]::escape()でもOKか
222 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 16:06:32 ID:hArtKUaR.net] >>216 >>218 教えていただいてありがとうございます。 自分がやりたかったのは、例えば hoge[hoge] というファイル名で拡張子の違う 複数のファイルの移動だったんですが、最初は $hoge = "hoge[hoge]" Move-Item "C:\test\$hoge.*" "C:\test2" これは失敗しました([ ]があるファイルを処理していて気がつきました) いろいろ調べて Get-ChildItem "C:\test\*.*"|Where-Object{$_.basename -match [regex]::escape("$hoge")}|Move-Item -Destination "C:\test2" してみて成功しました 今回教えてもらって Get-ChildItem "C:\test\*.*"|Where-Object{$_.basename.contains("$hoge")}|Move-Item -Destination "C:\test2" これでOKみたいです。まだ冗長な気もしますが・・・
223 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 17:06:49.01 ID:LlR+aKwZ.net] パスの角括弧の扱いはpsの一番いけてないとこだからね 角括弧のみをエスケープする場合は次のようにする move "C:\test\$hoge.*".Replace('[', '``[') "C:\test2" もしくは-Filterパラメータが角括弧をワイルドカード扱いしないことを利用して move "C:\test\*" "C:\test2" -Filter "$hoge.*"
224 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 18:54:18.78 ID:hArtKUaR.net] >>222 なるほど。 [ だけエスケープすれば大丈夫なんですね ようやく引っかかってた所から脱出できそうです 皆さん大変ありがとうございました
225 名前:デフォルトの名無しさん mailto:sage [2020/05/06(水) 21:11:41.78 ID:prm5gj7H.net] これってクラス多めのオブジェクト指向でやるべきなのか、 高度な関数多めのパイプライン志向(?)でやるべきなのか、 どっちがいいのかな
226 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 01:36:33.14 ID:k5uIH00p.net] オブジェクト使い回す設計のほうが読みやすそうならそうする 高度な関数ってどんなんやねん
227 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 02:22:01 ID:GVyLSOna.net] 高度な関数ってずいぶん懐かしい単語だな、普通に関数でいいと思うよ 全ては無理に和訳しようとしたMSが悪い
228 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 08:07:17 ID:O8jL8wQb.net] >>224 本来のシェル的な使い方がメインなら 関数でパイプライン多用した方が使いやすい 普通のアプリに近いものを作る場合には クラスでOOPした方が使いやすい
229 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 08:26:30 ID:H2g0PsUL.net] PSのクラスって判らんからコード量増えたらC#埋め込むわ
230 名前:843 mailto:sage [2020/05/07(木) 09:38:19 ID:1Drf/TcZ.net] PSのクラスって機能が足りないとかはあるけど特に難しい所はないと思うが…
231 名前:デフォルトの名無しさん [2020/05/07(木) 23:47:47 ID:cnY/r+Lf.net] 教えてください。 WindowsServer2012のADユーザー情報の取得についてです。 testunyo.local ┗ユーザー ┗Users 上記OUにあるユーザーの情報のうち、 ログオンID フルネーム(表示名) 所属するグループ名 の情報をcsvで抽出したいとき、 Get-ADPrincipalGroupMembership -identity test | Select-Object name | Format-Wide -Column 20 | Out-String -Width 500 >> C:\work\logtest.csv とすると所属するグループ名しか抽出できません。 A列にログオンID、 B列にフルネーム、 C列以降に所属するグループ名 と、1ユーザー1レコードで表示させたいとき、 どのようにするのが良いでしょうか? Get-ADPrincipalGroupMembershipではなく、csvdeを使うのが良さそう とは思ったのですが、うまく抽出できませんでした。
232 名前:デフォルトの名無しさん mailto:sage [2020/05/08(金) 01:23:43 ID:GBARQ9Uf.net] Select-Object name で name プロパティしか抽出できてないとか?
233 名前:デフォルトの名無しさん mailto:sage [2020/05/08(金) 12:22:27 ID:Fn4yfVbS.net] >>221 Ruby で作った。 DryRun なので、実際には実行されません require 'fileutils' dest_dir = "C:/test2" keyword = "hoge[hoge]" # 絶対パスのディレクトリ名の後ろに、* を付けること! # . で始まる、隠し directory, file を除く glob_pattern = "C:/test/*" src_dir = File.dirname( glob_pattern ) # ディレクトリパスだけを取り出す Dir.glob( glob_pattern ) .select { |full_path| File.file?( full_path ) } # ファイルのみ .select { |full_path| File.basename( full_path, ".*" ) === keyword } # 拡張子を取り除いた部分のファイル名 .each do |full_path| dest_path = dest_dir + "/" + File.basename( full_path ) # ファイル名 FileUtils::DryRun.move( full_path, dest_path ) end 出力 mv C:/test/hoge[hoge].txt C:/test2/hoge[hoge].txt
234 名前:デフォルトの名無しさん mailto:sage [2020/05/08(金) 13:46:42 ID:fxtS7XW6.net] GetNewClosureで作ったクロージャからトップレベルに定義した関数にアクセスできんのだがスコープどうなってんだ? function Hoge () {} { Hoge }.Invoke() #うごく { Hoge }.GetNewClosure().Invoke() #うごかん
235 名前:デフォルトの名無しさん mailto:sage [2020/05/08(金) 15:09:04 ID:eZ8FT/L5.net] またキチガイが湧いてきたか NG しやすいように、コテハン付けて欲しいわ
236 名前:デフォルトの名無しさん mailto:sage [2020/05/10(日) 09:05:34.07 ID:oQrk4XHl.net] >>233 トップレベルと呼んでいるのは、(仮に) Hoge.ps1 の Script スコープでいいよね? PowerShell のクロージャは、動的モジュールにバインドされたスクリプトブロック。 モジュールの Script スコープは、常に Global スコープの直接の子なので、 クロージャの Local スコープは、Hoge.ps1 の Script スコープの子孫にならない。 スコープの親子関係: [Global] - [Script(Hoge.ps1)] <== Hoge 関数の定義されているスコープ [Global] - [Script(動的モジュール)] - [Local] <== 問題のクロージャ内のスコープ
237 名前:デフォルトの名無しさん mailto:sage [2020/05/10(日) 15:23:52 ID:JjPR8mXC.net] Ruby で作った!
238 名前:デフォルトの名無しさん mailto:sage [2020/05/11(月) 21:37:49 ID:41JmE2xy.net] >>235 なるほど PowerShellって便利で面白いけど時々変な癖あるよな
239 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 21:11:03 ID:2xTEfvW8.net] Closures in PowerShell https://devblogs.microsoft.com/scripting/closures-in-powershell/ Windows PowerShell uses dynamic modules to create dynamic closures. A closure in computer science terms (at least as defined in Wikipedia) is “a function that is evaluated in an environment containing one or more bound variables.” A bound variable is, for our purposes, a variable that exists and has a value. The environment in our case is the dynamic module.
240 名前:デフォルトの名無しさん mailto:sage [2020/05/15(金) 09:02:37.24 ID:B71gCNON.net] v6.2.5 https://github.com/PowerShell/PowerShell/releases/tag/v6.2.5 v7.0.1 https://github.com/PowerShell/PowerShell/releases/tag/v7.0.1
241 名前:デフォルトの名無しさん mailto:sage [2020/05/15(金) 09:54:10 ID:JVqn6ak1.net] 昔ながらのPowerShellとPowerShell Coreって共存できんの? PowerShell CoreってクロスプラットフォームだけどWindowsの管理コマンドとか旧PowerShell資産とかとどれぐらい互換性あるのかな
242 名前:デフォルトの名無しさん mailto:sage [2020/05/15(金) 12:11:51 ID:spGK6l8f.net] >>240 共存できる。Core をインストールしても、PowerShell 5.1 を置き換えない。 インストールされるパスが違うし、そもそも実行ファイルのファイル名も違うので。
243 名前:デフォルトの名無しさん mailto:sage [2020/05/15(金) 21:26:49 ID:OwQtRj4C.net] Windows PowerShell 5.1 から PowerShell 7 への移行 https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/migrating-from-windows-powershell-51-to-powershell-7
244 名前:デフォルトの名無しさん mailto:sage [2020/05/16(土) 02:28:51 ID:LVL/9uGV.net] むしろCore版を上書きしてほしんだが Powershellで検索すると大量に出てきてうざいし、 Win+Xのショートカットから起動したいし
245 名前:デフォルトの名無しさん mailto:sage [2020/05/16(土) 02:29:08 ID:LVL/9uGV.net] 逆、Core版で、ね
246 名前:デフォルトの名無しさん mailto:sage [2020/05/16(土) 21:17:04 ID:I3dvVBqE.net] >>243 タスクバーにピン留めでは駄目なの?
247 名前:デフォルトの名無しさん mailto:sage [2020/05/19(火) 11:55:42.51 ID:1h+Pwucu.net] C#クラスFooをAdd-Typeして Fooを継承するpowershell class Barを定義しようとするとVSCodeの静的解析に型Fooが無いって言われる 実行時には問題なく動作するんだけど鬱陶しい どうにかならんのかこれ
248 名前:デフォルトの名無しさん mailto:sage [2020/05/19(火) 16:52:18 ID:JYrNQD+Z.net] >>246 現状では継承クラスを別ファイルにして読み込み元で先にadd-typeしてから遅延読み込みするしかない core系統ではusing assemblyの実装が保留されてるから 将来的にはおそらくそこをクリアしたusing assemblyが実装されると思うけど >実行時には問題なく動作するんだけど それはどこかしらで自分で先にadd-typeしてるからだと思う。そうじゃないとエラーで止まる 今の段階で最善と思われる方法はマニフェストモジュールにして psd1内でRequiredAssembliesに継承元のアセンブリを設定すること それをusing moduleで読み込むようにすれば最も自然に使える
249 名前:デフォルトの名無しさん mailto:sage [2020/05/19(火) 20:59:56 ID:JYrNQD+Z.net] >>246 ごめんよく読んだら的外れなレスだったわ C#のコードをadd-typeするってことね .NETのクラスを継承すると勘違いした
250 名前:デフォルトの名無しさん mailto:sage [2020/05/19(火) 21:17:33 ID:qw+UaCoQ.net] Suppressing Rules https://github.com/PowerShell/PSScriptAnalyzer#introduction
251 名前:デフォルトの名無しさん mailto:sage [2020/05/19(火) 21:19:20 ID:qw+UaCoQ.net] urlおかしかったからやり直し https://github.com/PowerShell/PSScriptAnalyzer#suppressing-rules
252 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 18:56:03 ID:1KC3re4i.net] 教えてください。Windows10です。 クリップボードに次の文字をコピーします。 Get-ChildItem -Path "c:\doc★" これをPowershellに貼り付けると、勝手に★が削除されて Get-ChildItem -Path "c:\doc" になってしまいます。正常に貼り付けるには、 どのようにすればよろしいでしょうか?