前スレ
【最強CUI】PowerShell -Part 2
http://mevius.5ch.net/test/read.cgi/tech/1480109402/
探検
PowerShell -Part 3
■ このスレッドは過去ログ倉庫に格納されています
2018/10/09(火) 17:46:48.32ID:G4IJkzod
296デフォルトの名無しさん
2018/12/03(月) 22:42:10.02ID:YBAcFOR9 >>295
powershellは.netのフロントエンドだから
powershellは.netのフロントエンドだから
297デフォルトの名無しさん
2018/12/03(月) 22:51:11.92ID:uxAfgW4c そういう問題じゃないが・・・
支障がない場合はそんまま使うわあほくさ
支障がない場合はそんまま使うわあほくさ
298デフォルトの名無しさん
2018/12/04(火) 02:28:30.75ID:Tn5NKjZ7 なんで今更5.0の話してんのさ
299デフォルトの名無しさん
2018/12/04(火) 16:12:13.82ID:eKuwOju4 5ch の文章を、テキストエディタへコピペすると、
各行の先頭・末尾に、空白が付くので、これを除去したい
そこで、Ruby でプログラムを作って、
バッチファイルで、そのプログラムをダブルクリックで起動できるようにした
Windows で、クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる
新しいpowershell では、クリップボードから文字列も取得できる
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
ary = str.each_line.map( &:strip )
IO.popen( 'clip', 'w:cp932' ) do | clip |
clip.print( ary.join "\n" )
end
各行の先頭・末尾に、空白が付くので、これを除去したい
そこで、Ruby でプログラムを作って、
バッチファイルで、そのプログラムをダブルクリックで起動できるようにした
Windows で、クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる
新しいpowershell では、クリップボードから文字列も取得できる
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
ary = str.each_line.map( &:strip )
IO.popen( 'clip', 'w:cp932' ) do | clip |
clip.print( ary.join "\n" )
end
300デフォルトの名無しさん
2018/12/04(火) 17:07:32.91ID:hkRngAzE Get-Clipboardの機能は2015年からあるがどう新しいのか
301デフォルトの名無しさん
2018/12/04(火) 17:45:54.20ID:xb7Yz2vd Ruby挟む意味ないじゃん?バッチも画面が目ざわりだしvbsがいいよ
CreateObject("WScript.Shell").Run "powershell ""gcb | % trim | scb""", 0
CreateObject("WScript.Shell").Run "powershell ""gcb | % trim | scb""", 0
302299
2018/12/04(火) 19:47:12.62ID:eKuwOju4 VBS でも、ダブルクリックで実行できる?
303299
2018/12/04(火) 19:58:07.57ID:eKuwOju4 ありがとう。
VBS でも、ダブルクリックで実行できた
ただ、黒い画面が表示された方が、わかりやすくない?
何秒ぐらい待つのか、迷う
VBS でも、ダブルクリックで実行できた
ただ、黒い画面が表示された方が、わかりやすくない?
何秒ぐらい待つのか、迷う
304デフォルトの名無しさん
2018/12/04(火) 21:38:59.01ID:gx9huxXd Windows文化は「黒い画面」が出るのを良しとしないのだよ
305デフォルトの名無しさん
2018/12/04(火) 22:20:16.69ID:SeIDr86X >>304
そんなの一部の神経質な奴らだけ
そんなの一部の神経質な奴らだけ
306デフォルトの名無しさん
2018/12/04(火) 23:31:35.16ID:RbfFY42H >>305
Windows 文化と言うより、業務でオツちゃん・オバちゃんに使わせるシステムの場合、
あいだに黒い画面が一瞬出ると「なにこれ?」って無用な問い合わせが入ったり、
場合によっては無理やり閉じられることもある。
fool proof の観点からは黒い画面が無いに越したことはない。
Windows 文化と言うより、業務でオツちゃん・オバちゃんに使わせるシステムの場合、
あいだに黒い画面が一瞬出ると「なにこれ?」って無用な問い合わせが入ったり、
場合によっては無理やり閉じられることもある。
fool proof の観点からは黒い画面が無いに越したことはない。
307デフォルトの名無しさん
2018/12/05(水) 20:37:03.12ID:x9ea9mMQ " が含まれている文字列を環境変数にいれてnet useコマンドを使うと" がエスケープされず想定通りに処理されないのですがどうエスケープすればいいんでしょうか
シングルコーテート、バックコーテート、ダブルコーテートで"をくくってもだめでした
シングルコーテート、バックコーテート、ダブルコーテートで"をくくってもだめでした
308デフォルトの名無しさん
2018/12/05(水) 20:49:13.75ID:jRzepDw/ 何をしたくて何をしているのかさっぱりわからん
309デフォルトの名無しさん
2018/12/05(水) 20:58:21.39ID:x9ea9mMQ たとえばですが
$pass = test123"45
net use c:¥temp ¥¥192.168.1.10 $pass /user:testuser
とした時にパスワードに含まれている"が文字列として認識されずコマンドが実行されないのです
これをエスケープしようと
$pass = test123"""45
$pass = test123'"45
などとしてもうまくいかない感じです
$pass = test123"45
net use c:¥temp ¥¥192.168.1.10 $pass /user:testuser
とした時にパスワードに含まれている"が文字列として認識されずコマンドが実行されないのです
これをエスケープしようと
$pass = test123"""45
$pass = test123'"45
などとしてもうまくいかない感じです
310デフォルトの名無しさん
2018/12/05(水) 20:59:28.32ID:0urcwekh net useはpowershellのコマンドプロンプト用、powershellではNew-Psdriveコマンドレット、powershellのエスケープ文字は基本バックスラッシュ`
311デフォルトの名無しさん
2018/12/05(水) 21:00:28.08ID:0urcwekh WSHとごっちゃにしないでね
312デフォルトの名無しさん
2018/12/05(水) 21:01:52.08ID:0urcwekh 1行目間違えた
net useはコマンドプロンプト用
net useはコマンドプロンプト用
313デフォルトの名無しさん
2018/12/05(水) 21:03:52.33ID:x9ea9mMQ net use ではなく new-psdriveだとバクスラでエスケープ可能なんですか?
net useだとエスケープできなかったので、ちょっとやってみまふ
net useだとエスケープできなかったので、ちょっとやってみまふ
314デフォルトの名無しさん
2018/12/05(水) 21:08:28.49ID:x9ea9mMQ ちなみにパワーシェルからcmd /cでコマンド呼び出すときのエスケープキーはバクスラと^のどちらですか?
315デフォルトの名無しさん
2018/12/05(水) 21:10:17.22ID:0urcwekh 本件は
$pass='123"45'
とすればいいだけ
$pass='123"45'
とすればいいだけ
316デフォルトの名無しさん
2018/12/05(水) 21:16:36.03ID:x9ea9mMQ シングルコーテートでくくってもエスケープできるんですね
ありがとうございます
ありがとうございます
317デフォルトの名無しさん
2018/12/05(水) 21:23:21.81ID:0urcwekh エスケープじゃなくて、Powershellでは文字列は必ず'か"どっちかで囲う。生身はだめ。'で囲うのは静的リテラルの場合
318デフォルトの名無しさん
2018/12/05(水) 21:25:50.83ID:jRzepDw/ 結局環境変数は関係ないのか?
> " が含まれている文字列を環境変数にいれて
> " が含まれている文字列を環境変数にいれて
319デフォルトの名無しさん
2018/12/05(水) 21:30:22.57ID:0urcwekh 本当の初学者で変数もコマンドプロンプトと同じ概念なんだろ
320デフォルトの名無しさん
2018/12/05(水) 21:57:08.28ID:x9ea9mMQ なるほどそういうルールあるんですね
プログラムやったことないんでしらんかったす
リテラルってのも意味わからんかったくらいや
プログラムやったことないんでしらんかったす
リテラルってのも意味わからんかったくらいや
321デフォルトの名無しさん
2018/12/05(水) 22:13:06.29ID:ix5zH8Lr start-processで終了を待たずにps1実行していくのは疑似並列処理として考えて良いのでしょうか
322デフォルトの名無しさん
2018/12/06(木) 07:24:42.90ID:Ia5EZXvv 「`」はバッククォートだ馬鹿者
バックスラッシュ(\)とは違う
バックスラッシュ(\)とは違う
323デフォルトの名無しさん
2018/12/06(木) 08:11:29.70ID:XlsCLRxJ PowerShell Coreの宣伝始まった
https://twitter.com/Steve_MSFT/status/1070096140010287104
https://twitter.com/5chan_nel (5ch newer account)
https://twitter.com/Steve_MSFT/status/1070096140010287104
https://twitter.com/5chan_nel (5ch newer account)
324デフォルトの名無しさん
2018/12/06(木) 12:49:27.99ID:r+yxrRWT 標準出力に変なもん混ぜるな
325デフォルトの名無しさん
2018/12/06(木) 14:36:39.70ID:8XTishpu326デフォルトの名無しさん
2018/12/07(金) 00:30:59.21ID:d/eT01GS whoamlで取得した実行結果のユーザ名を一行で環境変数に入れるにはどうすれば良いでしょうか
whoami 実行
結果 testpc¥user1
と結果が返ってくる場合、
$test = whoami.split("¥")[1]
と言ったかたちで
$testにuser1を格納させたいのですがうまく行きません
whoami 実行
結果 testpc¥user1
と結果が返ってくる場合、
$test = whoami.split("¥")[1]
と言ったかたちで
$testにuser1を格納させたいのですがうまく行きません
327デフォルトの名無しさん
2018/12/07(金) 01:04:59.92ID:frCtIBO+ 括弧で囲む
(whoami)
(whoami)
328デフォルトの名無しさん
2018/12/07(金) 03:14:11.72ID:0M/LMioQ >>326
昨日と同じ人だと思うけれどpowershellでは変数はコマンドプロンプトとは違い環境変数ではありません。
http://www.atmarkit.co.jp/ait/spv/0709/20/news125_2.html
昨日と同じ人だと思うけれどpowershellでは変数はコマンドプロンプトとは違い環境変数ではありません。
http://www.atmarkit.co.jp/ait/spv/0709/20/news125_2.html
329デフォルトの名無しさん
2018/12/07(金) 07:51:42.00ID:QVqNOX9I 読んでみたけど違いがよくわからん
型を持つってとこ?
型を持つってとこ?
330デフォルトの名無しさん
2018/12/07(金) 08:45:51.25ID:hrhTiXxm 型じゃなく範囲・スコープだよ
環境変数はOSが管理していて、ひとつ値をセットしたら同じ環境内の他プロセス(アプリ)がその値をOSに教えてもらえる
普通の変数はプロセス内で管理されていて、他プロセスは見ることが出来ない
環境変数はOSが管理していて、ひとつ値をセットしたら同じ環境内の他プロセス(アプリ)がその値をOSに教えてもらえる
普通の変数はプロセス内で管理されていて、他プロセスは見ることが出来ない
331デフォルトの名無しさん
2018/12/07(金) 12:18:05.50ID:cSzYN2du Linux では、~/.bashrc に環境変数を書けば、
自分(そのユーザーだけ)が起動するプロセスから、アクセスできる
etc/ 以下なら、PC 全体の設定になる
~/.bashrc は、Windows ではユーザー環境変数。
一方、システム環境変数は、PC 全体の設定で、すべてのユーザーで共有される
例えば、Tで始まる環境変数なら、
ls env: | Where-Object {$_.name -like "T*"}
自分(そのユーザーだけ)が起動するプロセスから、アクセスできる
etc/ 以下なら、PC 全体の設定になる
~/.bashrc は、Windows ではユーザー環境変数。
一方、システム環境変数は、PC 全体の設定で、すべてのユーザーで共有される
例えば、Tで始まる環境変数なら、
ls env: | Where-Object {$_.name -like "T*"}
332デフォルトの名無しさん
2018/12/07(金) 12:42:27.81ID:TQVSWTyy >>326
それを実行している自分自身のユーザ名が欲しいだけなら、わざわざそんなことしなくても
$env:USERNAME
で引っ張ってこれる。
出し惜しみ、小出しにしないで前後関係も話さないと的確なアドバイスが出来ないよ。
それを実行している自分自身のユーザ名が欲しいだけなら、わざわざそんなことしなくても
$env:USERNAME
で引っ張ってこれる。
出し惜しみ、小出しにしないで前後関係も話さないと的確なアドバイスが出来ないよ。
333デフォルトの名無しさん
2018/12/07(金) 16:32:33.86ID:fTv51LPz >>331
.bashrcはPowershellでは$Profileに当たると思うわ
.bashrcはPowershellでは$Profileに当たると思うわ
334デフォルトの名無しさん
2018/12/07(金) 17:14:53.01ID:2MiN5Gqm つーか、Credential使えよ
今時ハードコートとかありえん
今時ハードコートとかありえん
335デフォルトの名無しさん
2018/12/07(金) 17:53:23.13ID:TQVSWTyy >>334
だね。
どうやら ID:x9ea9mMQ ID:d/eT01GS はネットワークドライブのマウントがやりたいようだけど、
dos batch で使うべき net use や whois を PowerShell で使おうとすることに
無理がある。出来なくもないけどエレガントじゃない。
PowerShell でやるなら New-PSDrive だな。
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/new-psdrive
-Credential で任意の(自分以外の)クレデンシャルも指定できるから、
ID:x9ea9mMQ の要件も(たぶん)満たせるだろう。
だね。
どうやら ID:x9ea9mMQ ID:d/eT01GS はネットワークドライブのマウントがやりたいようだけど、
dos batch で使うべき net use や whois を PowerShell で使おうとすることに
無理がある。出来なくもないけどエレガントじゃない。
PowerShell でやるなら New-PSDrive だな。
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/new-psdrive
-Credential で任意の(自分以外の)クレデンシャルも指定できるから、
ID:x9ea9mMQ の要件も(たぶん)満たせるだろう。
336デフォルトの名無しさん
2018/12/07(金) 18:35:56.11ID:fTv51LPz コマンドレット使える所を外部コマンド使うなよとは思うね
出力から値をテキスト抽出で取り出すとかもエレガントではないな
あとlsとかcatとかdirとかのコマンドエイリアス使うのも微妙に感じる
出力から値をテキスト抽出で取り出すとかもエレガントではないな
あとlsとかcatとかdirとかのコマンドエイリアス使うのも微妙に感じる
337デフォルトの名無しさん
2018/12/07(金) 19:53:53.63ID:iBsL10N5 Get-ChileItemに-Depthなんてオプションあったんだな。
うちの会社は↓みたいな整然としたフォルダ構成だから
こういうオプションあるとすごく助かるわ
プロジェクト管理
└2018年
└1Q
└プロジェクトA
└プロジェクトB
└2Q
└プロジェクトC
└3Q
└プロジェクトD
└4Q
└プロジェクトE
└プロジェクトF
└2019年
└1Q
└プロジェクトG
うちの会社は↓みたいな整然としたフォルダ構成だから
こういうオプションあるとすごく助かるわ
プロジェクト管理
└2018年
└1Q
└プロジェクトA
└プロジェクトB
└2Q
└プロジェクトC
└3Q
└プロジェクトD
└4Q
└プロジェクトE
└プロジェクトF
└2019年
└1Q
└プロジェクトG
338デフォルトの名無しさん
2018/12/07(金) 20:47:47.55ID:d/eT01GS treeコマンドやん
339デフォルトの名無しさん
2018/12/07(金) 20:51:06.57ID:0M/LMioQ tree形式で図示しただけ。
gciの-Depth は再帰検索する深さの指定
gciの-Depth は再帰検索する深さの指定
340デフォルトの名無しさん
2018/12/07(金) 20:55:01.67ID:0M/LMioQ ID:iBsL10N5 自身が言うべき事だが
阿呆指摘についカッとなった
阿呆指摘についカッとなった
341デフォルトの名無しさん
2018/12/07(金) 21:00:51.64ID:hrhTiXxm 清濁併せ呑んでこそのPowershell
なんたって名前からしてパワーだからな
力業もどんとこい
なんたって名前からしてパワーだからな
力業もどんとこい
342デフォルトの名無しさん
2018/12/08(土) 11:14:58.74ID:j0zdr08g .NET Core 3.0 Preview 1でWPF、Windows Forms, WinUIが組み込まれてオープンソース化したんか
ほえー
ほえー
343デフォルトの名無しさん
2018/12/08(土) 15:04:34.50ID:8f5a0RKW344デフォルトの名無しさん
2018/12/08(土) 21:38:13.36ID:3Pj/jJ/S Announcing Open Source of WPF, Windows Forms, and WinUI at Microsoft Connect(); 2018
https://blogs.windows.com/buildingapps/2018/12/04/announcing-open-source-of-wpf-windows-forms-and-winui-at-microsoft-connect-2018/
https://blogs.windows.com/buildingapps/2018/12/04/announcing-open-source-of-wpf-windows-forms-and-winui-at-microsoft-connect-2018/
345デフォルトの名無しさん
2018/12/10(月) 20:42:25.20ID:T1JETwww PowerShellでLINQって使えますかね?
346デフォルトの名無しさん
2018/12/10(月) 21:47:33.54ID:PtRqcV9k Linqっぽいことはできる
(1..10).ForEach({ $_ + 100 }).Where({ $_ -gt 105 })
Linqメソッドも呼べるけどC#のようにインスタンスメソッドな感じでは使えない
[Linq.Enumerable]::Where(1..10 -as [int[]], { param($x) $x -gt 5 } -as [Func[int,bool]])
(1..10).ForEach({ $_ + 100 }).Where({ $_ -gt 105 })
Linqメソッドも呼べるけどC#のようにインスタンスメソッドな感じでは使えない
[Linq.Enumerable]::Where(1..10 -as [int[]], { param($x) $x -gt 5 } -as [Func[int,bool]])
347デフォルトの名無しさん
2018/12/10(月) 22:38:26.51ID:vOOk2a2h 必要な箇所でC#コード書けばいいじゃん
外人のコード読むと皆そうやってるよ
外人のコード読むと皆そうやってるよ
348デフォルトの名無しさん
2018/12/11(火) 18:45:17.51ID:zooyFZ6f @echo offと同等のコマンドってパワーシェルにありますか?
349デフォルトの名無しさん
2018/12/11(火) 19:50:47.03ID:5HU4XML/350デフォルトの名無しさん
2018/12/11(火) 20:18:20.80ID:pSYvkLmz powershellでメール受信やるならMailkitがいいですかね?
351デフォルトの名無しさん
2018/12/14(金) 21:21:08.51ID:xmsOh7Vk UWPスレが死んでるのでこっちで聞き直すね
起動してるUWPアプリの列挙ってpowershellでどうやればいいですかね?
全く出てこないんですが
起動してるUWPアプリの列挙ってpowershellでどうやればいいですかね?
全く出てこないんですが
352デフォルトの名無しさん
2018/12/14(金) 23:01:55.52ID:unWqZBXJ Get-WmiObject Win32_Process | where Path -like "*\WindowsApps\*" | fl Process Id,Name,Path
とか
とか
353デフォルトの名無しさん
2018/12/16(日) 12:08:41.16ID:PkDIN57F354デフォルトの名無しさん
2018/12/16(日) 21:18:15.54ID:XltMT+7i 職場のPC(セキュリティ上の理由でネットに繋がらない)がWin7→Win10になったんだが
PowerShellのヘルプがオンラインヘルプだけになって見れないのでつらい
PowerShellのヘルプがオンラインヘルプだけになって見れないのでつらい
355デフォルトの名無しさん
2018/12/16(日) 21:48:37.43ID:GDEIwjsa Get-HelpとかISEのコマンドアドオンじゃダメなん
356354
2018/12/20(木) 22:28:30.63ID:MSiR3oAq >>355
遅くなった & 説明が間違えてたごめん
Get-Helpコマンド自体は使えるんだけど-Fullオプション付けても付けない時と同じ内容しか出てこない
つまり使用例が見れないのでPowerShellを最近使い始めた自分にはつらい
ISEもヘルプを見ようとすると「ネットに繋がりません」みたいなエラーになった
もうリファレンス本買うことにするよ・・・orz
遅くなった & 説明が間違えてたごめん
Get-Helpコマンド自体は使えるんだけど-Fullオプション付けても付けない時と同じ内容しか出てこない
つまり使用例が見れないのでPowerShellを最近使い始めた自分にはつらい
ISEもヘルプを見ようとすると「ネットに繋がりません」みたいなエラーになった
もうリファレンス本買うことにするよ・・・orz
357デフォルトの名無しさん
2018/12/20(木) 22:59:49.46ID:PfMwju1x 別PCでSave-Helpでファイルダウンロードして手動で配置したらあかんの?
358356
2018/12/21(金) 01:31:43.78ID:GySz2aRs359デフォルトの名無しさん
2018/12/21(金) 08:22:37.58ID:Lg32FCuG 5.1対応の良い感じの書籍あるんかな
360デフォルトの名無しさん
2018/12/22(土) 07:51:50.03ID:i7ExTGRa 変数展開するときに、
$test
と
${test}
ではなにが違うんですか?
$test
と
${test}
ではなにが違うんですか?
361デフォルトの名無しさん
2018/12/22(土) 12:12:36.07ID:UGqq2IDw >>360
基本一緒でしょう
GetType()
してみるとわかりますと同じですね。
ただし、${}の指定では配列のインデックス指定できない
${a[0]} とかは許されないですね。
なんでこういうのがあるかは分りません。
基本一緒でしょう
GetType()
してみるとわかりますと同じですね。
ただし、${}の指定では配列のインデックス指定できない
${a[0]} とかは許されないですね。
なんでこういうのがあるかは分りません。
362デフォルトの名無しさん
2018/12/22(土) 14:03:56.67ID:YB2ocxbA $test = "TEST"
"test$testtest"
"test${test}test"
こういう時にでも使うんじゃねーの
求める形に適当なのを使えばいいんじゃねーかな
"test$testtest"
"test${test}test"
こういう時にでも使うんじゃねーの
求める形に適当なのを使えばいいんじゃねーかな
363デフォルトの名無しさん
2018/12/22(土) 15:32:06.19ID:TlQhzlLR 中括弧つければ通常使えない文字も使える
${\(^o^)/} = "オワタ"
${ Hello ?? World! `nby powershell } = "hi"
どんな文字列でも変数名として有効であることが保証されるからコード生成とかで使われるらしい
普通は文字列への埋め込み時くらいしか使わんね
${\(^o^)/} = "オワタ"
${ Hello ?? World! `nby powershell } = "hi"
どんな文字列でも変数名として有効であることが保証されるからコード生成とかで使われるらしい
普通は文字列への埋め込み時くらいしか使わんね
364デフォルトの名無しさん
2018/12/22(土) 16:16:19.79ID:VDYmdehC >>360
私はコードの可読性を高めるためになるべく ${hoge} といった形で記述するようにしてます。
あと、文字列をつなぐような場合でも ${hoge} が使われます。
$hoge = "hoge"
echo "${hoge}fuga"
この場合は「hogefuga」が出力されますが、
$hoge = "hoge"
echo "$hogefuga"
これでは$hogefuga という変数を参照することになるので思ったように動作しません。
私はコードの可読性を高めるためになるべく ${hoge} といった形で記述するようにしてます。
あと、文字列をつなぐような場合でも ${hoge} が使われます。
$hoge = "hoge"
echo "${hoge}fuga"
この場合は「hogefuga」が出力されますが、
$hoge = "hoge"
echo "$hogefuga"
これでは$hogefuga という変数を参照することになるので思ったように動作しません。
365デフォルトの名無しさん
2018/12/22(土) 16:37:26.19ID:UGqq2IDw なるほどね
$test="TEST"
"test"+$test+"test"
より次の方がスマートかもね
"test${test}test"
$test="TEST"
"test"+$test+"test"
より次の方がスマートかもね
"test${test}test"
366デフォルトの名無しさん
2018/12/22(土) 16:59:32.04ID:YB2ocxbA >>363
そういえば日本語の変数もできるんでしたね
そういえば日本語の変数もできるんでしたね
367デフォルトの名無しさん
2018/12/22(土) 17:09:04.46ID:HuIkWn7P 【たけしの超常現象特番、本日18時56分】 大槻教授がUFOやマ@トレーヤを見たらどんな反応するかな
http://rosie.5ch.net/test/read.cgi/liveplus/1545444404/l50
http://rosie.5ch.net/test/read.cgi/liveplus/1545444404/l50
368デフォルトの名無しさん
2018/12/22(土) 17:15:32.75ID:uHYOaa0r ダブルコーテーション内で変数を値展開させたい場合空白文字で区切られていないとだめ。つまり
echo "$hoge fuga"
であれば
hoge fuga
にはなる。
hogefugaを得たい場合、俺なら
echo ($hoge+"fuga")
と書く
echo "$hoge fuga"
であれば
hoge fuga
にはなる。
hogefugaを得たい場合、俺なら
echo ($hoge+"fuga")
と書く
369デフォルトの名無しさん
2018/12/22(土) 18:16:02.24ID:UGqq2IDw echoを使う理由はなんかあるのかな?
私はecho自体つかわないので
私はecho自体つかわないので
370デフォルトの名無しさん
2018/12/22(土) 18:17:09.93ID:UGqq2IDw371デフォルトの名無しさん
2018/12/22(土) 18:20:02.63ID:b6CiPLFa ログを標準出力に出力するときに普通に使う
aho=echo `command`
こうやってコマンドの標準出力の結果を環境変数にいれるときにも
普通に使う
echoなかったらなに使えばいいワケ?
aho=echo `command`
こうやってコマンドの標準出力の結果を環境変数にいれるときにも
普通に使う
echoなかったらなに使えばいいワケ?
372デフォルトの名無しさん
2018/12/22(土) 18:30:20.06ID:UGqq2IDw いや、使う場面がないので聞いただけ
通常ログに返すときにはそのままechoなしで書いているもので
上記のやり取りの例だとechoいらないな〜と思ったまで
通常ログに返すときにはそのままechoなしで書いているもので
上記のやり取りの例だとechoいらないな〜と思ったまで
373デフォルトの名無しさん
2018/12/22(土) 19:12:48.17ID:BLULObxH echo使わなくてもコマンドの標準出力の結果を変数に入れられるのでは?
環境変数???
環境変数???
374デフォルトの名無しさん
2018/12/22(土) 19:19:04.64ID:TlQhzlLR オプション付けないなら意味はない
使う機会は-NoEnumerateするときくらいかな
-NoEnumerateすると配列を塊のままパイプに流せる
"1-one","2-two" | foreach { Write-Output ($_ -split "-") } | Write-Host
1
one
2
two
"1-one","2-two" | foreach { Write-Output ($_ -split "-") -NoEnumerate } | Write-Host
1 one
2 two
使う機会は-NoEnumerateするときくらいかな
-NoEnumerateすると配列を塊のままパイプに流せる
"1-one","2-two" | foreach { Write-Output ($_ -split "-") } | Write-Host
1
one
2
two
"1-one","2-two" | foreach { Write-Output ($_ -split "-") -NoEnumerate } | Write-Host
1 one
2 two
375デフォルトの名無しさん
2018/12/22(土) 19:19:11.25ID:b6CiPLFa 失礼した
パワー系池沼シェルについてはオレは知らん
スレタイみずに普通のシェルの話してるかと思ってたわ
パワー系池沼シェルについてはオレは知らん
スレタイみずに普通のシェルの話してるかと思ってたわ
376デフォルトの名無しさん
2018/12/22(土) 19:20:29.55ID:UGqq2IDw そのまま書けば標準出力先への出力ですよね
私も不勉強なのですが、場合によりほかのシェル言語経験の方で
そちらではそれが普通なので、その習慣で書いているとかないですかね?
PSの環境変数にも特段echoいらないと思うし。
私も不勉強なのですが、場合によりほかのシェル言語経験の方で
そちらではそれが普通なので、その習慣で書いているとかないですかね?
PSの環境変数にも特段echoいらないと思うし。
377デフォルトの名無しさん
2018/12/22(土) 19:39:35.63ID:90OqLo7S $env:aho = command で普通に入るね
echoとWrite-Outputの役割はpsに慣れてない人への広い意味でのエイリアスだと思う
シェル言語はツールとしての側面があるから、不使用の方が高尚だと矯正するようなものでもないと思う
echoとWrite-Outputの役割はpsに慣れてない人への広い意味でのエイリアスだと思う
シェル言語はツールとしての側面があるから、不使用の方が高尚だと矯正するようなものでもないと思う
378デフォルトの名無しさん
2018/12/22(土) 20:18:16.73ID:SAN+T+wn ループでWrite-Outputすると遅い気がする
379デフォルトの名無しさん
2018/12/22(土) 20:24:16.85ID:SAN+T+wn (measure-command{
$first = [datetime]"2000/1/1"
$last = [datetime]"2018/1/1"
foreach($t in 0..($last - $first).TotalHours)
{
$first + [timespan]::FromHours($t)
}
}).TotalMilliseconds
の
$first + [timespan]::FromHours($t)
を
Write-Output ($first + [timespan]::FromHours($t))
にすると3倍くらいかかる
$first = [datetime]"2000/1/1"
$last = [datetime]"2018/1/1"
foreach($t in 0..($last - $first).TotalHours)
{
$first + [timespan]::FromHours($t)
}
}).TotalMilliseconds
の
$first + [timespan]::FromHours($t)
を
Write-Output ($first + [timespan]::FromHours($t))
にすると3倍くらいかかる
380デフォルトの名無しさん
2018/12/22(土) 20:27:37.85ID:uHYOaa0r 変数の自動展開は他の言語の経験者が一番最初に気づくPowerShellの特徴だよね
暗黙の|Out-Defaultが常に付いてる処理になっている
詳しくは下記参照
https://technet.microsoft.com/ja-jp/magazine/gg213852.aspx
https://blog.shibata.tech/entry/2016/01/11/151201
暗黙の|Out-Defaultが常に付いてる処理になっている
詳しくは下記参照
https://technet.microsoft.com/ja-jp/magazine/gg213852.aspx
https://blog.shibata.tech/entry/2016/01/11/151201
381デフォルトの名無しさん
2018/12/22(土) 20:30:19.10ID:VDYmdehC >>372
> 上記のやり取りの例だとechoいらないな〜と思ったまで
ぜんぜんそれでも文法&動作的にはオッケーです。
可読性、保守性を上げるためのマイルールです。
自分だけがメンテするスクリプトなら問題ありませんが、複数の人間が
読む可能性がある場合は「何をやろうとしているのか」を
明確にするためにそうしています。
PowerShell に明るくない人が読む可能性もありますから。
なお echo は Write-Output のエイリアスですので念のため。
> 上記のやり取りの例だとechoいらないな〜と思ったまで
ぜんぜんそれでも文法&動作的にはオッケーです。
可読性、保守性を上げるためのマイルールです。
自分だけがメンテするスクリプトなら問題ありませんが、複数の人間が
読む可能性がある場合は「何をやろうとしているのか」を
明確にするためにそうしています。
PowerShell に明るくない人が読む可能性もありますから。
なお echo は Write-Output のエイリアスですので念のため。
382デフォルトの名無しさん
2018/12/22(土) 20:45:17.71ID:uHYOaa0r > なお echo は Write-Output のエイリアスですので念のため。
一言余計、そんなことは誰でも知ってる。勘違い馬鹿なID:b6CiPLFa以外は
一言余計、そんなことは誰でも知ってる。勘違い馬鹿なID:b6CiPLFa以外は
383デフォルトの名無しさん
2018/12/22(土) 20:52:39.16ID:b6CiPLFa ほらな低学歴ドカタまるだし()
384デフォルトの名無しさん
2018/12/22(土) 20:57:41.33ID:2OCHmGHo 流石にこれは酷い
385デフォルトの名無しさん
2018/12/22(土) 21:11:08.80ID:hL+/9mZc この流れで思い出した
PSの出力をログに同時に吐くようにできませんか?
PSの出力をログに同時に吐くようにできませんか?
386デフォルトの名無しさん
2018/12/22(土) 21:18:03.91ID:TlQhzlLR 手っ取り早いのはStart-Transcript
387デフォルトの名無しさん
2018/12/22(土) 21:18:56.31ID:uHYOaa0r Start-Transcript ファイル名 -append
388デフォルトの名無しさん
2018/12/22(土) 21:24:11.29ID:UGqq2IDw >>358
あ、用意されていて簡単にできたはずだ。なんだっけな・・・
あ、用意されていて簡単にできたはずだ。なんだっけな・・・
389デフォルトの名無しさん
2018/12/22(土) 21:47:51.46ID:HBvYruUV $_ っていうのはどういう意味?
390デフォルトの名無しさん
2018/12/22(土) 21:52:10.12ID:SAN+T+wn パイプライン入力の自動変数
391デフォルトの名無しさん
2018/12/22(土) 22:55:05.08ID:84E3pYZa alias と入力してみ。
漏れは、Linux・コマンドプロンプトのalias を使う
%, ?
cat, cd, chdir, cp, curl, dir, echo, foreach, ls,
man, mv, ps, pwd, ren, rm, rmdir, tee, type, wget, where
たいていは、Ruby からPowerShell(PS) を呼ぶか、
ダブルクリックで起動したい時は、VBScript から呼ぶ
Ruby, PS, VBS が入り乱れる
漏れは、Linux・コマンドプロンプトのalias を使う
%, ?
cat, cd, chdir, cp, curl, dir, echo, foreach, ls,
man, mv, ps, pwd, ren, rm, rmdir, tee, type, wget, where
たいていは、Ruby からPowerShell(PS) を呼ぶか、
ダブルクリックで起動したい時は、VBScript から呼ぶ
Ruby, PS, VBS が入り乱れる
392デフォルトの名無しさん
2018/12/23(日) 00:15:24.77ID:qffc/3mK ps:オレのPC
PS >.\datecount.ps1 > xxx.txt
----
datecount.ps1(>>379)
date
$first = [datetime]"2000/1/1"
$last = [datetime]"2018/1/1"
foreach($t in 0..($last - $first).TotalHours)
{
$first + [timespan]::FromHours($t)
}
date
----
xxx.txt
2018年12月23日 0:02:31 ← 開始
2000年1月1日 0:00:00
2000年1月1日 1:00:00
(-snip-)
2017年12月31日 23:00:00
2018年1月1日 0:00:00
2018年12月23日 0:03:37 ← 終了
PS >.\datecount.ps1 > xxx.txt
----
datecount.ps1(>>379)
date
$first = [datetime]"2000/1/1"
$last = [datetime]"2018/1/1"
foreach($t in 0..($last - $first).TotalHours)
{
$first + [timespan]::FromHours($t)
}
date
----
xxx.txt
2018年12月23日 0:02:31 ← 開始
2000年1月1日 0:00:00
2000年1月1日 1:00:00
(-snip-)
2017年12月31日 23:00:00
2018年1月1日 0:00:00
2018年12月23日 0:03:37 ← 終了
393デフォルトの名無しさん
2018/12/23(日) 00:18:08.99ID:qffc/3mK bash:オレのPC(>>392と同じ計算機)のvmwareのcentos
$ ./datecount.sh > xxx.txt
----
datecount.sh
#!/bin/bash
date
FIRST=`date +%s -d "2000/1/1 0:00:00"`
LAST=`date +%s -d "2018/1/1 0:00:00"`
A=$((FIRST-=3600))
while [ ${A} -lt ${LAST} ]
do
date -d @$((A+=3600)) "+%Y年%-m月%-d日 %k:%M:%S"
done
date
----
xxx.txt
2018年 12月 22日 土曜日 23:59:44 JST ← 開始
2000年1月1日 0:00:00
2000年1月1日 1:00:00
(-snip-)
2017年12月31日 23:00:00
2018年1月1日 0:00:00
2018年 12月 23日 日曜日 00:01:53 JST ← 終了
$ ./datecount.sh > xxx.txt
----
datecount.sh
#!/bin/bash
date
FIRST=`date +%s -d "2000/1/1 0:00:00"`
LAST=`date +%s -d "2018/1/1 0:00:00"`
A=$((FIRST-=3600))
while [ ${A} -lt ${LAST} ]
do
date -d @$((A+=3600)) "+%Y年%-m月%-d日 %k:%M:%S"
done
date
----
xxx.txt
2018年 12月 22日 土曜日 23:59:44 JST ← 開始
2000年1月1日 0:00:00
2000年1月1日 1:00:00
(-snip-)
2017年12月31日 23:00:00
2018年1月1日 0:00:00
2018年 12月 23日 日曜日 00:01:53 JST ← 終了
394デフォルトの名無しさん
2018/12/23(日) 00:47:12.06ID:qffc/3mK 改めてパワー系池沼シェルの遅さが実感できたわ
linuxのほうは毎回dateコマンド経由して結果を取得するものすごい悪い条件なのに
パワー系池沼シェルは組込みオブジェクト使ってもこの速度だからな
組込みオブジェクトを使わなかっらどうなるか
つまりそういうことになる
お話にならない。。。
linuxのほうは毎回dateコマンド経由して結果を取得するものすごい悪い条件なのに
パワー系池沼シェルは組込みオブジェクト使ってもこの速度だからな
組込みオブジェクトを使わなかっらどうなるか
つまりそういうことになる
お話にならない。。。
395デフォルトの名無しさん
2018/12/23(日) 00:59:55.54ID:M6Mt1G8k datew
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 【テレビ】25年ぶり復活「炎のチャレンジャー」南原清隆&菊池風磨がMC 懐かし「電流イライラ棒」も [湛然★]
- 中国「捜索レーダー起動は各国の通常の手法」 火器管制用か回答せず [蚤の市★]
- 【訃報】声優・西村知道さん死去 「SLAM DUNK」安西先生役 9月に体調不良のため一時休業 [少考さん★]
- 女って金とイケメンしか見てないよな
- 【閲覧注意】ちずちんな
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- 高市総理、睡眠時間30分😢
- フェリーの魅力を語ろう。
- 【仁藤悲報】Colaboさん、東京都の公金を月7万円の「整体治療費」に使っていたことが判明してしまう!!!! [535458756]
