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/
0668名無し~3.EXE
垢版 |
2019/06/20(木) 21:59:55.69ID:0MrGFFI/
解決策をちゃんと書き残していくのはよい質問者
0669名無し~3.EXE
垢版 |
2019/07/01(月) 22:02:39.24ID:gDEDTrjH
あるフォルダに
Movie_00_(<肝心のファイル名>).mp3
Movie_01_(<肝心のファイル名>).mp3
Movie_02_(<肝心のファイル名>).mp3
以下続く...


というファイルがあって
このフォルダで
Get-ChildItem | ForEach-Object {Rename-Item -Path $_ -NewName $_.Name.Remove(0, 1)}
これを実行すると
一回目はファイル名の最初3文字が消えて、ie_00_(<肝心のファイル名>).mp3 に
この状態で再度実行すると今度は一文字だけ消えて、e_00_(<肝心のファイル名>).mp3
この状態で再度実行すると今度は二文字消えて、00_(<肝心のファイル名>).mp3
ってなっちゃうんですがなぜでしょうか。


以前この手のファイル名置換はうまくできてたんですけど。
すごくあほな勘違いかミスだと思うのですが
もうずっと考えてもわからないので助けてください。
0670名無し~3.EXE
垢版 |
2019/07/01(月) 22:16:02.19ID:gDEDTrjH
>>669 ですが、
Get-ChildItem Movie* としてフィルタをかけた状態でやったらうまくいきました。

どうして?
0671名無し~3.EXE
垢版 |
2019/07/01(月) 23:28:00.47ID:uIgvbVot
Forループの途中で名前が変わってるのがミソ
ループの列挙子が_A〜Za〜zの順にファイルをピックアップする
Mで始まるファイル名を一通り拾って置換した後
置換後の名前はoで始まるから同じループ内で再度ピックアップされてしまう
M, o, v まで文字コード昇順に並んでるから1回のループで1文字ずつ3回置換されてる
次のiはvよりも若い文字だからもう走査済みなのでそこで止まる
0672名無し~3.EXE
垢版 |
2019/07/02(火) 12:01:04.72ID:zGMk2kNX
おー、そういうことなのか
ありがとう。

単純にファイルのリストを作って次のループに渡すんじゃないのね、
今後もはまることありそうだわ。
0673名無し~3.EXE
垢版 |
2019/07/02(火) 14:56:54.49ID:Kl4l2xkx
一つのコマンド処理が終わるのを待ってパイプで受け渡してたら
メモリと時間がうなぎのぼりに増えていく
0675名無し~3.EXE
垢版 |
2019/07/02(火) 18:36:27.14ID:Uygpu8q0
psのパイプ考えた奴が素人なだけ
0676名無し~3.EXE
垢版 |
2019/07/02(火) 21:12:10.39ID:euC1izTi
オブジェクトを渡せるメリットとのトレードオフなので素人ではないよ
0677名無し~3.EXE
垢版 |
2019/07/02(火) 23:36:37.88ID:TyEsGTkR
いやむしろそれこそがパイプラインだろと
一体誰が素人って話なんだ
0678名無し~3.EXE
垢版 |
2019/07/03(水) 07:08:43.16ID:vqsZM7Td
たぶんUNIX村からのご出張でしょうな
0679名無し~3.EXE
垢版 |
2019/08/10(土) 18:26:21.57ID:PXmhVK7n
PwerShellをbuildしようとしてるんだけど
DotNetEventingStrings
がコンテキストに含まれていないと叱られます
これはどのモジュールに含まれてるんでしょうか?
0680名無し~3.EXE
垢版 |
2019/08/22(木) 23:59:33.45ID:K+gTDFqX
共有フォルダ(\\192.168.0.1\hoge)上でpower shellを動かしたいんだけど
証明書なしだから実行出来ないというエラーが出てしまう

オレオレ証明書での実行の仕方もいまいちわからんのですが
参考なるところ教えてくれませんか
社内で使うとかで、makecert.exeとかは無い状態です
助けてお願い
0681名無し~3.EXE
垢版 |
2019/08/23(金) 00:23:20.63ID:ToU/KkwI
実行ポリシーは何にセットされてるの?
変えて良いなら変えるのが手っ取り早いと思うけど
0682名無し~3.EXE
垢版 |
2019/08/23(金) 04:12:52.07ID:KfhASCfo
リモートホスト上で走らせたいのか、クライアント上で走らせたいのか?リモートなら当然認証や権限の問題を適切に処理せんとどうしようもない
0685名無し~3.EXE
垢版 |
2019/08/31(土) 13:32:42.74ID:zuKvVwg6
すみません
調べても分からなかったのでご教示ください
標準出力をパイプに渡してエラーのみをファイルにリダイレクトということはできるのでしょうか
2> file 1| command
にすればいいんでしょうか?
0686名無し~3.EXE
垢版 |
2019/08/31(土) 14:04:02.83ID:oEyca86t
よく意味がわからない
パイプはエラーを通さない。通すのは標準出力のみ
エラーをファイルにリダイレクトするには
command 2>a.txt
のようにする
0687名無し~3.EXE
垢版 |
2019/10/31(木) 16:36:09.47ID:1dL9U9Hi
powershellでcpu100%になれば下げたり何かのタスク終了したりできますか?
0688名無し~3.EXE
垢版 |
2019/10/31(木) 20:08:36.34ID:ZCoMddM0
何のタスクを終了するんだい
0689名無し~3.EXE
垢版 |
2019/11/01(金) 01:04:05.26ID:bczBnfL9
たぶんそのような機能はあるはずだが
Windows でその種の機能って実用的な動きしないこと多いしな
0690名無し~3.EXE
垢版 |
2019/11/01(金) 03:17:42.41ID:LlYu3Gs5
CPU100%だからpowershell動けないんじゃw
0691687
垢版 |
2019/11/01(金) 06:54:21.70ID:JtTVcao3
ありがとう。なんかアプリでありそうですね。
電源管理で100%押さえれますわ。
60%とかにしときました。
0692名無し~3.EXE
垢版 |
2019/11/18(月) 16:37:17.68ID:+tBwWmNo
GPOの設定を自動化したいんですけどGPMCとかいうの入れずにやる方法ありませんか?
0693名無し~3.EXE
垢版 |
2019/11/18(月) 17:35:05.90ID:+tBwWmNo
因みにローカルポリシーです
0694名無し~3.EXE
垢版 |
2019/11/20(水) 00:30:59.01ID:ttKyh2AH
ポリシーってのはセキュリティ周りのを除けば基本的にレジストリの設定集と思えばいい
逆説的に言えばポリシーで設定されるレジストリ値を設定してしまえばいいだけ

ドメインポリシーみたいな強制性が欲しいとか
そういう管理面での要件があるなら別だけどパンピーなら
該当するレジストリを設定すりゃ間に合うはず

もちろんすべてがすべてそうという訳じゃないが
0696名無し~3.EXE
垢版 |
2019/11/25(月) 12:22:48.13ID:X35HBkWO
powershell v2でテキストの文字列置換する方法教えて
(gc a.txt).replace("aaa","bbb") |Out-File b.txt
ってやるとv3では通るんだけどv2だとエラーになっちゃいました
0698名無し~3.EXE
垢版 |
2019/11/25(月) 13:56:46.28ID:TMBqTvCs
>>697
ありがとうございます。
やってみたのですが[IO:file]という型がありませんとか表示されちゃいました
因みにosはwindows2008r2です
0699名無し~3.EXE
垢版 |
2019/11/25(月) 14:29:40.85ID:czQcCtPG
すみません頭に[System.IO.file]とやったらいけました
0700名無し~3.EXE
垢版 |
2019/11/25(月) 19:03:30.59ID:ZKwCtEQv
powershell2.0で教えてください
単純にフォルダをネットワークドライブ配下に移動したいのですがいい方法はありませんでしょうか
何故かファイル単位だとうまくいきます
↓な感じです
Move-Item "元ファイル" -destination \\server\log

3.0だと同じ処理をやってもうまくいくのに何故2.0はこんな簡単なことも出来ないのか半泣き状態です
0701名無し~3.EXE
垢版 |
2019/11/26(火) 03:16:54.86ID:wx4Gu8qz
>>700
どんなエラーが出るとか、どういう結果になったとか書くとアドバイスもらいやすいよ
2.0でも Move-Item -Path "元フォルダ" -Destination \\server\log でOKなはずだけど

Windows Server 2008でもWindows Management Framework 3.0でpowershell 3.0が使えるようになるけど、サーバだと他の影響が怖くて変更しにくいのかな?
0702名無し~3.EXE
垢版 |
2019/11/26(火) 04:09:29.13ID:QNi+IjdU
-Forceつけてダメだったら
Move-Itemあきらめて
PS> Copy-Item "元ファイル" -destination \\server\log\ -recurse
PS> Remove-Item "元ファイル" -recurse
かな
原因は突き止めた方がいいと思うけど

PS> gi "元ファイル" | % {$_.MoveTo(“\\server\log\“)}
でもダメなんだろうなあ
0703名無し~3.EXE
垢版 |
2019/11/26(火) 04:14:36.25ID:QNi+IjdU
>>702
スマホから書いたら全角混じっちゃった
失礼
0704名無し~3.EXE
垢版 |
2019/11/26(火) 09:49:42.59ID:4PI9QRif
>>701-703
ありがとうございます
エラー内容については仰るとおりです
失礼いたしました

なおエラーは↓が出ていました
Move-Item:ソースとターゲットのパスは同一のルートを持たなければなりません。[移動]操作はボリューム間で行えません。

個人的にはpowershellv3を入れないのですが商用サーバーということもありそうも行かず…

頂いた内容でまず試してみます
0705名無し~3.EXE
垢版 |
2019/11/26(火) 10:20:33.67ID:issOaB3b
>>702
試してみたところcopy-item、remove-itemでうまくいきました!
何故move-item出来ないのか謎ですが一旦これでいきます
ありがとうございました
0706名無し~3.EXE
垢版 |
2019/11/28(木) 17:33:35.65ID:UutRgdFV
スクリプトで
VPNセッションを張って、opensshでLinuxサーバーにログインしたいんですが、クレデンシャル情報ってどう引き渡せば良いですかね
0709名無し~3.EXE
垢版 |
2019/12/12(木) 13:30:11.50ID:aITAYOet
コマンドプロンプトでcopy /b file1 + file2 out
でバイナリ結合できるけど
Get-Contentではどう頑張ってもできない?
結局cmd /c copy 〜 でやってる
0710名無し~3.EXE
垢版 |
2019/12/12(木) 19:38:43.11ID:sSCzuna3
copy xcopyをpowershellで完全に置き換えられるレベルまでMSには頑張って欲しかったなぁ
0711名無し~3.EXE
垢版 |
2019/12/12(木) 19:40:28.67ID:sSCzuna3
いまはxcopyじゃなくてrobocopyだった
0712名無し~3.EXE
垢版 |
2019/12/13(金) 00:44:59.55ID:61/cMtkf
xcopyで出来るものならxcopy使うけど
なんたってrobocopyとは速さが桁で違ってて比べ物にならない
0715名無し~3.EXE
垢版 |
2019/12/15(日) 15:40:50.15ID:6n1qFnV/
ファイルコピーに野良ライブラリーは使いたくない

コマンドプロンプトからの移行をMSが本気で考えていたならファイルコピー機能はまず最初に実装すべきなのに
0716名無し~3.EXE
垢版 |
2019/12/15(日) 16:49:07.04ID:2dlapD2y
robocopyをPowershellから実行できるから別にいいや
リッチなコピーコマンドをまた覚えるのも面倒だし
0717名無し~3.EXE
垢版 |
2019/12/15(日) 21:01:19.10ID:993qKj4t
>>715
「コマンドプロンプトの外部コマンド」じゃなくて「OSに標準搭載されてるコンソールアプリ」だと考えろ
Get-Command xcopyやGet-Command robocopyを実行するとCommandTypeがApplicationになってるんだし

PowerShellは名前の通りシェルであって
シェルからアプリを起動するのを躊躇する理由は全くない
0719名無し~3.EXE
垢版 |
2020/01/18(土) 23:33:35.90ID:yMfYhX5B
>>712
>なんたってrobocopyとは速さが桁で違ってて比べ物にならない
xcopy遅いですよね
0721名無し~3.EXE
垢版 |
2020/01/29(水) 13:43:55.36ID:UoiiX31V
名前にブラケットとか入ってるディレクトリをカレントディレクトリにして
適当なファイルにGet-Item -LiteralPath hogeとかするとObjectNotFoundになる。
内部で絶対パスを生成するときにカレントディレクトリのパスをエスケープしているようだ。
LiteralPath使ってんだから勝手にエスケープすんなやアホか。
0722名無し~3.EXE
垢版 |
2020/01/29(水) 18:35:57.45ID:gR+X94j5
新しいクロスプラットフォームの PowerShell をお試しください
0724名無し~3.EXE
垢版 |
2020/03/05(木) 13:27:47.75ID:NKnB4YOj
Microsoft、「PowerShell 7.0」を一般公開 〜三項演算子やnull結合演算子をサポート
「.NET Core 3.1」ベースとなり、3年間のLTSサポートが付属
ttp://forest.watch.impress.co.jp/docs/news/1238950.html
0726名無し~3.EXE
垢版 |
2020/03/05(木) 15:15:40.94ID:ptslk0x0
.net特化型スクリプト言語、って割りきってるのかなとも思ったけど
どうも開発陣はこの言語構文が優れているという信念を持ってるらしい
Python と似た芳ばしさを感じる
あんまり近寄りたくない
0727名無し~3.EXE
垢版 |
2020/03/05(木) 16:44:58.96ID:ZUmYtQCW
7って管理者モードで起動しているかいないかがコンソールウィンドウのタイトルで分からなくなってる?
0728718
垢版 |
2020/03/05(木) 18:29:15.54ID:W833SNVd
7.0.0はMicrosoft Storeでのリリースはなしか
7.0.0-rc.3ではGitHubにあった.msixもない
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+"竜馬"
とすれば望まれた結果になりますよ
レスを投稿する


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