PowerShell -Part 3
■ このスレッドは過去ログ倉庫に格納されています
>>326
それを実行している自分自身のユーザ名が欲しいだけなら、わざわざそんなことしなくても
$env:USERNAME
で引っ張ってこれる。
出し惜しみ、小出しにしないで前後関係も話さないと的確なアドバイスが出来ないよ。 >>331
.bashrcはPowershellでは$Profileに当たると思うわ つーか、Credential使えよ
今時ハードコートとかありえん >>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 の要件も(たぶん)満たせるだろう。 コマンドレット使える所を外部コマンド使うなよとは思うね
出力から値をテキスト抽出で取り出すとかもエレガントではないな
あとlsとかcatとかdirとかのコマンドエイリアス使うのも微妙に感じる Get-ChileItemに-Depthなんてオプションあったんだな。
うちの会社は↓みたいな整然としたフォルダ構成だから
こういうオプションあるとすごく助かるわ
プロジェクト管理
└2018年
└1Q
└プロジェクトA
└プロジェクトB
└2Q
└プロジェクトC
└3Q
└プロジェクトD
└4Q
└プロジェクトE
└プロジェクトF
└2019年
└1Q
└プロジェクトG tree形式で図示しただけ。
gciの-Depth は再帰検索する深さの指定 ID:iBsL10N5 自身が言うべき事だが
阿呆指摘についカッとなった 清濁併せ呑んでこそのPowershell
なんたって名前からしてパワーだからな
力業もどんとこい .NET Core 3.0 Preview 1でWPF、Windows Forms, WinUIが組み込まれてオープンソース化したんか
ほえー >>342
Preview出てたんだ
早速使ってみたい 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]]) 必要な箇所でC#コード書けばいいじゃん
外人のコード読むと皆そうやってるよ @echo offと同等のコマンドってパワーシェルにありますか? >>348
エコー防止したいなら
$null = 式
式 | Out-Null
式 > $null
[void]式
どれでもどうぞ powershellでメール受信やるならMailkitがいいですかね? UWPスレが死んでるのでこっちで聞き直すね
起動してるUWPアプリの列挙ってpowershellでどうやればいいですかね?
全く出てこないんですが Get-WmiObject Win32_Process | where Path -like "*\WindowsApps\*" | fl Process Id,Name,Path
とか >>345
具体的にどんなことをやりたいか書いていただくと
PowerShellでLINQ利用した場合の例を挙げられると思うけど 職場のPC(セキュリティ上の理由でネットに繋がらない)がWin7→Win10になったんだが
PowerShellのヘルプがオンラインヘルプだけになって見れないのでつらい Get-HelpとかISEのコマンドアドオンじゃダメなん >>355
遅くなった & 説明が間違えてたごめん
Get-Helpコマンド自体は使えるんだけど-Fullオプション付けても付けない時と同じ内容しか出てこない
つまり使用例が見れないのでPowerShellを最近使い始めた自分にはつらい
ISEもヘルプを見ようとすると「ネットに繋がりません」みたいなエラーになった
もうリファレンス本買うことにするよ・・・orz 別PCでSave-Helpでファイルダウンロードして手動で配置したらあかんの? >>357
セキュリティガチガチの保険会社の現場なんで無理っす><
ってか↓これポチりましたw
https://www.amazon.co.jp/dp/477415542X 変数展開するときに、
$test
と
${test}
ではなにが違うんですか? >>360
基本一緒でしょう
GetType()
してみるとわかりますと同じですね。
ただし、${}の指定では配列のインデックス指定できない
${a[0]} とかは許されないですね。
なんでこういうのがあるかは分りません。 $test = "TEST"
"test$testtest"
"test${test}test"
こういう時にでも使うんじゃねーの
求める形に適当なのを使えばいいんじゃねーかな 中括弧つければ通常使えない文字も使える
${\(^o^)/} = "オワタ"
${ Hello ?? World! `nby powershell } = "hi"
どんな文字列でも変数名として有効であることが保証されるからコード生成とかで使われるらしい
普通は文字列への埋め込み時くらいしか使わんね >>360
私はコードの可読性を高めるためになるべく ${hoge} といった形で記述するようにしてます。
あと、文字列をつなぐような場合でも ${hoge} が使われます。
$hoge = "hoge"
echo "${hoge}fuga"
この場合は「hogefuga」が出力されますが、
$hoge = "hoge"
echo "$hogefuga"
これでは$hogefuga という変数を参照することになるので思ったように動作しません。 なるほどね
$test="TEST"
"test"+$test+"test"
より次の方がスマートかもね
"test${test}test" >>363
そういえば日本語の変数もできるんでしたね ダブルコーテーション内で変数を値展開させたい場合空白文字で区切られていないとだめ。つまり
echo "$hoge fuga"
であれば
hoge fuga
にはなる。
hogefugaを得たい場合、俺なら
echo ($hoge+"fuga")
と書く echoを使う理由はなんかあるのかな?
私はecho自体つかわないので ログを標準出力に出力するときに普通に使う
aho=echo `command`
こうやってコマンドの標準出力の結果を環境変数にいれるときにも
普通に使う
echoなかったらなに使えばいいワケ? いや、使う場面がないので聞いただけ
通常ログに返すときにはそのままechoなしで書いているもので
上記のやり取りの例だとechoいらないな〜と思ったまで echo使わなくてもコマンドの標準出力の結果を変数に入れられるのでは?
環境変数??? オプション付けないなら意味はない
使う機会は-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 失礼した
パワー系池沼シェルについてはオレは知らん
スレタイみずに普通のシェルの話してるかと思ってたわ そのまま書けば標準出力先への出力ですよね
私も不勉強なのですが、場合によりほかのシェル言語経験の方で
そちらではそれが普通なので、その習慣で書いているとかないですかね?
PSの環境変数にも特段echoいらないと思うし。 $env:aho = command で普通に入るね
echoとWrite-Outputの役割はpsに慣れてない人への広い意味でのエイリアスだと思う
シェル言語はツールとしての側面があるから、不使用の方が高尚だと矯正するようなものでもないと思う ループでWrite-Outputすると遅い気がする (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倍くらいかかる >>372
> 上記のやり取りの例だとechoいらないな〜と思ったまで
ぜんぜんそれでも文法&動作的にはオッケーです。
可読性、保守性を上げるためのマイルールです。
自分だけがメンテするスクリプトなら問題ありませんが、複数の人間が
読む可能性がある場合は「何をやろうとしているのか」を
明確にするためにそうしています。
PowerShell に明るくない人が読む可能性もありますから。
なお echo は Write-Output のエイリアスですので念のため。 > なお echo は Write-Output のエイリアスですので念のため。
一言余計、そんなことは誰でも知ってる。勘違い馬鹿なID:b6CiPLFa以外は この流れで思い出した
PSの出力をログに同時に吐くようにできませんか? Start-Transcript ファイル名 -append >>358
あ、用意されていて簡単にできたはずだ。なんだっけな・・・ 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 が入り乱れる 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 ← 終了 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 ← 終了 改めてパワー系池沼シェルの遅さが実感できたわ
linuxのほうは毎回dateコマンド経由して結果を取得するものすごい悪い条件なのに
パワー系池沼シェルは組込みオブジェクト使ってもこの速度だからな
組込みオブジェクトを使わなかっらどうなるか
つまりそういうことになる
お話にならない。。。 >>390
だけじゃなくてswitch(式)の式の値にも使われてる
意外と便利 PSでテキスト処理する上でそんままやるやつ居るんやな 結果をlogに出力するだけならすぐ終わるべ
2018年12月23日 1:44:41
2000年01月01日 00:00:00
2000年01月01日 01:00:00
2000年01月01日 02:00:00
2017年12月31日 22:00:00
2017年12月31日 23:00:00
2018年01月01日 00:00:00
2018年12月23日 1:44:43 ピラフ大王なんて、PowerShell で、5ch のスレをスクレイピングするよw
漏れは、Ruby でやるけど 単に出力がネックになってるだけだからな
dateなんて関係ねえw >>379は変数への代入とかを想定して書いたんだけどな
値を返すのを関数型言語っぽく式で書けるのはいいけど、
手続き的なコードと混ざる場合もあるからコードの意図が分かりにくくなりがち 計算結果をリストに入れるだけなら0.3秒で終わる
つまりほぼ画面出力かかってる時間なのに
それを組み込みオブジェクトがどうのこうの訳わからんこと言ってる馬鹿さよ psちゃんはストリーム出力がやたら遅い上に日本語ロケールだとさらに遅い 初学者と低能アンチが自らおバカを披露するスレはここですか。
にやにや眺めてる 画面出力()
やはりパワー系池沼シェルは
池沼が使ってるだけあるわ
オレの試験をみて画面に出力してると思ってるなら
相当知能に問題がある
というよりなシェルの仕組み自体を理解してない
コマンドでは両方とも標準出力をファイルにリダイレクトしている
しかもdate使ってるのはlinuxだからな
池沼はパワー系池沼シェルがdate使ってると思ってるらしいわ
普通に外部コマンド呼び出しのほうがオーバーヘッドがあるからな
まずシェルの内部コマンドと外部コマンドの違いすら分かってない
つまり、linuxはもともと相当不利
パワー系池沼シェルがこの部分で速いのはアタリマエ
基本的なことがなにもわかってない
所詮、低学歴知恵遅れのオツムの程度は
この程度
低学歴はいちいちいつも自分は低学歴でバカですと
自白するからな いろいろぐじゃぐじゃ言ってるけど、無駄改行も相まって目障りだね
同じ内容で言葉を増やすのはバカでもできて、言葉を減らすには学が必要だ、って誰が言ったんだっけかな 低学歴知恵遅れには
一から十までいわないと分からないからな
クソみたいに知能が低い ホントなこの板はクソみたいに知能の低いのしかいないのが
よくわかるわ ああよく見たらたしかにリダイレクトしてたわw
でどこがネックになってるの?
内部コマンド使えるpowershellが圧倒的に速かったって言いたかっただけ? 低学歴知恵遅れの池沼は
日付とかmsが事前に用意してくれるオブジェクトしか使わないから
問題ない
低学歴知恵遅れの池沼は
自分で作ったコマンドを標準入出力で組み合わせて使える知能すら備えてないから
問題ない いちいち別プロセス起動するのがエレガント
だとでも言いたいのかね このアスペの相手は無理だわw
低い次元のしょぼい知識でマウントとろうとするし
またそれ自体が目的になってるからみんな戸惑うんだと思うわ あんな何度もdate呼ぶような、しかもしょうもない処理を何度も使うなら
普通だったらCで書いたコマンドを作るからな
bash:オレのPC(>>392と同じ計算機)のvmwareのcentos
$ ./datecount2.sh > xxx.txt
----
datecount.c
#include <stdio.h>
#include <time.h>
#define FIRST 946652400
#define LAST 1514732400
int main(void) {
struct tm* p_tm;
time_t t = FIRST;
for ( ; t <= LAST; t += 3600) {
p_tm = localtime(&t);
fprintf(stdout, "%d年%d月%d日 %02d:%02d:%02d\n", p_tm->tm_year + 1900, p_tm->tm_mon + 1, p_tm->tm_mday, p_tm->tm_hour, p_tm->tm_min, p_tm->tm_sec);
}
return 0;
} #!/bin/bash
date
./datecount
date
----
xxx.txt
018年 12月 23日 日曜日 11:49:43 JST ← 開始
2000年1月1日 00:00:00
2000年1月1日 01:00:00
(-snip-)
2017年12月31日 23:00:00
2018年1月1日 00:00:00
2018年 12月 23日 日曜日 11:49:43 JST ← 終了
一瞬で終わる
なんでもシェルスクリプトだけでやる必要ななんかまったくない
こういった出力結果を加工するのは、当然標準入出力になる マウント()
低学歴知恵遅れが
いちいちオレにつかっかてきたくせに
マウントとかいってるわ
マジで低学歴知恵遅れは
ハジというもんがないらしいな
低学歴知恵遅れは
なんの取り柄もないゴミでクズのくせに
プライドだけは高いからな
ホントな低学歴知恵遅れは
どんだけゴミやねんと 支離滅裂だなこのアスペはw
ある意味見てておもろい生き物だわ あの...だからストリーム出力が遅いんですよPSちゃん
date
$log = New-Object System.Text.StringBuilder
$first = [datetime]"2000/1/1"
$last = [datetime]"2018/1/1"
foreach($t in 0..($last - $first).TotalHours)
{
[void]$log.AppendLine(($first + [timespan]::FromHours($t)).ToString("yyyy年MM月dd日 HH:mm:ss"))
}
$log.ToString()
date
これでリダイレクトなら2秒弱だけど
素実行でコンソール出力ありだと10秒ほどかかる 低学歴知恵遅れが
ムリして頭いいふりしようとしても
頭悪いのなんかすぐにバレるからな
残念なことに
本人は気付いてないかもしれないが
いちいち頭悪いですと自己紹介するからな
残念なことに 低学歴知恵遅れって
低学歴なのがバレてないと思ってるからな
レスすればするほど
低学歴の自己紹介してるのが
分かってない 自己評価だけは高い低学歴知恵遅れにありがちな典型的なサンプルといっていい
底辺であるほどその傾向が高い傾向にあることは
この板で多くのサンプルをみてきたからすぐにわかるわ 低学歴知恵遅れは自覚がない
そいつが低学歴知恵遅れなのは
低学歴がみればすぐに分かるからな
残念なことに
すぐにバレるのが分かってない やっぱりな低学歴知恵遅れは板から排除しないといけないわ
まともな人間がよってこない
低学歴知恵遅れの頭悪いレスでうまってたら
まともなヤツはどんびきするからな
しかも頭悪いことを自信満々でいうからな
そして声だけはでかい
バルサン焚いて低学歴知恵遅れを
この板から駆除しないといけない 糖質さんちゃんとお薬飲んでお休みなさいな、ネット耽溺は毒ですよ? ほらな身に覚えがあるのが
わらわらこのスレによってきてるわ
誘虫灯になってるわ
図星だからな シェルでやる必要ないってなると
そだねーで話し終わるんですけど…
そういう主張だったの?
bash持ち出してきて着地点そこでいいの? こいつ的にはいいんだろうw
もう少し観察してみよう そうオレ以外のレスはまとめてNGで正解
情報価値のある有益なレスはオレのレスしかない
他の低学歴知恵遅れのレスは
情報価値ゼロ ■ このスレッドは過去ログ倉庫に格納されています