X



Windows PowerShell Part5 [無断転載禁止]©2ch.net
0001名無し~3.EXE
垢版 |
2016/09/18(日) 14:06:24.15ID:aFEI7ykR
Windows PowerShell
http://technet.microsoft.com/ja-JP/scriptcenter/dd742419.aspx
オンラインヘルプ
https://technet.microsoft.com/ja-jp/library/bb978526.aspx

■パッケージのダウンロード
PowerShell 3.0 (Windows 7以降)
http://www.microsoft.com/en-us/download/details.aspx?id=34595

PowerShell 2.0 (Vista以前は3.0非対応)
http://support.microsoft.com/?kbid=926140

■参考
http://www.atmarkit.co.jp/fdotnet/special/powershell01/powershell01_01.html
http://oka326.blogspot.com/search/label/PowerShell
http://d.hatena.ne.jp/newpops/
http://blogs.msdn.com/PowerShell

■過去スレ
Windows PowerShell Part4
http://echo.2ch.net/test/read.cgi/win/1359719778/
0729名無し~3.EXE
垢版 |
2020/03/05(木) 19:17:11.27ID:ULDTTofW
フォルダ内のjpgの画像データを一括でリサイズするとき、拡張子をjpegではなくjpgのままで変換したいのですが可能なのでしょうか
0731名無し~3.EXE
垢版 |
2020/03/05(木) 21:29:39.03ID:oZCxCgVu
>>730
正直、余計なことしてない分シェルとしてはUnix シェルの方が使いやすい
言語として貧弱なのはあくまでもシェルが本文と割りきってるからで
言語機能を強化するためにシェルとして分かりにくくなってるPowerShell よりもツールとしては百億倍合理的
0732名無し~3.EXE
垢版 |
2020/03/05(木) 22:56:25.16ID:4HGBQro5
echoの仕様すら統一できてないくせに合理的だの使いやすいだの
なんのギャグやら
0733名無し~3.EXE
垢版 |
2020/03/05(木) 23:03:03.44ID:oZCxCgVu
PowerShell のように奇妙キテレツな挙動じゃないからなそこまで実害がないもの
0734名無し~3.EXE
垢版 |
2020/03/05(木) 23:08:57.04ID:oZCxCgVu
言語としての機能はPowerShell の方が上だよ
でも単純にShell として考えた場合の実用性はbashどころかcshにも劣る
0735名無し~3.EXE
垢版 |
2020/03/06(金) 01:26:28.91ID:jImN287F
まあ裏返せばCLIの使い勝手しか改善のしようがなくなっちゃっただけなんだけどね
多分10年20年先も*shの読みづらさは変わらんだろうし
0736名無し~3.EXE
垢版 |
2020/03/06(金) 01:35:46.30ID:ixGy8d5B
読みづらさなんて最初だけ
Unix の世界は慣れれば同じルールで一貫してやっていけるから楽
PowerShell なんてパイプラインの挙動がオブジェクトや文脈で変わりまくって、かなりの経験者でも動かしてみるまでどうなるか予想できないだろ?
Unix ならしばらく勉強すればログから複雑な条件で問題行を抽出するとかできるようになる
同じ期間PowerShell 学習した奴が同じことしようとしたら、自動書式化回避するために丸一日潰すことになる
Unix でせっかく克服した
Multicsのバッドプラクティスを
ご丁寧に復活させようとしてるのがWindows だろ
0737名無し~3.EXE
垢版 |
2020/03/06(金) 02:31:14.74ID:y5VvdGki
ということは、もう一回りすれば、良い物ができるかもしれないのだな
トンプソンみたいな人がいれば...だが
0738名無し~3.EXE
垢版 |
2020/03/06(金) 09:20:28.21ID:zWFpYiuw
> PowerShell なんてパイプラインの挙動がオブジェクトや文脈で変わりまくって

意味が分からないんで解説お願い
0739名無し~3.EXE
垢版 |
2020/03/06(金) 13:23:48.84ID:TPaDx+gw
習うより慣れろですよー
0740名無し~3.EXE
垢版 |
2020/03/06(金) 19:40:39.44ID:yPOAEe0a
>>738
わからないから使えてる(気がしてる)んだろう

>>739
そういうのは挙動に一貫性があって言えること
慣れたところでその慣れが極めて局所的にしか役に立たないんじゃたいして役に立たない
MSの製品はアプリもAPI もみんなそう
0741名無し~3.EXE
垢版 |
2020/03/06(金) 21:24:38.99ID:jImN287F
デバッグの第一歩がいきなりログ解析じゃ話にならない・・・原始的すぎる・・・
0743名無し~3.EXE
垢版 |
2020/03/07(土) 01:06:21.98ID:SPPCIA0K
>>742
結局丸一日考えてその程度のことしか言えないのか
0744名無し~3.EXE
垢版 |
2020/03/07(土) 08:15:52.36ID:owgs+MCe
>>736
> PowerShell なんてパイプラインの挙動がオブジェクトや文脈で変わりまくって
具体例よろしく
まあ笑える例しか出てこないと思うけどw
0745名無し~3.EXE
垢版 |
2020/03/08(日) 08:25:49.72ID:11hStfxv
>>740
一貫性がないのはUNIXシェルだろ
偉そうなこと言うのはechoの挙動くらい統一してからにしろ
何のためのPOSIXなのやら
0746名無し~3.EXE
垢版 |
2020/03/09(月) 14:43:50.66ID:Qkj9PMO1
>>744
昔外部コマンドをパイプでつないだらバイナリデータが化けてイーッてなった覚えがあるんだけど
あれからだいぶバージョン上がったが、そろそろ直ってる?
0747名無し~3.EXE
垢版 |
2020/03/09(月) 20:04:54.00ID:dakVweva
PowerShellでパイプに流せるのはテキストかオブジェクト
バイナリ流すとテキストだと思ってUnicodeに変換しちゃうらしい
0748名無し~3.EXE
垢版 |
2020/03/13(金) 23:28:06.62ID:nIU/F4Vd
外部コマンド呼んでstderrになんか出るとエラーになるのマジでうざい
cmdletちゃうんやからLASTEXITCODEだけで判断せえよ
0749名無し~3.EXE
垢版 |
2020/03/14(土) 08:56:25.61ID:NwTTFGvN
stderrは乱用されすぎなんだよ
PowerShellのWrite-VerboseやWrite-Debugはもっと評価されるべき
0750名無し~3.EXE
垢版 |
2020/03/14(土) 16:34:52.22ID:WddRdAKw
Windows10にPowerShell7入れたんだがGet-Clipboardが
The term 'Get-Clipboard' is not recognized...
ってなるんだけどなんで?
ちなみにSet-Clipboardは使えた
0751名無し~3.EXE
垢版 |
2020/03/14(土) 18:41:13.14ID:ejLCo26q
なんでだろ
gmo "Microsoft.PowerShell.Management" | % exportedcommands
の出力にGet-Clipboardあるか探してみて
0752名無し~3.EXE
垢版 |
2020/03/14(土) 21:57:17.97ID:WddRdAKw
なんか知らんが今やったら使えた
>>751 のコマンド入れたから?
できなかった時から起動しっぱなしのシェルだからそれぐらいしか考えられない
0755名無し~3.EXE
垢版 |
2020/03/23(月) 18:07:18.65ID:5HZDWhkJ
& hogehoge.exe 2> "hoge[1].txt"
なんてことをたいんだけど、これだとブラケットをワイルドカード展開しようとしてエラーになる。
[WildcardPattern]::Escape()使うとエラーにはならないけどファイル名にバッククォートが入る。
どうすればいいですか?
もしくはstdoutは捨ててstderrだけパイプラインに流す方法とかありますか?
0756名無し~3.EXE
垢版 |
2020/03/23(月) 21:59:40.00ID:5HZDWhkJ
(& hoge.exe 2>&1|?{$_ -is [System.Management.Automation.ErrorRecord]}).Exception|Out-File -LiteralPath 'a[1].txt'
でできた
0758名無し~3.EXE
垢版 |
2020/03/25(水) 21:42:59.85ID:M9ycgz2S
6.0以降はWindows powerShellじゃないんだが、このスレで話してもいいの?
0760名無し~3.EXE
垢版 |
2020/04/17(金) 16:11:39.26ID:PP+Qj0XC
外部コマンドの出力をパイプラインでつないでごにょごにょしようとしたら
外部コマンドが終わらないと次の処理に行かないんだが、どういうこと?
MS-DOSに先祖返りしたんか?
0761718
垢版 |
2020/05/17(日) 10:38:47.60ID:lAFdfHmU
7.0.1が出て.appxが復活したもののなぜかPreview扱いになってるな
Windows TerminalでもPreviewとみなされてる(アイコンがPreview版)
0762名無し~3.EXE
垢版 |
2020/05/21(木) 09:21:04.43ID:UoKRReBv
wingetがまだプレビュー版だからでしょ
0763名無し~3.EXE
垢版 |
2020/05/21(木) 22:29:37.81ID:RlvGm1Z3
ググると文字列は+で繋げるとありますが、
$word="坂本"
echo $word+"竜馬"
だと坂本+竜馬と表示されるのですが?

$word="坂本"
echo $word"竜馬"
だと坂本龍馬と表示される。
0765名無し~3.EXE
垢版 |
2020/05/21(木) 22:53:17.83ID:RlvGm1Z3
>>764

ありがとうございます。
分かりました。
0766名無し~3.EXE
垢版 |
2020/06/08(月) 02:51:30.15ID:OOuazV2u
>>763
PowerShell流にやるならechoはいらないので

$word="坂本"
echo $word+"竜馬"
としないで

$word="坂本"
$word+"竜馬"
とすれば望まれた結果になりますよ
0768名無し~3.EXE
垢版 |
2020/06/08(月) 09:29:28.77ID:w7Ay6/d5
>>767
要らない
他の言語のように return $a とか書けるけど
$a
return
と同じ意味
0769名無し~3.EXE
垢版 |
2020/06/08(月) 09:53:04.36ID:zBhIw9ZE
PSでは代入などの文にせずに式を書くだけでコンソールに出るから基本echoは要らない
echoにはおそらく互換性のために、式モードと引数モードというのがあって、引数モードだと引用符が要らない
最初から
echo 坂本竜馬
と書ける
式モードにするなら
echo ($word+"竜馬")
のようにかっこで囲む

>関数でも最後ならreturn要らないの?

最後だけでなく途中に書いた式による出力も全部戻り値としてパイプに渡される
PSにおいてreturnは戻り値を返すというより関数を抜ける役割で使うもの
0770名無し~3.EXE
垢版 |
2020/06/08(月) 10:05:45.26ID:U7pSgye2
横だが分かりやすかった。ありがとう
0771名無し~3.EXE
垢版 |
2020/06/08(月) 12:05:18.68ID:3EJC9Znn
>>763
で、簡単じゃんと思ってディレクトリもこれで繋がると思ってみたり
ディレクトリはJoin-Path使う罠
0772名無し~3.EXE
垢版 |
2020/06/12(金) 18:46:33.05ID:KimozeVe
7.0.2, 6.2.6が出た
7.0.2の.msixは相変わらずPreview版扱い
0773名無し~3.EXE
垢版 |
2020/06/12(金) 19:10:28.31ID:jPH83Z/s
Previewになってるのは7.1で修正するらしい
0774名無し~3.EXE
垢版 |
2020/07/28(火) 02:20:27.27ID:A/z/TC+R
Invoke-CommandでリモートPCのGUIコマンドを実行し、かつGUIの出力先を
そのリモート上の任意のセッション(consoleやrdp-tcp)にすることってできますか?
0775名無し~3.EXE
垢版 |
2020/07/28(火) 19:41:04.50ID:kJVAdpIi
何で出来ると思えるのか聞きたい
0776名無し~3.EXE
垢版 |
2020/07/28(火) 20:47:46.47ID:nm0PODKT
そのguiアプリがコマンドラインオプションで出力先を指定できる仕組みを持っていればできるんじゃない?
0777773
垢版 |
2020/07/29(水) 01:30:46.24ID:esehAF6j
ググりまくってようやく答えを見つけました↓
https://serverfault.com/questions/690852/use-powershell-to-start-a-gui-program-on-a-remote-machine

LinuxみたいにXアプリを他ディスプレイに飛ばす(xhostで許可設定して -display :N オプションをつける)
みたいな真似は、やはり仕様上困難のようです。そりゃそうですね。

というわけで、PSToolsのpsexecを使うとやりたいことができました。

@qwinstaで出力したいセッションのIDを調べる
psexec \\リモートホスト -u ユーザ名 -p パスワード qwinsta

A-iオプションにそのIDを指定
psexec \\リモートホスト -u ユーザ名 -p パスワード -i セッションID notepad

(ちなみにOpenGLみたいにローカルのコンソールセッションでないと起動できないプログラムの場合は
事前にtsconコマンドでコンソールセッションをActiveにしておくのが必要です)
0778名無し~3.EXE
垢版 |
2020/08/02(日) 06:55:32.27ID:+/FPdhow
Powershellでディレクトリ内も含めてファイル名だけ取得することってできますか?
Get-ChildItemのオプションで-Recursiveと-Nameだとディレクトリ名もついてくる
0779名無し~3.EXE
垢版 |
2020/08/02(日) 07:03:09.76ID:9GFQj2PC
Get-ChildItem -Recursive | %{$_.Name}
0780名無し~3.EXE
垢版 |
2020/08/02(日) 10:22:56.27ID:bS2jZFLJ
Get-ChildItem -Recurse -Name -File
0781名無し~3.EXE
垢版 |
2020/08/02(日) 13:03:20.34ID:GfIAh57T
最適解は>>780なんだろうけど
いつも Get-ChildItem -File -Recurse | % Name としてしまう
0782名無し~3.EXE
垢版 |
2020/08/03(月) 08:24:14.78ID:/BHUE2Pj
ありがとう。結果は
-Nameだとディレクトリ名も入ってしまう
| %Nameだとエラー
|%{$_.Name}だとファイル名のみ表示できた
でした
0783名無し~3.EXE
垢版 |
2020/08/03(月) 13:17:05.72ID:v0TeUFwf
なんで書いたとおりに試さないの?
%Name でなく、 % の後に空白の入った % Name
% は ForEach-Object の alias だから ForEach-Object Name ってこと
0784名無し~3.EXE
垢版 |
2020/08/03(月) 13:20:10.33ID:v0TeUFwf
ついでに言っとくと -File がないとディレクトリ名も表示される
0785名無し~3.EXE
垢版 |
2020/08/03(月) 21:09:15.45ID:YtXtnZSj
>>783
エイリアスわかんない相手にエイリアスつかっちゃ駄目な奴では
0786名無し~3.EXE
垢版 |
2020/08/03(月) 22:30:03.43ID:EF5S+eIw
駄目で奴でやんした恐れいりやす
0787名無し~3.EXE
垢版 |
2020/08/04(火) 06:43:43.33ID:MkpNDnoz
コマンドラインでは gci -File -Recurse | % Name だな
Get-ChildItem なんて補完するのも面倒過ぎる
0788名無し~3.EXE
垢版 |
2020/08/04(火) 07:23:33.96ID:54M4vZR5
自分用に書き捨てるならそれでいいけどさ
0789名無し~3.EXE
垢版 |
2020/08/04(火) 08:32:57.63ID:iEcRf322
dirでもlsでもgciでも手になじんてるのでいいよ
0790名無し~3.EXE
垢版 |
2020/08/04(火) 19:16:34.55ID:btL6ZsYE
Get-ChildItemdirちょー手になじんてる
0791名無し~3.EXE
垢版 |
2020/08/05(水) 03:05:58.57ID:MMmEuowj
>なじんてる

日本語は馴染んでないようだね
そういう人にしか使えないから、いまいち普及しないんだろうね
0792名無し~3.EXE
垢版 |
2020/08/05(水) 08:54:13.42ID:CydBOHs8
(あ、揚げ足取り……クスクス)
0793名無し~3.EXE
垢版 |
2020/08/05(水) 09:50:52.66ID:prtHLCOk
濁点のミスはスマホ入力でよくあるから気にならない
けどGet-ChildItemdirっていうワードが謎で文意がまったく掴めねぇー

エスパーすると本命は、Get-ChildItemと書きたかったけどdirを消し忘れた
対抗は、Get-ChildItem手になじんでる!と言いつつコマンドレット名間違ってましたテヘペロという高度なボケ
0794名無し~3.EXE
垢版 |
2020/08/06(木) 21:21:27.68ID:PsWRMYAT
必殺技:パワーシェル
効果:使い手を弱らせる
0795名無し~3.EXE
垢版 |
2020/08/07(金) 21:07:42.66ID:q0u5BL83
私はたかがPowerShellすら使えない無能ですまで読んだ
0796名無し~3.EXE
垢版 |
2020/08/07(金) 22:01:56.66ID:TeVat5Ow
>>795
お前はWin7環境を強いられている民を全員敵に回した
0798名無し~3.EXE
垢版 |
2020/08/07(金) 23:45:45.24ID:VEWCcMkX
コンソールにかき捨てならエイリアスでいいけど
スクリプトになんでもエイリアス仕込む奴のコードは扱いたくない

コードゴルフじゃないんだし
0799名無し~3.EXE
垢版 |
2020/08/08(土) 06:37:18.63ID:CWMKjVnz
あっっっっっったりまえのことだな

>>797 にもあるけど
>When working interactively at the Windows PowerShell console, the primary purpose is to accomplish something. I want to get the task completed accurately, and timely. I do not want to expend any extra effort to accomplish the task.

こういう時はaliasを使うし、

>On the other hand, when I write a Windows PowerShell script, the purpose is to have something I can use over and over again.
>The goal here is reusability, not speed of development and execution. Therefore, I do not want to use aliases in my script because it hinders readability and understanding.

こういう時はaliasを使わない

gci | ? LastWriteTime -ge 2020/8 | sort LastWriteTime
( gci | ? lastw[TAB] -ge 2020/8 | sort lastw[TAB] )

とか結構使うけど、スクリプトでは絶対こんな書き方はしない

>>787 だって
>コマンドラインでは gci -File -Recurse | % Name だな

と断りを入れてあるんだからaliasの適切な利用だと思う
0800名無し~3.EXE
垢版 |
2020/08/08(土) 07:09:36.96ID:BMLdzU/2
CodeGolfして

gci | ? L*r*e -ge 2020/8 | sort L*r*e

でも動く
0801名無し~3.EXE
垢版 |
2020/08/08(土) 07:32:40.43ID:mkClI8NB
(わ、話題そらし……クスクス)
0802名無し~3.EXE
垢版 |
2020/08/08(土) 08:21:40.63ID:zjVm3blX
(そ、そぼろ状のパスタ……クスクス)
0803名無し~3.EXE
垢版 |
2020/08/25(火) 10:39:42.29ID:9opdw73p
7.1.0-preview.6
Microsoft Storeに来たな
0805名無し~3.EXE
垢版 |
2020/10/24(土) 22:37:57.28ID:3cOi6IwO
get-contentもstream対応したのか
0806名無し~3.EXE
垢版 |
2020/10/28(水) 18:29:04.69ID:s2QvF4Go
VBAとかC#もこの板にスレ立てた方が盛り上がるんじゃないだろうか
0808名無し~3.EXE
垢版 |
2020/11/01(日) 09:15:35.84ID:kokzTy3K
PowerShell単体でBluetooth LEとか変なことやろうとしてるけど、
最後の最後で機器からのNotifyを受け取るのにWindows Runtimeのイベントを扱う必要が出てきて、PowerShellでは対処できそうにないなあ

Windows.Devices.Bluetooth.GenericAttributeProfile.GattCharacteristicオブジェクトのValueChangedイベントをRegister-ObjectEventしようとすると
Windows PowerShell cannot subscribe to Windows RT events.とか怒られる
0810名無し~3.EXE
垢版 |
2020/11/11(水) 19:20:34.33ID:NAGZD9bl
.NET 5.0が出たってことはPowerShell 7.1の正式リリースももうすぐか
0812名無し~3.EXE
垢版 |
2020/11/12(木) 23:23:07.07ID:0y4uR1Xi
>>811
Microsoft Storeにも正式版が来たな
Previewと共存も可能
0813名無し~3.EXE
垢版 |
2020/11/12(木) 23:35:51.03ID:/s5b2lhC
>>807
マジだ…知らんったわ
-asbytestreamとか見てあー最近こんなのあるんだ進歩してるなーとか思ってた
0814名無し~3.EXE
垢版 |
2020/11/17(火) 14:49:55.66ID:bh4EVKEm
ps1を隠蔽化しようと思ったらどうするのがいいんだ
Ps2exeでは簡単にデコンパイルされちゃうのは分かったんだけど
0815名無し~3.EXE
垢版 |
2020/11/18(水) 01:07:01.76ID:4kSYCeXk
>>814
難読化なら Invoke-Obfuscation ってのがあるよ
0816名無し~3.EXE
垢版 |
2020/11/18(水) 01:36:33.90ID:pTgItdzc
Invoke-Fusianasan に空目した
0817名無し~3.EXE
垢版 |
2020/11/18(水) 10:10:00.11ID:t2T7RWax
>>815
サンクス!
こういうのが欲しかった!
これとExe化とか併用したら結構隠蔽力強いかな
0818名無し~3.EXE
垢版 |
2020/11/18(水) 13:04:55.21ID:K8HVniJz
>>810
iOSやAndroidにも必要になるぞ
0819名無し~3.EXE
垢版 |
2020/11/18(水) 13:21:34.45ID:Hazb8mOl
devアイコンかわいくなってる!><;
キャー
0822名無し~3.EXE
垢版 |
2020/11/24(火) 11:51:42.95ID:D/aXRERm
Windowsの設定でアプリをリセットできますが、これを行うコマンドはあるのでしょうか?
インストール/アンインストールはAdd/Remove-AppxPackageでできるので、Appx関係を見てみましたが、分かりませんでした
0823822
垢版 |
2020/11/24(火) 11:54:15.79ID:D/aXRERm
Remove-AppxPackage -PreserveApplicationData
の逆で、設定をクリアしたいと考えております
0824名無し~3.EXE
垢版 |
2020/11/24(火) 14:08:25.59ID:s4Fvnkwj
ttps://winaero.com/reset-a-store-app-in-windows-10-using-powershell/
0825名無し~3.EXE
垢版 |
2020/11/25(水) 09:21:30.54ID:lVO2rDcF
>>824
ありがとうございます。
まだ、1909から上げてないので、Reset-AppxPackageがありませんでした。
アップデートするか、別の方法へのリンクもありましたので、そちらも検討したいと思います。
0827名無し~3.EXE
垢版 |
2021/01/13(水) 10:43:55.64ID:ssWbPrOV
「ごみ箱を空にする」の自動化はググればけっこう見つかるけど、実際やってみるとCMD窓が出てきてしまう。
これを出さずにサイレントで実行させるショートカットが作りたいんだけどなあ。
0829名無し~3.EXE
垢版 |
2021/01/13(水) 14:38:28.50ID:ssWbPrOV
>>828
前者はVC++の導入が必要ゆえ、少しハードルが高いな。
後者は使いこなせば強力そうだ。チャレンジのしがいがあるな。後者でいってみよう。
レスを投稿する


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