前スレ
PowerShell -Part 3
https://mevius.5ch.net/test/read.cgi/tech/1539074808/
次スレは>>980が立ててね!!
探検
PowerShell -Part 4
■ このスレッドは過去ログ倉庫に格納されています
2020/01/01(水) 16:08:31.66ID:4oQ1Kxot
152デフォルトの名無しさん
2020/03/24(火) 13:30:06.69ID:n2AHJDo3153デフォルトの名無しさん
2020/03/24(火) 16:14:53.92ID:/23EZweg >>152
> いま、もしかして上にある「パイプラインの並列化」って分岐の事じゃね?と思ったのだが違うのかな
同じルーチンが複数同時に走るってことだとと思う
排他制御とか順序の保証とかがどうなってるのかが気になる
> いま、もしかして上にある「パイプラインの並列化」って分岐の事じゃね?と思ったのだが違うのかな
同じルーチンが複数同時に走るってことだとと思う
排他制御とか順序の保証とかがどうなってるのかが気になる
154デフォルトの名無しさん
2020/03/24(火) 19:15:33.49ID:n2AHJDo3155デフォルトの名無しさん
2020/03/24(火) 19:46:16.61ID:1omVAMXs >>151
あーそれでわざわざGetSteppablePipeline使ってるのね
あーそれでわざわざGetSteppablePipeline使ってるのね
156デフォルトの名無しさん
2020/03/24(火) 21:24:12.31ID:LC2xv/4E >>149が何やってるのかサッパリ
GetSteppablePipelineでぐぐっても日本人はほとんど存在士らないのかなって具合
GetSteppablePipelineでぐぐっても日本人はほとんど存在士らないのかなって具合
157デフォルトの名無しさん
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
https://docs.microsoft.com/en-us/dotnet/api/system.management.automation.scriptblock.getsteppablepipeline
158デフォルトの名無しさん
2020/03/24(火) 23:52:12.51ID:LC2xv/4E >>149の最初の連想配列作ってるとこは判る
問題は次
>$continuation.Values.ForEach("Begin", $true)
これ何してるの?
Values.ForEachて。
こんな書き方でSteppablePipelineのBeginメソッドが呼べるの?
C言語の配列で"A"[0]みたいなトリッキーさを連想させるのだが
問題は次
>$continuation.Values.ForEach("Begin", $true)
これ何してるの?
Values.ForEachて。
こんな書き方でSteppablePipelineのBeginメソッドが呼べるの?
C言語の配列で"A"[0]みたいなトリッキーさを連想させるのだが
159デフォルトの名無しさん
2020/03/25(水) 03:41:09.46ID:IDfpoHeN .ForEachはメソッド形式のForeach-Objectで、要するにC#のLINQをPowerShell風にアレンジした何か
どっちかというと.ForEach({ ..... }) みたいにスクリプトブロックを渡す使い方が主流だと思うけど、メソッド名を文字列で渡してオブジェクトのメソッドを呼び出すこともできる
ステッパブルパイプラインは任意のパイプライン(文)をメソッド形式で呼び出せるようにするための何か
渡された引数を先頭のコマンドにパイプして実行させることができる
どっちかというと.ForEach({ ..... }) みたいにスクリプトブロックを渡す使い方が主流だと思うけど、メソッド名を文字列で渡してオブジェクトのメソッドを呼び出すこともできる
ステッパブルパイプラインは任意のパイプライン(文)をメソッド形式で呼び出せるようにするための何か
渡された引数を先頭のコマンドにパイプして実行させることができる
160デフォルトの名無しさん
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出力したいです。
やり方教えてください!
例えば
fileA.txt
aaa
uuu
iii
fileB.txt
iii
uuu
eee
とあった場合にfileBをマスタとしてaaaの文字列をdelete.txtにeeeの文字列をadd.txt出力したいです。
やり方教えてください!
161デフォルトの名無しさん
2020/03/25(水) 19:05:36.15ID:D/1vKEW+ 素人ですまんけど、
$test0 = "a", "b", "c"
$test1 = $test0[1]
こういった時に、$test0のbを同時に削除する書き方はありますか?別途処理を書く必要あり?
$test0 = "a", "b", "c"
$test1 = $test0[1]
こういった時に、$test0のbを同時に削除する書き方はありますか?別途処理を書く必要あり?
162デフォルトの名無しさん
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
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
163デフォルトの名無しさん
2020/03/26(木) 00:09:27.46ID:fIJkkKI3164デフォルトの名無しさん
2020/03/26(木) 00:14:14.98ID:fIJkkKI3 -ne演算子の場合は大小比較をしないので注意
もし比較する場合は>>162のように-notin演算子とWhere関数でフィルタする
もし比較する場合は>>162のように-notin演算子とWhere関数でフィルタする
165デフォルトの名無しさん
2020/03/26(木) 08:51:19.38ID:BddTdfqa166デフォルトの名無しさん
2020/03/28(土) 02:03:33.90 scoop の魅力
167デフォルトの名無しさん
2020/03/30(月) 02:08:56.05ID:VM+VSYRD > $a = try{get-content data.txt}catch{@()}
> $a = if(3 -ne 4){11}else{22}
ダメ元で試してみたらこんな書き方出来たのかよ
> $a = if(3 -ne 4){11}else{22}
ダメ元で試してみたらこんな書き方出来たのかよ
168デフォルトの名無しさん
2020/03/30(月) 07:08:11.36ID:PN3/f/57 うん、だから三項演算子入れないでほしかった
なんでわざわざ評判微妙な記法を取り入れたんだろ
なんでわざわざ評判微妙な記法を取り入れたんだろ
169デフォルトの名無しさん
2020/03/30(月) 18:31:48.20ID:2xrywwd7 三項演算子は俺の大好物
170デフォルトの名無しさん
2020/03/30(月) 18:44:14.41ID:kxtxXuN0 C#8.0のswitch式見ててあれってなったけど、そういえば右辺に文を持ってこれるのってPowerShellくらいなんだっけ
171デフォルトの名無しさん
2020/03/30(月) 22:05:50.57ID:bK3E1kug goto を禁止して
今度は if then else を禁止しようってか?
今度は if then else を禁止しようってか?
172デフォルトの名無しさん
2020/03/31(火) 09:18:05.97ID:hmCJ2D6X # 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はあくまで一例で類似の複雑なオブジェクト全般について知りたいです
$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はあくまで一例で類似の複雑なオブジェクト全般について知りたいです
173デフォルトの名無しさん
2020/03/31(火) 12:14:42.73ID:b44czDa9 >>172
$rss.rss.channel.item で一覧表示される(もちろんGridViewで見てもよい)けど、そういうことではなくて?
$rss.rss.channel.item で一覧表示される(もちろんGridViewで見てもよい)けど、そういうことではなくて?
174デフォルトの名無しさん
2020/03/31(火) 13:02:27.84ID:UGGIMXD4 >>172
JSONとXMLじゃ表現できる範囲が違うから「正確に」と言うなら$rss.OuterXmlとかで見るしかないと思うよ
インデントとか付けて見易くしたいならXmlWriter使って整形すればいい
https://imihito.hatenablog.jp/entry/2018/01/20/225513
JSONとXMLじゃ表現できる範囲が違うから「正確に」と言うなら$rss.OuterXmlとかで見るしかないと思うよ
インデントとか付けて見易くしたいならXmlWriter使って整形すればいい
https://imihito.hatenablog.jp/entry/2018/01/20/225513
175172
2020/03/31(火) 15:56:05.63ID:hmCJ2D6X ISEからVSCodeに変えてデバッグ&インスペクトしたら大体望み通りの表示が得られました
https://i.imgur.com/HRVgQP3.png
[xml]な$rssも細部まで階層表示が出来ました
余計なプロパティがあまりにもごちゃごちゃしていて目視で$rssの把握は無理気味でしたが…
ありがとうございました
https://i.imgur.com/HRVgQP3.png
[xml]な$rssも細部まで階層表示が出来ました
余計なプロパティがあまりにもごちゃごちゃしていて目視で$rssの把握は無理気味でしたが…
ありがとうございました
176デフォルトの名無しさん
2020/04/01(水) 05:14:26.18ID:T/a2Vy7O VSCode に、XML のお勧め拡張機能はないの?
177デフォルトの名無しさん
2020/04/01(水) 08:11:20.55ID:VNCwfYlv >>176
スレタイ1024回読み直せ
スレタイ1024回読み直せ
178デフォルトの名無しさん
2020/04/01(水) 20:40:01.19ID:wuY/0uuQ 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でディレクトリを移動し直すのが
なんか気持ち悪いんですが、絶対パスでやる以外に方法はあるんでしょうか
例えば
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でディレクトリを移動し直すのが
なんか気持ち悪いんですが、絶対パスでやる以外に方法はあるんでしょうか
179デフォルトの名無しさん
2020/04/02(木) 02:02:55.73ID:sgXKVFsI pushd popd
180デフォルトの名無しさん
2020/04/02(木) 23:47:54.92ID:W0wv5F0P . "$PSScriptRoot\class1.ps1"
と絶対パスでやるのが一般的
カレントディレクトリの移動はやらんほうがいい
と絶対パスでやるのが一般的
カレントディレクトリの移動はやらんほうがいい
181デフォルトの名無しさん
2020/04/03(金) 01:06:03.07ID:BrOkETDP なる程その手があったか
どうもありがとう
どうもありがとう
182デフォルトの名無しさん
2020/04/08(水) 19:04:23.59ID:bFKpwotA 連想配列をカンマ区切りに置換してファイル出力する方法教えてください
配列の場合はわかるんですが連想配列の場合がわかりません
@{id=001;name=hoge}
みたいなやつを↓
001,hoge
みたいな感じにしたいんです
配列の場合はわかるんですが連想配列の場合がわかりません
@{id=001;name=hoge}
みたいなやつを↓
001,hoge
みたいな感じにしたいんです
183デフォルトの名無しさん
2020/04/08(水) 19:27:34.84ID:VOICq9dy @{id="001";name="hoge"}.Values -join ","
184デフォルトの名無しさん
2020/04/08(水) 20:46:56.85ID:u/iW9oDx >>183
なるほど!!
なるほど!!
185デフォルトの名無しさん
2020/04/09(木) 10:17:18.42ID:qPytwYgo powershellのエラー発生時のログ出力って皆さんどうやってますか?
単純にpowershellの画面上に出力されてるエラーをログに吐き出したいだけなのですがイマイチやり方が分かりません!
単純にpowershellの画面上に出力されてるエラーをログに吐き出したいだけなのですがイマイチやり方が分かりません!
186デフォルトの名無しさん
2020/04/09(木) 11:37:10.62ID:ZcR3gUW3 $error
187デフォルトの名無しさん
2020/04/19(日) 17:57:40.84ID:LL/F5W9x シフト右クリックからpowershellウインドウをここで開くでウインドウ立ち上げた時にアクティブな状態で立ち上がらないから一回クリックしたりして選択し直さないかんのが地味にストレス
188デフォルトの名無しさん
2020/04/19(日) 18:12:07.47ID:wL4NwIK0 >>187
おま環
おま環
189デフォルトの名無しさん
2020/04/19(日) 18:14:16.64ID:vjiWfekt シフト右クリックするとメニューが出る
このとき先にシフトを離してから開く操作をするといい
シフトを押した状態でアプリを起動すると非アクティブで開くのはWindowsの昔からの機能
このとき先にシフトを離してから開く操作をするといい
シフトを押した状態でアプリを起動すると非アクティブで開くのはWindowsの昔からの機能
190デフォルトの名無しさん
2020/04/19(日) 18:18:01.41ID:vjiWfekt Windows95の頃からこの機能は変わっていないと思う
191デフォルトの名無しさん
2020/04/19(日) 19:11:09.49ID:jwLUU+vG192デフォルトの名無しさん
2020/04/19(日) 19:35:33.27ID:/0QkS1hn なるほど、勉強になった
ありがとう
ありがとう
193デフォルトの名無しさん
2020/04/21(火) 22:23:31.60ID:8Kh2/Vc8 >>137
結構古い本だけど今でも読み応えある感じですか?
結構古い本だけど今でも読み応えある感じですか?
194デフォルトの名無しさん
2020/04/23(木) 21:26:18.73ID:xCk1mGre 日本語に翻訳された初版じゃなくて第3版でしょ
Windows PowerShell in Action, Third Edition
https://www.manning.com/books/windows-powershell-in-action-third-edition
Windows PowerShell in Action, Third Edition
https://www.manning.com/books/windows-powershell-in-action-third-edition
195デフォルトの名無しさん
2020/04/28(火) 10:53:40.07ID:+ujIhWuh メンバを呼ぶ.(ドット)の演算子を逆参照演算子と呼ぶらしいんだけど、どこら辺が逆なんだろう
196デフォルトの名無しさん
2020/04/28(火) 15:39:52.27ID:nkgQazrR Cとかでは * で値を得ることをdereferenceということがあるよ。
197デフォルトの名無しさん
2020/04/28(火) 19:06:19.94ID:+ujIhWuh 逆参照演算子もdereferenceの直訳っぽいね
参照の反対の行動という意味で逆なのかな
参照の反対の行動という意味で逆なのかな
198デフォルトの名無しさん
2020/04/29(水) 08:59:09.87ID:pj1FfIiR 参照先のオブジェクト実体を見る、参照じゃなくなるからdereference(逆参照)
199デフォルトの名無しさん
2020/04/29(水) 10:32:55.55ID:JJa9UlV/ 普通、参照外しって訳すけどな。「逆」じゃ意味が通じない。
200デフォルトの名無しさん
2020/04/29(水) 11:22:32.85ID:HjIuTJYT Powershellに逆参照演算子なんてないでしょ
ドットはMember access operatorとDot sourcing operatorの二種類のはず
ほかの言語との混同があるのでは
C言語の & と * を参照演算子、逆参照演算子と訳すなら分かるし、-> を逆参照演算子と呼ぶのもまあ分かる
ドットはMember access operatorとDot sourcing operatorの二種類のはず
ほかの言語との混同があるのでは
C言語の & と * を参照演算子、逆参照演算子と訳すなら分かるし、-> を逆参照演算子と呼ぶのもまあ分かる
201デフォルトの名無しさん
2020/04/29(水) 12:43:39.55ID:YtBfjahw 日本語版Windows PowerShell in Actionにそう書いてあった気がするんだが、
確かにMSDN見るとMember access operatorだ
確かにMSDN見るとMember access operatorだ
202デフォルトの名無しさん
2020/04/29(水) 12:50:10.22ID:YtBfjahw vscode上だと高度な関数のbeginブロックで定義した変数が、
processブロック中で使ってるにも関わらず未参照の警告が出るんだけど良い解決方法ないでしょうか
未参照確認自体は便利なので黙らせたくはないです
processブロック中で使ってるにも関わらず未参照の警告が出るんだけど良い解決方法ないでしょうか
未参照確認自体は便利なので黙らせたくはないです
203デフォルトの名無しさん
2020/04/29(水) 21:28:33.91ID:kj6lHAl7 >>199
逆参照と訳す人が現実にいるんだから仕方がない
https://www.google.com/search?q=dereference+%E9%80%86%E5%8F%82%E7%85%A7
逆参照と訳す人が現実にいるんだから仕方がない
https://www.google.com/search?q=dereference+%E9%80%86%E5%8F%82%E7%85%A7
204デフォルトの名無しさん
2020/04/30(木) 09:42:14.57ID:Lei4veWw >>200-201
古い about_Operators には property dereferences operator とあるので、改名されたのかも。
https://docs.microsoft.com/en-us/previous-versions/powershell/module/microsoft.powershell.core/about/about_operators
古い about_Operators には property dereferences operator とあるので、改名されたのかも。
https://docs.microsoft.com/en-us/previous-versions/powershell/module/microsoft.powershell.core/about/about_operators
205デフォルトの名無しさん
2020/04/30(木) 14:51:17.97ID:qeUJHkfv https://docs.microsoft.com/ja-jp/previous-versions/windows/powershell-scripting/hh847732(v=wps.640)
. プロパティ逆参照演算子
オブジェクトのプロパティとメソッドにアクセスします。
$myProcess.peakWorkingSet
(get-process PowerShell).kill()
. プロパティ逆参照演算子
オブジェクトのプロパティとメソッドにアクセスします。
$myProcess.peakWorkingSet
(get-process PowerShell).kill()
206デフォルトの名無しさん
2020/05/01(金) 00:27:41.37ID:iyqswZZm 一般的には
参照 アドレスを取り出す
逆参照 アドレスに入っている値を取り出す
だけど値を取り出すことを「逆」と訳した経緯がわからん
参照 アドレスを取り出す
逆参照 アドレスに入っている値を取り出す
だけど値を取り出すことを「逆」と訳した経緯がわからん
207デフォルトの名無しさん
2020/05/01(金) 05:46:31.59ID:XmUvZ7vC 変な翻訳だな
値参照でいい
値参照でいい
208デフォルトの名無しさん
2020/05/01(金) 12:57:54.38ID:578ddPng dereferenceはやっぱ参照外しかな
referenceってポインタ(または名前)が主語で、実体に向かって矢印が向いている、ポイントしている状態
逆参照というとこの矢印を逆に辿る、変数からポインタを探すになっちゃう
接頭辞de-を「離れる」と理解せずに、かなり派生的な「逆」と訳して定着した誤訳に近い語だと思う
referenceってポインタ(または名前)が主語で、実体に向かって矢印が向いている、ポイントしている状態
逆参照というとこの矢印を逆に辿る、変数からポインタを探すになっちゃう
接頭辞de-を「離れる」と理解せずに、かなり派生的な「逆」と訳して定着した誤訳に近い語だと思う
209デフォルトの名無しさん
2020/05/01(金) 12:58:58.53ID:578ddPng いずれにしてもPowershellでdereferenceなんて概念を持ち込む必要がないからメンバアクセス演算子って名前に改善されたんでしょう
210デフォルトの名無しさん
2020/05/01(金) 16:33:54.54ID:5CcYXcTT C系は逆参照じゃないの
むしろ参照外しのほうがわからんかったが
むしろ参照外しのほうがわからんかったが
211デフォルトの名無しさん
2020/05/01(金) 17:34:48.85ID:578ddPng どっちがデファクトスタンダードかって話とどっちが正しいかって話は別だから
確信犯とか姑息みたいに誤用の方が普及して定義が揺らいでる言葉はいろいろあるけどどう使うかは話者次第
確信犯とか姑息みたいに誤用の方が普及して定義が揺らいでる言葉はいろいろあるけどどう使うかは話者次第
212デフォルトの名無しさん
2020/05/04(月) 01:09:24.67ID:hArtKUaR 初心者です
move-item等でファイル名に[]があるとエラーがある事を知りました
ようやく -LiteralPath つければ良いと分かりましたが、
デフォルトの仕様がワイルドカード受け付けるのって初心者殺しというか…
なれてる人はこっちの方が便利なんでしょうか
move-item等でファイル名に[]があるとエラーがある事を知りました
ようやく -LiteralPath つければ良いと分かりましたが、
デフォルトの仕様がワイルドカード受け付けるのって初心者殺しというか…
なれてる人はこっちの方が便利なんでしょうか
213デフォルトの名無しさん
2020/05/04(月) 03:59:19.96ID:eeiLu4M/ Powershell好きだけどファイル名の [ ] の扱いは失策だと思う
214デフォルトの名無しさん
2020/05/04(月) 08:21:59.04ID:ayLem+RW ?や*すらファイル名に使えるUNIXの世界へようこそ!
215デフォルトの名無しさん
2020/05/04(月) 09:28:04.92ID:hArtKUaR >>213
やっぱりそうですよね・・・
比較演算子も、-matchで[ ]があるとエラーになって困りました
これもいろいろ調べてようやく-match [regex]::escape() にすれば良いと分かりましたが・・・
PowerShellって参考書もあまりなくて古いし、ネットの情報もあまりなくてなかなか学習が進みません・・・
そもそもPowerShell ISEのヘルプで -pathは「ワイルドカード文字を許可する false」って嘘書いてあるのが・・・
やっぱりそうですよね・・・
比較演算子も、-matchで[ ]があるとエラーになって困りました
これもいろいろ調べてようやく-match [regex]::escape() にすれば良いと分かりましたが・・・
PowerShellって参考書もあまりなくて古いし、ネットの情報もあまりなくてなかなか学習が進みません・・・
そもそもPowerShell ISEのヘルプで -pathは「ワイルドカード文字を許可する false」って嘘書いてあるのが・・・
216デフォルトの名無しさん
2020/05/04(月) 11:59:27.10ID:dnvbBZmT ファイル名はともかくmatch が正規表現で比較ってのは割と知られているような気もするけど
217デフォルトの名無しさん
2020/05/04(月) 13:19:22.94ID:XmeTIU4M 対になるlike演算子があるからなんとなくわかる
ところでreplaceの正規表現じゃない版が欲しい・・・
ところでreplaceの正規表現じゃない版が欲しい・・・
218デフォルトの名無しさん
2020/05/04(月) 13:22:34.10ID:eeiLu4M/ たしかに-matchの話に限っては単なる勘違いだな
match(一致)と言われて部分一致だと思うかといえば、普通はpattern matchでしょう
参考にしたサイトが悪かったのかもしれない
正規表現を使わないなら "a[b]c".Contains("[b]") でいい
match(一致)と言われて部分一致だと思うかといえば、普通はpattern matchでしょう
参考にしたサイトが悪かったのかもしれない
正規表現を使わないなら "a[b]c".Contains("[b]") でいい
219デフォルトの名無しさん
2020/05/04(月) 13:25:02.05ID:eeiLu4M/220デフォルトの名無しさん
2020/05/04(月) 13:42:36.44ID:XmeTIU4M なるほどね
そういや -replace [regex]::escape()でもOKか
そういや -replace [regex]::escape()でもOKか
221デフォルトの名無しさん
2020/05/04(月) 16:06:32.60ID:hArtKUaR >>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みたいです。まだ冗長な気もしますが・・・
教えていただいてありがとうございます。
自分がやりたかったのは、例えば 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みたいです。まだ冗長な気もしますが・・・
222デフォルトの名無しさん
2020/05/04(月) 17:06:49.01ID:LlR+aKwZ パスの角括弧の扱いはpsの一番いけてないとこだからね
角括弧のみをエスケープする場合は次のようにする
move "C:\test\$hoge.*".Replace('[', '``[') "C:\test2"
もしくは-Filterパラメータが角括弧をワイルドカード扱いしないことを利用して
move "C:\test\*" "C:\test2" -Filter "$hoge.*"
角括弧のみをエスケープする場合は次のようにする
move "C:\test\$hoge.*".Replace('[', '``[') "C:\test2"
もしくは-Filterパラメータが角括弧をワイルドカード扱いしないことを利用して
move "C:\test\*" "C:\test2" -Filter "$hoge.*"
223デフォルトの名無しさん
2020/05/04(月) 18:54:18.78ID:hArtKUaR >>222
なるほど。 [ だけエスケープすれば大丈夫なんですね
ようやく引っかかってた所から脱出できそうです
皆さん大変ありがとうございました
なるほど。 [ だけエスケープすれば大丈夫なんですね
ようやく引っかかってた所から脱出できそうです
皆さん大変ありがとうございました
224デフォルトの名無しさん
2020/05/06(水) 21:11:41.78ID:prm5gj7H これってクラス多めのオブジェクト指向でやるべきなのか、
高度な関数多めのパイプライン志向(?)でやるべきなのか、
どっちがいいのかな
高度な関数多めのパイプライン志向(?)でやるべきなのか、
どっちがいいのかな
225デフォルトの名無しさん
2020/05/07(木) 01:36:33.14ID:k5uIH00p オブジェクト使い回す設計のほうが読みやすそうならそうする
高度な関数ってどんなんやねん
高度な関数ってどんなんやねん
226デフォルトの名無しさん
2020/05/07(木) 02:22:01.91ID:GVyLSOna 高度な関数ってずいぶん懐かしい単語だな、普通に関数でいいと思うよ
全ては無理に和訳しようとしたMSが悪い
全ては無理に和訳しようとしたMSが悪い
227デフォルトの名無しさん
2020/05/07(木) 08:07:17.17ID:O8jL8wQb228デフォルトの名無しさん
2020/05/07(木) 08:26:30.42ID:H2g0PsUL PSのクラスって判らんからコード量増えたらC#埋め込むわ
229843
2020/05/07(木) 09:38:19.28ID:1Drf/TcZ PSのクラスって機能が足りないとかはあるけど特に難しい所はないと思うが…
230デフォルトの名無しさん
2020/05/07(木) 23:47:47.43ID:cnY/r+Lf 教えてください。
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を使うのが良さそう
とは思ったのですが、うまく抽出できませんでした。
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を使うのが良さそう
とは思ったのですが、うまく抽出できませんでした。
231デフォルトの名無しさん
2020/05/08(金) 01:23:43.35ID:GBARQ9Uf Select-Object name で name プロパティしか抽出できてないとか?
232デフォルトの名無しさん
2020/05/08(金) 12:22:27.69ID:Fn4yfVbS >>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
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
233デフォルトの名無しさん
2020/05/08(金) 13:46:42.62ID:fxtS7XW6 GetNewClosureで作ったクロージャからトップレベルに定義した関数にアクセスできんのだがスコープどうなってんだ?
function Hoge () {}
{ Hoge }.Invoke() #うごく
{ Hoge }.GetNewClosure().Invoke() #うごかん
function Hoge () {}
{ Hoge }.Invoke() #うごく
{ Hoge }.GetNewClosure().Invoke() #うごかん
234デフォルトの名無しさん
2020/05/08(金) 15:09:04.88ID:eZ8FT/L5 またキチガイが湧いてきたか
NG しやすいように、コテハン付けて欲しいわ
NG しやすいように、コテハン付けて欲しいわ
235デフォルトの名無しさん
2020/05/10(日) 09:05:34.07ID:oQrk4XHl >>233
トップレベルと呼んでいるのは、(仮に) Hoge.ps1 の Script スコープでいいよね?
PowerShell のクロージャは、動的モジュールにバインドされたスクリプトブロック。
モジュールの Script スコープは、常に Global スコープの直接の子なので、
クロージャの Local スコープは、Hoge.ps1 の Script スコープの子孫にならない。
スコープの親子関係:
[Global] - [Script(Hoge.ps1)] <== Hoge 関数の定義されているスコープ
[Global] - [Script(動的モジュール)] - [Local] <== 問題のクロージャ内のスコープ
トップレベルと呼んでいるのは、(仮に) Hoge.ps1 の Script スコープでいいよね?
PowerShell のクロージャは、動的モジュールにバインドされたスクリプトブロック。
モジュールの Script スコープは、常に Global スコープの直接の子なので、
クロージャの Local スコープは、Hoge.ps1 の Script スコープの子孫にならない。
スコープの親子関係:
[Global] - [Script(Hoge.ps1)] <== Hoge 関数の定義されているスコープ
[Global] - [Script(動的モジュール)] - [Local] <== 問題のクロージャ内のスコープ
236デフォルトの名無しさん
2020/05/10(日) 15:23:52.95ID:JjPR8mXC Ruby で作った!
237デフォルトの名無しさん
2020/05/11(月) 21:37:49.46ID:41JmE2xy238デフォルトの名無しさん
2020/05/12(火) 21:11:03.62ID:2xTEfvW8 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.
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.
239デフォルトの名無しさん
2020/05/15(金) 09:02:37.24ID:B71gCNON240デフォルトの名無しさん
2020/05/15(金) 09:54:10.26ID:JVqn6ak1 昔ながらのPowerShellとPowerShell Coreって共存できんの?
PowerShell CoreってクロスプラットフォームだけどWindowsの管理コマンドとか旧PowerShell資産とかとどれぐらい互換性あるのかな
PowerShell CoreってクロスプラットフォームだけどWindowsの管理コマンドとか旧PowerShell資産とかとどれぐらい互換性あるのかな
241デフォルトの名無しさん
2020/05/15(金) 12:11:51.23ID:spGK6l8f242デフォルトの名無しさん
2020/05/15(金) 21:26:49.08ID:OwQtRj4C Windows PowerShell 5.1 から PowerShell 7 への移行
https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/migrating-from-windows-powershell-51-to-powershell-7
https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/migrating-from-windows-powershell-51-to-powershell-7
243デフォルトの名無しさん
2020/05/16(土) 02:28:51.69ID:LVL/9uGV むしろCore版を上書きしてほしんだが
Powershellで検索すると大量に出てきてうざいし、
Win+Xのショートカットから起動したいし
Powershellで検索すると大量に出てきてうざいし、
Win+Xのショートカットから起動したいし
244デフォルトの名無しさん
2020/05/16(土) 02:29:08.79ID:LVL/9uGV 逆、Core版で、ね
245デフォルトの名無しさん
2020/05/16(土) 21:17:04.74ID:I3dvVBqE >>243
タスクバーにピン留めでは駄目なの?
タスクバーにピン留めでは駄目なの?
246デフォルトの名無しさん
2020/05/19(火) 11:55:42.51ID:1h+Pwucu C#クラスFooをAdd-Typeして
Fooを継承するpowershell class Barを定義しようとするとVSCodeの静的解析に型Fooが無いって言われる
実行時には問題なく動作するんだけど鬱陶しい
どうにかならんのかこれ
Fooを継承するpowershell class Barを定義しようとするとVSCodeの静的解析に型Fooが無いって言われる
実行時には問題なく動作するんだけど鬱陶しい
どうにかならんのかこれ
247デフォルトの名無しさん
2020/05/19(火) 16:52:18.17ID:JYrNQD+Z >>246
現状では継承クラスを別ファイルにして読み込み元で先にadd-typeしてから遅延読み込みするしかない
core系統ではusing assemblyの実装が保留されてるから
将来的にはおそらくそこをクリアしたusing assemblyが実装されると思うけど
>実行時には問題なく動作するんだけど
それはどこかしらで自分で先にadd-typeしてるからだと思う。そうじゃないとエラーで止まる
今の段階で最善と思われる方法はマニフェストモジュールにして
psd1内でRequiredAssembliesに継承元のアセンブリを設定すること
それをusing moduleで読み込むようにすれば最も自然に使える
現状では継承クラスを別ファイルにして読み込み元で先にadd-typeしてから遅延読み込みするしかない
core系統ではusing assemblyの実装が保留されてるから
将来的にはおそらくそこをクリアしたusing assemblyが実装されると思うけど
>実行時には問題なく動作するんだけど
それはどこかしらで自分で先にadd-typeしてるからだと思う。そうじゃないとエラーで止まる
今の段階で最善と思われる方法はマニフェストモジュールにして
psd1内でRequiredAssembliesに継承元のアセンブリを設定すること
それをusing moduleで読み込むようにすれば最も自然に使える
248デフォルトの名無しさん
2020/05/19(火) 20:59:56.70ID:JYrNQD+Z249デフォルトの名無しさん
2020/05/19(火) 21:17:33.27ID:qw+UaCoQ Suppressing Rules
https://github.com/PowerShell/PSScriptAnalyzer#introduction
https://github.com/PowerShell/PSScriptAnalyzer#introduction
250デフォルトの名無しさん
2020/05/19(火) 21:19:20.10ID:qw+UaCoQ251デフォルトの名無しさん
2020/05/25(月) 18:56:03.39ID:1KC3re4i 教えてください。Windows10です。
クリップボードに次の文字をコピーします。
Get-ChildItem -Path "c:\doc★"
これをPowershellに貼り付けると、勝手に★が削除されて
Get-ChildItem -Path "c:\doc"
になってしまいます。正常に貼り付けるには、
どのようにすればよろしいでしょうか?
クリップボードに次の文字をコピーします。
Get-ChildItem -Path "c:\doc★"
これをPowershellに貼り付けると、勝手に★が削除されて
Get-ChildItem -Path "c:\doc"
になってしまいます。正常に貼り付けるには、
どのようにすればよろしいでしょうか?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 日経平均の下落率3%超す、財政懸念で長期金利上昇 ★2 [お断り★]
- 【実況】博衣こよりのえちえち歌枠🧪★2
- 【画像】外務省局長「この度はうちの🦎がすみません…」中国「……」 [165981677]
- 産経新聞「高市早苗の答弁さぁ……思慮が足りてなくね?官僚と詰めずに思いつきで話しているでしょ」 [175344491]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- 外務省局長、よくわからないまま帰国へ [834922174]
