【最強CUI】PowerShell -Part 2 [無断転載禁止]©2ch.net

レス数が950を超えています。1000を超えると書き込みができなくなります。
2016/11/26(土) 06:30:02.67ID:pZYy6q7Y
前スレ
【最強CUI】PowerShell -Part 1
http://echo.2ch.net/test/read.cgi/tech/1378978504/
2018/07/27(金) 18:34:48.47ID:hpcoy/E6
>>889
そうなんだよな。
本当は長居するつもりも無かったんだが
頓珍漢なレスが多くて反応して今に至ってる。
2018/07/27(金) 18:37:15.79ID:hpcoy/E6
元々VBAスレがPowerShell信者に荒らされてな。
そのままスレが最後までいって次が立つまでの間にこっちに書いたらこうなった。
2018/07/27(金) 20:52:54.00ID:/pOg/k3/
>>888
お前が済んでたらファイル渡されたユーザーも参照できんのかよ
2018/08/01(水) 09:22:45.41ID:LkPgJ43O
v6.0.3 Release of PowerShell Core
https://github.com/PowerShell/PowerShell/releases/tag/v6.0.3
2018/08/05(日) 15:25:02.08ID:iWriYPq8
C#は.NET無い環境だとブレークポイントで止めながらデバッグとか出来ないってことでいいのでしょうか?
2018/08/05(日) 16:13:15.95ID:8pU3W85Z
>>894
.NET無いってどういうこと?
2018/08/05(日) 16:58:00.21ID:iWriYPq8
>>895
Visual Studioでした。すみません。
2018/08/05(日) 21:27:02.69ID:8pU3W85Z
>>896
omnisharp
これ以上は適切なスレで
2018/08/08(水) 06:10:45.62ID:9IQgpJP5
Add-TypeでC#をコンパイルしてアセンブリを吐き出すことってできない?
cscをつかうかCodeDOMをつかうっきゃないか
2018/08/08(水) 07:33:51.33ID:aBUsJDbY
>>898
そこまできたら普通にRoslyn使えよ…
2018/08/08(水) 09:28:50.60ID:t8dLk4fV
>>898
-OutputAssembly
-OutputType

https://technet.microsoft.com/ja-jp/library/dd315241.aspx
2018/08/10(金) 02:50:48.12ID:r84RRSaO
日本語環境でUpdate-Helpが成功した方いますか?
2018/08/12(日) 11:52:57.19ID:AqaK+sLZ
「Write-Host $Args[0]」とだけ書いたスクリプトを、コマンドプロンプトから
「powershell ./test.ps1 "(笑)"」
と呼び出すと「CommandNotFoundException」が発生します。

括弧が悪いようですが、やっぱり渡す前に「"`(笑`)"」みたいにバッククォートで括弧をエスケープするしかないんですかね?
実際は引数に何が来るかわからないので、できればPowerShell側でなんとかしたいんですが。
2018/08/12(日) 14:22:48.08ID:pjLEMieq
>>902
powershell -file ./test.ps1 "(笑)"
2018/08/13(月) 20:44:05.76ID:9GVffBEY
>>903
いけました、ありがとうございます!
2018/08/13(月) 22:24:06.95ID:aFOAPcea
http://livedoor.blogimg.jp/teishaba_604/imgs/4/8/48b73c81-s.jpg
2018/08/15(水) 21:56:44.38ID:JQmIXjO5
>>905
店名は「笑」と書いてショウと読むのに対し,
「(笑)」は「(笑い)」の省略されたものなのでワラもしくはワライと読むはずなので,
その画像は不適切
907905
垢版 |
2018/08/16(木) 23:27:16.70ID:3IMawj9A
>>906
いや、そもそもスレチなんでまともに相手しないであげて下さいw

ところでPowershellで何かわからないことあってググると
大体「http://mtgpowershell.blogspot.com/」のサイトがヒットすることが多いんだけど
このサイト運営してる人ってすごく頭がいいんだろうなあ
2018/08/17(金) 02:04:19.83ID:ApTQfLt8
>>907
ネタにマジレスするっていうネタやで

俺もそのサイトは度々参考にさせてもらってるわ
http://tech.guitarrapc.com/archive/category/PowerShell
↑このサイトもおすすめ。「PowerShell実践ガイドブック」の作者。
2018/08/17(金) 07:49:40.85ID:ObWRp2dL
>>905
>>906
麺屋側は商売だから
とくに「ワラ」とか
ネットスラングまんまの店名つけるわけない
910907
垢版 |
2018/08/17(金) 21:38:03.34ID:OW713aU2
>>909
俺が悪かったのでもうスレチにマジレスは勘弁して下さい。(^_^;)

>>908
Powershellの書籍まで出してる人のサイトか、すごいですね。
使えるTIPSあるかひと通り見てみますね。
2018/08/26(日) 17:31:51.65ID:ueCC70T4
さすがに空白区切りの項目を$3とかで参照できないよな
awkが特殊すぎるか
2018/08/26(日) 22:38:58.94ID:BD3/9DfM
特化された言語と比べなければ十分シンプルかな
cat $1 | % { $a = -split $_; $a[3] + $a[2] }
変数への代入が少しやぼったく感じる
2018/08/27(月) 08:30:13.32ID:C7OBrvX6
ふむふむ、笑は「わら」って読まないのか…
1つ勉強になったわ
            笑笑店主
2018/09/05(水) 21:03:41.11ID:223DM7Lb
>>889
「PowerShellは何でもできる」は嘘。
お前は死んでいい。つーか死ね。
PoewerShellやっても背は伸びなかったし、彼女出来なかったし、宝くじにも当たらなかったわ!!!!

まぁそれは冗談として。
「何でも」ってのは流石に撤回しろよ。

あ、俺は >>884 ではない。
2018/09/05(水) 21:34:41.59ID:ueA0fDDX
PowerShellで赤ちゃんできました、ありがとうございます!!
2018/09/05(水) 22:18:06.97ID:+hZ+CXx5
>>914
> PoewerShellやっても背は伸びなかったし、彼女出来なかったし、宝くじにも当たらなかったわ!!!!
それパチモンやん
2018/09/05(水) 22:34:57.71ID:67GmsqOi
毛が生えてきました
2018/09/05(水) 23:18:58.56ID:223DM7Lb
PqewrShellを飲んで二か月です。
アソコビンビンで妻も満足です。

こう?
2018/09/05(水) 23:24:51.36ID:67GmsqOi
通常の蜆の30倍
蘇る男の自信
2018/09/06(木) 06:56:43.48ID:OzF+wVKL
蜆ってしじみのことか
PowerShell…米国の製薬会社で開発された貝のサプリかな
2018/09/06(木) 21:28:59.42ID:tWUwV9UN
Powershellやりはじめたら台風被害にあったよ><

家の前の自転車が倒れただけだけど
2018/09/08(土) 14:31:58.13ID:oTozgSe4
PowerShell Core 6.x (以下 PS6) を導入した環境でスクリプトを実行する際、
実行環境を容易に 旧来の PowerShell 5 (以下 PS5)、PS6 とで
切り替える方法ってありますか?

モジュールの関係で PS5 でないと動作しないものもあるので、こっちのスクリプトは
PS5 で動かしたい、ほかは PS6 で、って感じで混在してます。

海外のスレッドでは、拡張子「.ps6」を独自に追加してそれで切り替えれば?みたいな
回答が出てましたけど、汎用性に欠けるのであんまりそういうことはしたくないんです。
Linux みたいに shebang 行で切り替えられれば一番なんですけど。

なにかアイディア無いですか?
2018/09/08(土) 14:40:20.95ID:MO8wxn5E
一行目読み取ってどっちを起動するか切り替える実行ファイルつくればいいやん
2018/09/08(土) 15:06:48.98ID:hiBN1no6
切り替えるってのがよく分からん
そもそもps1ファイル自体は実行しても何も起こらないんじゃなかったっけ
2018/09/08(土) 15:24:39.69ID:YwBJn4st
そりゃスクリプトはテキストファイルだから実行形式じゃないよ
画像ビューアにコマンドライン引数で画像パス渡せば画像が開くでしょ
スクリプトの実行はそれと同じことやってるの
なんでプログラム板でこんなこと説明しないといけないんだ
2018/09/08(土) 16:26:12.38ID:L0x65Qz7
いやだからさ
実行元がpwshとpowershellで明確に違うのに何を切り替えるのか分からんのよ
2018/09/08(土) 16:37:52.36ID:nMBTba9u
拡張子の関連付け問題の話?
バ―ジョンチェックとどちらで起動するかのリストを持ってる振り分けアプリ作って、.ps1への関連付けをそれにするとか。
2018/09/08(土) 16:47:51.96ID:oKnpK5oG
実行された環境がPS6だったら自身をPS5で実行して終了するスクリプトを
PS5で実行したいファイルの頭に書いておけばいいんじゃね
2018/09/08(土) 17:33:30.08ID:oTozgSe4
例えば、Active Directory 管理用モジュール「ActiveDirectory」は、現状
powershell.exe でしか動かず、pwsh.exe ではインポートできないわけ。

--------
参考
https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/breaking-changes-ps6?view=powershell-6
PowerShell スナップインは、PowerShell モジュールの前身ですが、PowerShell コミュニティではあまり使用されていません。
-- snip --
現時点では、Windows および Windows Server 内の ActiveDirectory および DnsClient モジュールに影響します。
--------

というわけで、今俺が作ってるものだと、以下のものが混在してる。
イ)powershell.exe でしか動かない
ロ)pwsh.exe でしか動かない
ハ)どっちでも動く

で、〜.ps1 ファイルを実行する際に、右クリックして「PowerShell で実行」とすると、何もしなければ powershell.exe で
実行される。自分が作ったものはほとんどが(ハ)なんだけど、時々(ロ)もあって、それを実行するときは右クリックして「PowerShell で実行」が出来ないんで面倒。

今検討してるのは、
a) pwsh.exe でしか動かないものは拡張子を .ps6 でにして、Windows に ps6 を pwsh.exe に関連付ける
b) sendto フォルダに pwsh.exe で実行させるバッチファイルを置く
c) バッチファイル (〜.cmd) に、実行環境ごと書いてしまう (参考 http://d.hatena.ne.jp/hake/20180218/p1 )

なんだけど、ほかにやりよう無いかね。
2018/09/08(土) 18:08:00.82ID:+HZWtY92
UNIXシェルのシバンみたいのが理想なら>>928は現実的な最適解だと思うんだけど何故スルー?
2018/09/08(土) 18:26:03.12ID:HSx0xrFN
そんだけならコンテキストメニューを拡張して
「PSV5で実行」を追加すれば良くね
2018/09/08(土) 19:09:29.22ID:nMBTba9u
右クリックなら選べるからコンテキストメニューをどうにかすべきだな。

ダブルクリックの話かと思ってた。
2018/09/08(土) 19:12:14.31ID:nMBTba9u
>>930
環境の問題とプログラム自体を分けておきたいとかあるんじゃないの?
2018/09/08(土) 21:00:30.80ID:oTozgSe4
>>928
イメージとしてはこんな感じかな。たしかにうまくいきそう。
ありがとう、明日試してみる。
-----------
<# ps1 の関連付けが powershell.exe の状態 (デフォルト) で、pwsh.exe で実行させたいものの場合 #>
# 実行環境が ver 5 以下の場合
if ($PSVersionTable.PSVersion.Major -le 5) {
pwsh.exe $MyInvocation.MyCommand.Path
exit
}
# 以下、ver 6 以上で実行させたい内容
2018/09/08(土) 21:11:46.23ID:oTozgSe4
>>931 >>932
もちろんそれでも十分可能なんだけど、以下の理由でできればカスタマイズは避けたいんです。スクリプト内だけで完結させたい。

・マシンがたくさん、OS も複数種類、ユーザプロファイルもたくさんあるので、標準構成からあまりいじりたくない
・お客さんに納品する可能性も考慮
2018/09/09(日) 12:32:25.50ID:CjsffzYn
そんな条件なら最初から全部ver5用に作るわ
2018/09/09(日) 12:54:55.70ID:PZb39582
運用マニュアルなしで議論してもしょうがないでしょ
このスクリプトはver5環境で実行してくださいと一言書いとけば済む話
2018/09/09(日) 13:48:43.10ID:b90Mhdwq
そういう能書きが書いてあっても何のこっちゃ分からんという人に配布しなきゃいけない場合もあるからなぁ
お客さんに運用対応を要求するのも大変なことだし
2018/09/09(日) 14:14:36.64ID:R8hBsgvF
>>937はこの手の仕事したことないんだろ
マニュアル書いても
「ver5環境ってなんだ?」
とか、そもそも説明なんて読んでなくて
「うまく動かないので至急なんとかしてください」
って言われるだけのこと
940デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:39:06.98ID:DLS5Iddq
これで十分
#Requires -Version 5
if ($PSVersionTable.PSEdition -eq 'Core') {
throw 'Powershell Coreでは動作しません。'
}
2018/09/09(日) 14:42:48.50ID:0y2Fjk63
「マニュアル?あぁ読んでないわ。とにかく直しといてね」
2018/09/09(日) 14:47:33.78ID:0y2Fjk63
>>940
「なんか 動作しません て出るんだけど?直しといてね」
943デフォルトの名無しさん
垢版 |
2018/09/09(日) 15:19:04.80ID:DLS5Iddq
「対応するなら○○万円(鬱陶しい顧客リスク分を上乗せして)頂戴します。」
断るならブラック顧客だから切るべし。
断れないならブラック企業だから転職。
2018/09/09(日) 15:28:45.97ID:D8J39mU4
>>943
突っぱねるだけじゃなく、妥協点を見出す、Fail safe, Fool proof ってのも重要なことだよ。
まあ個人のポリシーだから好きにすればいいけど。
2018/09/09(日) 15:31:06.93ID://bKOaXP
無職の妄想かよ w
2018/09/09(日) 15:47:36.82ID:jqHbfRUC
マニュアル書くにしたって、「エラーメッセージが出ます」と一言で説明するだけじゃ不十分
「『ver5環境では動作しません』というメッセージが表示されます。この場合...」と一字一句再現してやらないとわけわからなくなる人が山のようにいるのでね
ウィンドウの背景色やフレームの色まで画像付きで説明されてないと理解できない人もいるし
舐めてると死ぬぞ
2018/09/09(日) 20:12:23.17ID:0ym3cmgA
会計ソフトを出したら、それを買った客が、簿記・会計処理のことを聞いてくるw
女が電話に出ると、何時間でも粘るw

そういう客もいる
2018/09/09(日) 20:24:13.14ID:H4RfJ3jl
>>947
それ、チャンスじゃん。
サポート料を時間当たりいくらと決めとけば良い。
2018/09/09(日) 20:59:40.12ID://bKOaXP
>>947
全然関係ないけど昔生理用品メーカーに納入した機器の入れ替えに行った時に聞いた話だと、お客さんからの問い合わせ(多分クレーム)で長い時は3時間とかかかるって言ってた
950934
垢版 |
2018/09/10(月) 17:56:21.73ID:0jDkILQ9
結局こんなふうにしたよ
https://pastebin.com/9RWLpSC7

>>928
ありがとうごさいました!
ほかの皆さんもありがとうございました!
2018/09/12(水) 08:25:50.66ID:HwQfxVDT
Verifying PowerShell versions…let me count the ways
https://blogs.technet.microsoft.com/laurapark/2018/08/26/verifying-powershell-versions-let-me-count-the-ways/
2018/09/14(金) 07:52:52.25ID:itNItVhP
powershellにはbuild toolないのか
2018/09/14(金) 09:15:39.59ID:u+Z35nAl
Announcing PowerShell Core 6.1
https://blogs.msdn.microsoft.com/powershell/2018/09/13/announcing-powershell-core-6-1/
2018/09/14(金) 10:16:47.60ID:60Mnn9Dg
これは朗報だ!
---------
AWS Lambda は PowerShell Core をサポートします
https://aws.amazon.com/jp/about-aws/whats-new/2018/09/aws-lambda-supports-powershell-core/
2018/09/14(金) 12:28:03.19ID:Z7a8n8W6
6.1日本語使えない?
2018/09/14(金) 13:01:26.89ID:/Xr9NdPd
>>954
PowerShellでWeb API作る需要あるのかな
2018/09/14(金) 14:27:05.47ID:60Mnn9Dg
>>956
自分の場合だけど、Windows の EC2 インスタンスと連携するプログラムを Lambda 上で
作る案件がちょくちょくあって、これまでは Windows 上は PowerShell、Lambda のほうは
P{ython で作ることが多かった。
だけど自分のスキルのせいもあって、PowerShell と Python のコーディングを同時並行で進めると
色々と混乱することが少なくなかったのね。

# 両方 Python で作れば、と思うかもしれんけど、運用の手間を考えると、
# 追加でインストールするものはなるべく少なくしたい

それが、Lambda で PowerShell Core が使えるなら PowerShell で統一できるので、
個人的にすごく捗るな、と。
2018/09/16(日) 13:14:02.90ID:16Y59QgZ
class構文じゃなくて本物の型を定義したい場合にはAdd-Typeしかないのかな
GUI作るときにPSObjectがうまくデータバインドできなくて困った
2018/09/28(金) 12:50:16.79ID:8vtXqMhV
https://news.mynavi.jp/itsearch/article/hardware/4054
Powershell6.1で大分パフォーマンス上がったみたいね

パフォーマンス以外に起動も結構早くなった感じ
2018/09/28(金) 13:35:11.01ID:oUAtTcYe
Macだからかもしれない
Macでの実行環境は最適化する余地が大きく残ってたとかがあり得る
Windowsでどうかは比較してみないとなんとも
2018/09/28(金) 15:32:47.04ID:ExWLpVS+
psわざわざ入れるって無理だな
有り物使うだけだからOSアプデで付くのを待つしかない
2018/10/05(金) 17:32:43.04ID:LWyIHUF+
PowershellはOSによってプリインストールバージョン違うの地味に面倒だな
MS Updateで5.0までは強制的にアップデートしてくれないかな
客先のサーバでSQLモジュールも入って無くてInstall-moduleも入って無くてスクリプト使えなくて困ったわ
2018/10/05(金) 20:42:27.53ID:OkuzM4NB
今の10の1803ってバージョン何が入ってるの
2018/10/05(金) 21:07:07.34ID:YbvjOj4C
5.1
2018/10/06(土) 10:44:13.46ID:fld0/WcD
2.0ベースでなんとかするテクニックは必須ですよね
2018/10/06(土) 14:33:29.33ID:gea8Zy97
テクニックって程のものって何かある?
使える使えないの差ぐらいじゃないの
2018/10/06(土) 16:17:11.73ID:J00E9zwo
再来年1月にはPowershell2.0プリインストール環境が終了するから2.0に合わせた書き方頑張る気力がイマイチ
Windows7とか2008R2は早く死んでくれないかな
2018/10/06(土) 16:48:11.63ID:h/HmdYY4
Windows7とか2008R2は最後のまともなバージョン
2018/10/06(土) 21:18:07.69ID:MlTlM5yZ
Windows 2000 Proが一番良かった。
2018/10/06(土) 23:10:20.08ID:tgEP6apu
>>967
SP1入れずに使ってる環境なんてほぼ無いだろ?なら4.0覚えときゃOK

個人的にはzipクラスがある4.5が望ましい
2018/10/06(土) 23:21:17.76ID:SoS+Fgug
とりあえず3.0以降じゃないとちょっと辛いイメージ
2018/10/07(日) 00:45:26.55ID:/+/kkqPE
何が辛いんだい
ほら言ってごらん
2018/10/07(日) 00:51:14.63ID:KvcjzmFM
3.0以降じゃないとPsCustomObject使えないとか、コマンドレット充実してなくてNETライブラリ使う羽目になって、もうこれC#で書いたほうが良くね?になるあたりかね
2018/10/07(日) 02:34:13.34ID:MeohIHbL
coreに移行して大分経ってからGet-ScheduledTaskとかのWindows専用っぽいコマンドレット無くなってるのに気付いた
まあこれはあんまり使わんしpowershell.exeで実行すりゃいいか
2018/10/07(日) 06:17:50.14ID:mFTX0OZ0
where-objectでフィルタをかける時、複数条件が必要な場合は
パイプでつなぐしかないですかね?andとかあればいいんですけど
where-object 条件1 | where-object 条件2
2018/10/07(日) 06:44:39.40ID:MeohIHbL
論理演算子はもちろんあります
-and -orなど
2018/10/07(日) 10:50:24.18ID:VwaVbKnV
>>975
サンプルだと
? {$arg -eq "test" -or $arg2 -eq "test"}
みたいな感じ
-使う演算子が繋がって違和感あるかもしれんけど
2018/10/07(日) 11:44:45.71ID:I8sm2uyS
そもそもカンマでcriteraの文字列を区切ればor指定になるのでは
2018/10/07(日) 21:44:12.84ID:/+/kkqPE
>>978
どゆこと?
$arg -eq "test1","test2"
とかやってもならないけど
980デフォルトの名無しさん
垢版 |
2018/10/08(月) 20:48:01.10ID:7Fv0bXJp
パワーシェル内でパワーシェルを呼び出す時、どのパワーシェルの処理が成功してるか失敗してるかわかるようにログ出すのはどうすればいいんでしょうか?
2018/10/08(月) 21:56:04.04ID:sIA/07pT
>>980
スクリプトの名前等を頭につけるとか
982デフォルトの名無しさん
垢版 |
2018/10/08(月) 22:04:42.09ID:7Fv0bXJp
ごめん。全然わからん・・・
2018/10/08(月) 22:05:00.95ID:vQC6HMz5
argsでIDを渡すとか
powershell -command { "ID: $($args[0])"} -args 777
984デフォルトの名無しさん
垢版 |
2018/10/08(月) 22:19:23.32ID:7Fv0bXJp
バッチファイルみたいにリダイレクトではログ渡せないのかな?
2>1
みたいなかんじで?
2018/10/08(月) 23:19:17.74ID:nFrei6GD
$?で前回のコマンドの実行結果
$lastexitcodeにexitコマンドで返された値が入る(呼び出したスクリプトはexitに戻り値を付けて終了させないとダメ)

$?だとスクリプト内の最後のコマンドの結果が帰るからスクリプトの作りによっては失敗の判定は出来ないのはバッチとかと一緒
986デフォルトの名無しさん
垢版 |
2018/10/08(月) 23:24:06.69ID:7Fv0bXJp
なるほど
呼び出すスクリプト内にエラーコードで正常か異常か$?で判定させてそれをifかなんかで分岐させてエラーコードを呼び出し元のスクリプトの$lastexitcodeをehcoする感じですかね?
2018/10/08(月) 23:32:12.23ID:rY44Et0R
>>979に答えてくれないか
2018/10/08(月) 23:41:24.75ID:GVMVzq1c
>>980
成否判定ならこれでよくね

hoge.ps1

$hoge = $true
if($hoge){exit 1}
exit 0
-------------

$ps = Start-Process hoge.ps1 -Wait -PassThru
switch($ps.ExitCode) {
0 {
"失敗"
}
1 {
"成功"
}
}
2018/10/08(月) 23:44:14.86ID:L+98sdt+
「どの」を見落としてる
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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