X



【最強CUI】PowerShell -Part 2 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0226デフォルトの名無しさん
垢版 |
2017/08/09(水) 19:38:02.86ID:LnmC5B+P
>>221
暗号ねぇ w
Write-Host ("{0:0.00}MB" -f (gps chrome | Measure-Object PM -sum).sum / 1mb))
ちなみに書式変換時は元々四捨五入なのでFloorとかは要らんよ
0227デフォルトの名無しさん
垢版 |
2017/08/09(水) 19:41:50.81ID:LnmC5B+P
>>225
配列を便利に扱えるようにしてるのはわかるけどちょっとやり過ぎかな
-eq 演算子なんてトラップ以外の何者でもないだろ
あと全然関係ないけど -isnull 演算子が欲しい
0228デフォルトの名無しさん
垢版 |
2017/08/09(水) 19:46:51.80ID:xf4P4t8V
>>226
[int]だけで四捨五入になるのは知ってるけど、分かりやすくした

暗号は言い過ぎたかもしれんが、そんなん書くより一度変数に入れたくならんか?w
0230デフォルトの名無しさん
垢版 |
2017/08/09(水) 20:10:17.94ID:LnmC5B+P
>>228
> そんなん書くより一度変数に入れたくならんか?w
この程度でなるか?
って話
程度は人によって違うからまあ好きにしなよ

>>229
スマホから書き込んでるから細かいところは目を瞑ってくれ
0231デフォルトの名無しさん
垢版 |
2017/08/09(水) 21:53:40.19ID:VOmW1luq
課長 「SumをMBで出してくれ」
A君 "{0:0.00}MB" -f ((gps chrome | Measure-Object PM -sum).sum / 1mb)
B君 gps chrome | Measure-Object PM -sum | %{[String]::format("{0:0.00}MB", $_.sum/1mb)}

課長 「すばらしい! じゃあついでにMax値とMin値もMBで出してちょうだい」
A君 「ぐぬぬ・・・」
B君 gps chrome | Measure-Object PM -sum -Maximum -Minimum | %{[String]::format("Sum: {0:0.00}MB`nMax: {1:0.00}MB`nMin: {2:0.00}MB", ($_.sum, $_.maximum, $_.minimum | %{$_/1mb}) )}
明美 「きゃーB君ステキ ブッチュー」
0232デフォルトの名無しさん
垢版 |
2017/08/09(水) 23:08:02.45ID:VOmW1luq
C君 gps chrome | Measure-Object PM -sum -Maximum -Minimum | %{$_.sum, $_.maximum, $_.minimum | %{$_/1mb}} | %{"{0:0.00}MB" -f $_}
明美 「キャー 抱いてぇー」
0233デフォルトの名無しさん
垢版 |
2017/08/10(木) 00:28:12.53ID:6XCllBcj
自分ならこうするかな
一行で書かなきゃいけないルールでもあるのか、その会社は

gps vivaldi | Measure-Object PM -sum -Maximum -Minimum| %{
foreach($i in 'Sum','Maximum','Minimum'){
"{0}: {1:0.00}MB" -f $i.Substring(0,3),($_.$i/1mb)
}
}
0236デフォルトの名無しさん
垢版 |
2017/08/13(日) 11:23:55.65ID:i2h5TtLX
多少は実用的なやつを。サブスレッドも合計してメモリ食ってるアプリのトップ3

Get-Process|Group Name|%{$_|Add-Member Length ($_.group|measure PM -Sum|%{$_.sum}) -PassThru}|
sort length -Descending|select -First 3|%{'{0}: {1:#,0.}MB'-f $_.name,($_.length/1mb)}
0237デフォルトの名無しさん
垢版 |
2017/08/16(水) 20:21:19.54ID:TEzkLuqt
初心者ですが質問です
ISEでデバックした時とスクリプトで実行した時で
GUI?の見た目が違うのですが(スクリプト実行だとGUIが古い感じ)
デバックしてる時と同じGUIにするにはどうすれば良いのでしょうか?
0238デフォルトの名無しさん
垢版 |
2017/08/16(水) 20:46:46.65ID:qxnt2v0K
>>237
デバッグね
0239デフォルトの名無しさん
垢版 |
2017/08/20(日) 16:38:06.37ID:+qRmeWmG
「マイクロソフト社製の基本ソフトを使うパソコン
に搭載されたシステム管理機能パワーシェル(PS)を操る(中略)
ファイルレス攻撃は、実行形式でないLNKなど別の拡張子のファイルが添付されている。
ウイルスの本体ではないため、単体では情報収集などの目的を果たせないが、
PSに命令する不正プログラムが含まれている(中略)
ウイルスを勝手にダウンロード(中略)
自分の存在を隠す」

「ファイルレス」見えないサイバー攻撃急増 政府・金融機関など標的(1/3ページ) - 産経ニュース
http://www.sankei.com/affairs/news/170820/afr1708200002-n1.html
2017.8.20 06:38
0240デフォルトの名無しさん
垢版 |
2017/09/05(火) 17:17:36.30ID:NCuJt1Zi
>>237
スクリプトで実行って関連付けで実行ってこと?
ISEとはUIが別ものだと思うけど
0242237
垢版 |
2017/09/08(金) 18:15:40.23ID:fHkqyhXS
>>240
レスありがとうございます
https://letspowershell.blogspot.jp/2015/07/powershell_9.html
こちらのブログで質問させて頂きまして無事解決しました

[System.Windows.Forms.Application]::EnableVisualStyles();
を追加して無事デバッグと同じフォームになりました
0243デフォルトの名無しさん
垢版 |
2017/09/08(金) 18:46:32.46ID:v1oxBnRc
質問です

set-location でパスを入力する時、日本語が含まれていると文字化けしてしまい
「Set-Location : パス 'C:\Users\nashi\Desktop\SHO\PDF 繧「繝励Μ' が存在しないため検出できません。」
と言われてしまいます。

バッチファイル?からではなく、powershellに直接入力した時は起こらないのですが
どうしても回避する方法がわかりません。

どなたか分からないでしょうか。
0245デフォルトの名無しさん
垢版 |
2017/10/08(日) 02:33:38.64ID:L3khK+9u
画面のスナップショットをF9キー辺りに割り当てて、
キーを押す度に連番ファイルとして保存したいんだけど
powershellで簡単にできたりする?
0246デフォルトの名無しさん
垢版 |
2017/10/08(日) 13:06:48.18ID:HosRocIl
>>245
> 画面のスナップショットをF9キー辺りに割り当てて、
PowerShellを呼び出すバッチファイルを書いてショートカットで呼び出すように設定
https://s.news.mynavi.jp/articles/2011/01/25/memo/002.html

> キーを押す度に連番ファイルとして保存したいんだけど
https://stackoverflow.com/questions/2969321/how-can-i-do-a-screen-capture-in-windows-powershell
0248デフォルトの名無しさん
垢版 |
2017/10/09(月) 15:36:12.56ID:aT/bMCXY
ps1ファイルの関連付けとか弄らずに、ダブルクリックで実行させたい場合って
wscriptのrunとかから呼ぶのが一般的ですか?(ファイルが2つになってしまう感じですか?)
0249デフォルトの名無しさん
垢版 |
2017/10/09(月) 18:30:22.51ID:lHNYO6zv
>>248
バッチファイルの存在を無視ですか?
0251デフォルトの名無しさん
垢版 |
2017/10/09(月) 19:54:07.67ID:nfbSpXzR
>>248
ExecutionPolicyも指定してラップできるから便利だね
ShellExecuteでrunas指定すれば管理権限で実行もできるし
0253デフォルトの名無しさん
垢版 |
2017/10/09(月) 21:06:20.91ID:TUH4S8FX
PSをダブルクリックで実行できれば便利だが
つねにそれが良いとは限らない

書きかけのバッチをうっかり実行して
データやマシンがおかしくなる場合もありえる
0254デフォルトの名無しさん
垢版 |
2017/10/10(火) 10:39:20.69ID:Lm1TOsWr
>>253
そんなレベルの人は他のことをしていてください。
0255デフォルトの名無しさん
垢版 |
2017/10/10(火) 10:40:53.91ID:Lm1TOsWr
だいたい間違って実行してしまわないようにクリックで実行できないようになっているというのに。
0256デフォルトの名無しさん
垢版 |
2017/10/10(火) 12:17:00.45ID:FT16hdt/
batもWSHもできるのにps1だけ対応しない理由はなんだろね
ポリシーなんてどうとでもなるのに
0257デフォルトの名無しさん
垢版 |
2017/10/10(火) 17:50:27.32ID:O+aWn4bz
>>252
ショートカットって記述的じゃないから嫌なんだよね
ショートカット作っても2ファイルだし、
それなら初めからwscriptから起動するよ
0258デフォルトの名無しさん
垢版 |
2017/10/10(火) 17:52:15.08ID:O+aWn4bz
記述的じゃないってのはちと違うか。
テキストベースで完結しないって意味ね
0259デフォルトの名無しさん
垢版 |
2017/10/10(火) 18:09:29.72ID:ACpNi8fa
>>254
いろんな事態を想定できない方がレベルが低いよ

>>256
普通のプログラミング言語のソースは
直接実行できないでしょ

>>257
記述的というならコマンドラインは記述的で良い
0260デフォルトの名無しさん
垢版 |
2017/10/10(火) 20:30:07.68ID:+oAYtlnk
今のところ右クリック→実行してもらうのが安全性からも利便性からもバランスが良い
0261デフォルトの名無しさん
垢版 |
2017/10/11(水) 23:32:55.89ID:rnTDWqK2
Powershellのスクリプトは部品だからどっかから呼ぶのでいいんだよ
単体起動するようなもんじゃないね
0262デフォルトの名無しさん
垢版 |
2017/10/12(木) 01:44:18.85ID:bkFDlrr0
>>259
たぶん、右クリックで表示される「Powershellで実行」という項目を見ないで
電話してくれるユーザーへの対応の話だと思う

ダブルクリックしたらなんか開いたふざけんな、実行しない、バグだ、と内線で……
0263デフォルトの名無しさん
垢版 |
2017/10/12(木) 01:46:34.74ID:bkFDlrr0
とりあえず関数切ったら引数に , つけるのか付けないのかは統一してほしい気分……
たまに間違う(function定義のほうだと , いるやん)

まぁbashとかでも似たようなもんで、俺の練度の問題かも知らんが
0264デフォルトの名無しさん
垢版 |
2017/10/12(木) 03:29:50.53ID:BE/Y4M/4
ダブルクリックだけで実行されて、システムが故障したら、
損害賠償しなければならない

そもそも、ダブルクリックだけで、スクリプトが実行されたら、
極めて危険だから、納品の基準を満たしていないし、損害賠償が確実
0265デフォルトの名無しさん
垢版 |
2017/10/12(木) 12:35:03.43ID:4QKX7vcz
実行して危険なモノならpsじゃなくても確認手段ぐらいその中に入れとくでしょ
前提がおかしいと思う
0267デフォルトの名無しさん
垢版 |
2017/10/12(木) 20:14:39.20ID:rmq6lCFL
クリックで誤って実行してしまう点がよくないとマイクロソフトも思ったからクリックで実行できないようにさてるんだけどな。
0269デフォルトの名無しさん
垢版 |
2017/10/25(水) 11:25:59.45ID:fPe3kbbb
負荷テストのために下記コードを書いて見ましたがこれって音は全部鳴ってるのかな?
# 下記サイトより効果音をお借りしました。
# http://maoudamashii.jokersounds.com/archives/se_maoudamashii_explosion06.html
# d:\indexフォルダは好きなように変更してください。
$loopcont = 128
$list = New-Object 'System.Collections.Generic.List[System.Media.SoundPlayer]'
for ($i=0; $i -lt $loopcont; $i++){
$a = New-Object Media.SoundPlayer("d:\Index\se_maoudamashii_explosion06.wav")
$list.Add($a)
#$list[$i] = New-Object Media.SoundPlayer("d:\Index\se_maoudamashii_explosion06.wav")
Write-Output "サウンド $i を追加しました。"
}
for ($i=0; $i -lt $loopcont; $i++){
$list[$i].PlayLooping()
Write-Output "サウンド $i を再生しました。"
Start-Sleep -m 10
}
Start-Sleep -s 15
for ($i=0; $i -lt $loopcont; $i++){
$list[$i].Stop()
Write-Output "サウンド $i を停止しました。"
}
Start-Sleep -s 5
0271デフォルトの名無しさん
垢版 |
2017/11/16(木) 20:52:41.22ID:T0n72mO9
初心者ですが教えてください
WIN32APIの GetFileInformationByHandle をPSから呼ぶにはどうしたら良いですか
やりたいことはハードリンクを考慮したディスク使用量計算です
0273デフォルトの名無しさん
垢版 |
2017/11/16(木) 23:31:42.00ID:KchxuJsd
余計な一言いらんだろ
0274デフォルトの名無しさん
垢版 |
2017/11/18(土) 16:11:21.34ID:cmYM+INK
的外れなちゃちゃ入れる人はどこにもいるもんですよ
0275デフォルトの名無しさん
垢版 |
2017/12/05(火) 22:34:01.07ID:k+S65OIc
powershellでお手軽にwebapi実装するツールって無いか?
C# AspNet WebApiで作るほどの物じゃない
短期間の使い捨てのちょっとしたローカルサービス
リクエスト受けたらurlにマッピングされたps1ファイルを実行するとかで十分なんだけど
0277デフォルトの名無しさん
垢版 |
2017/12/13(水) 20:58:28.53ID:ZeopdAwf
Windows 10 Fall Creators Update になってから
$PSHOMEのpowershell.exe.configの編集ができないみたいだがどうすりゃいいの
0278デフォルトの名無しさん
垢版 |
2017/12/14(木) 01:13:41.61ID:qWY4CdFg
powershell.exe.configの所有がTrustedInstallerだから管理者でも編集できない
なんでそんなことになった
0280デフォルトの名無しさん
垢版 |
2017/12/26(火) 01:08:50.05ID:h/71yGJi
レジストリに書く環境変数設定
setx 変数 値
は問題ないが消す時の
setx 変数 ""
がなぜか設定できない
やり方あるの?
もちろんコマンドプロンプトからはできる
0281デフォルトの名無しさん
垢版 |
2017/12/26(火) 01:14:34.23ID:h/71yGJi
ありゃcmdからsetx 変数 ""やっても消えとらんな
まあpowershell関係ないからいいや
0282デフォルトの名無しさん
垢版 |
2017/12/31(日) 04:59:46.55ID:ewNY+pJH
"a[1-5]"とかでa1〜a5がヒットするどうでもいい機能のせいで
無駄に面倒くさくなったのどう考えても失敗だわ
角括弧なんてパスで割りと使う文字なのに
0285デフォルトの名無しさん
垢版 |
2018/01/01(月) 20:07:25.73ID:2CgBQVZt
C#で作ったコンソールアプリのexeをクリックしたらコマンドプロントが開くけど
代わりにpowershellで開けないの?
0286デフォルトの名無しさん
垢版 |
2018/01/02(火) 22:13:36.96ID:cpIk9AtY
単純にcmdプロンプトのウインドウを開きたいだけでいいなら
star cmd
0287デフォルトの名無しさん
垢版 |
2018/01/02(火) 22:14:25.04ID:cpIk9AtY
タイプミスしちゃった
start cmd
0289デフォルトの名無しさん
垢版 |
2018/01/02(火) 22:36:39.85ID:cpIk9AtY
コマンドプロンプトを開きたいとしか読めない。
質問を見ると、コマンドプロンプトを出さないようにしたいという
意味にはなってないし。
なんなんでしょ?
0290デフォルトの名無しさん
垢版 |
2018/01/02(火) 22:39:26.99ID:cpIk9AtY
ああごめん、わかった。
単にexeを実行したいってことね。
start xxx.exe
これでいいんじゃない?
0292デフォルトの名無しさん
垢版 |
2018/01/02(火) 23:54:42.16ID:BiuuD5uo
>>285
C#アプリ側でpowershell上で実行するように変更するか、スクリプトなりショートカットファイルなり使ってpowershell経由で呼べば良いんじゃないかな?
例えばショートカットのリンク先に powershell.exe -noexit C#アプリ.exe とか。
※powershellのフルパスは自動的に補完されると思うけど、C#アプリはフルパスで記入した方が良いよ。
0293デフォルトの名無しさん
垢版 |
2018/01/03(水) 01:24:47.80ID:E10k9nmq
>>285
C#とかのコンソールアプリは別にcmdが裏で動いてたりするわけじゃないよ
powershellも色が付いた単なるコンソールアプリだよ
0294デフォルトの名無しさん
垢版 |
2018/01/03(水) 04:11:38.95ID:LyakWDNT
そのアプリの中で、cmd というコマンドを使っていれば、コマンドプロンプト、
powershell というコマンドを使っていれば、PowerShell が起動する

コマンドプロンプトで、powershell と打てば、PowerShell に、
PowerShell で、cmd と打てば、コマンドプロンプトが起動する
0297デフォルトの名無しさん
垢版 |
2018/01/05(金) 11:06:17.33ID:zx9cp28q
たしかにC#のスクリプトはお手軽さはないがなんでもできるんだよなあ
ちょっと手のこんだことだとC#のほうが楽
0301デフォルトの名無しさん
垢版 |
2018/01/07(日) 00:05:50.77ID:X0qXwTa7
>>300
今後の問題ってのがWPFにもFormにもあるけど、
わたしゃ、DesktopではPowerShell+WPFでガンガン
作ってますよ。
xamlで書いて。
0302デフォルトの名無しさん
垢版 |
2018/01/09(火) 03:02:58.55ID:69Y93T5M
PowerShell+WPFなめてたけど
おもったより簡単に書けるな
だがPoserShell窓消せないのでC#でexeにしたほうがいいっぽい
0304デフォルトの名無しさん
垢版 |
2018/01/10(水) 00:29:43.87ID:NjZf1Ty6
>>302
スゲー便利よ。WPF表示関数化してる。
VSでデザインした時も、デザイナーのオブジェクトのNameをそのまま
PowerShellの変数で使用できるようにしちゃってるんで、すげー開発
効率高い。ちなみにその関数も20行くらいのもの。

デザインしたら、そのままPowerShellのデータとバインドして表示。
0305デフォルトの名無しさん
垢版 |
2018/01/11(木) 01:24:15.68ID:SytfDmnE
ジャグ配列を返す関数を作ったのですが、ルートの要素が1個の時に戻り値がおかしくなります
ルートの要素が2個以上の場合は起きません。どうしてででしょうか
以下再現コード
function test_jag_array() {
$jag = ,@(@("abc", "def", "ghi", @("jkl", "mno", "pqr", "stu")))
foreach($x in $jag) {
[void]("func " + $x[0] + " " + $x[1] | Out-Host)
for ($i = 3; $i -lt $x.length; $i++) {
$a= $x[$i][0]; $b= $x[$i][1]; $c= $x[$i][2]; $d= $x[$i][3]
[void]("func " + "a:" + $a + " b:" + $b + " c:" + $c + " d:" + $d | Out-Host)
}
}
return $jag
}

$jag = test_jag_array
foreach($x in $jag) {
[void]("res " + $x[0] + " " + $x[1] | Out-Host)
for ($i = 3; $i -lt $x.length; $i++) {
$a= $x[$i][0]; $b= $x[$i][1]; $c= $x[$i][2]; $d= $x[$i][3]
[void]("res " + "a:" + $a + " b:" + $b + " c:" + $c + " d:" + $d | Out-Host)
}
}

上の実行結果
func abc def          ←期待する結果
func a:jkl b:mno c:pqr d:stu ←期待する結果
res a b             ←なんじゃこれ・・・
res d e             ←なんじゃこれ・・・
res g h             ←なんじゃこれ・・・
res jkl mno          ←なんじゃこれ・・・
res a:s b:t c:u d:       ←なんじゃこれ・・・
0306デフォルトの名無しさん
垢版 |
2018/01/11(木) 01:34:44.31ID:SytfDmnE
↑をルート要素2で試す場合は$jagを以下に変えてください。
$jag = ,@(@("abc", "def", "ghi", @("jkl", "mno", "pqr", "stu")), `
@("abc", "def", "ghi", @("jkl", "mno", "pqr", "stu")))
要素1を回避するコードを加えて一応この問題は解決はしてますが、バグの特定で1日潰れました。
0308デフォルトの名無しさん
垢版 |
2018/01/11(木) 03:49:18.87ID:z0XvJ0+n
こんな感じでいける

function test_jag_array() {
$jag1 = , ("abc", "def", "ghi", ("jkl", "mno", "pqr", "stu"))

$jag2 = , ("abc", "def", "ghi", ("jkl", "mno", "pqr", "stu")),
("abc", "def", "ghi", ("jkl", "mno", "pqr", "stu"))

$jag = $jag1 # jag1の場合

〜省略(元のまま)〜
Write-Output -NoEnumerate $jag
}
0309デフォルトの名無しさん
垢版 |
2018/01/11(木) 05:37:21.95ID:z0XvJ0+n
>>308
訂正
$jag2の右辺の最初のコンマ演算子いらないわ取り除いて
これだと最初の要素がさらに配列に包まれてしまう
なかなか一貫性のある書き方が難しいね
0311デフォルトの名無しさん
垢版 |
2018/01/12(金) 00:35:51.74ID:9OW8M9wc
>>307
ありがとうございます。
実装(=仕様?)が変なんですね。
VBScriptのarrayのような順序付き汎用コンテナとして使うつもりでいましたが
他の手段も考えてみます。
0320デフォルトの名無しさん
垢版 |
2018/01/20(土) 20:18:39.25ID:tb/5wFRb
そのとおり。馬鹿には使いこなせないPowerShell。vi並の粗大ゴミ。
WSH捨てたことを一生後悔することだろう。というかPowerShellなど普及することはない。WPF並の生ゴミ。悪臭がする。
0322デフォルトの名無しさん
垢版 |
2018/01/20(土) 20:32:52.77ID:tb/5wFRb
ほぼサーバ用途なのに自分だけ使えれば問題ないとか保守のことを全く考えないおれ天才君が作ったもの。

それがPowerShell。普及するわけがない。
0323デフォルトの名無しさん
垢版 |
2018/01/20(土) 20:38:49.39ID:CFAgCrzx
ごめんな、うちの会社は普通にみんな使えてるから w
底辺は色々大変だね
あとサーバー用途だけじゃなくて、ちょっとしたテキスト処理とかでも便利に使えるし
まあついていけない人はWSH使ってりゃいいんじゃね?
0324デフォルトの名無しさん
垢版 |
2018/01/20(土) 21:28:13.84ID:tb/5wFRb
嘘だね。使えてない奴が使えてるフリしてるだけ。そういうバグあり馬鹿コードを多くの大手SIerの保守案件で散々見てきた。
MSが提供するサンプルコードすら惨いときもあるのにおまえの会社だけは「普 通 に み ん な 使 え て る」という。

キミの口はジョブス並みだな。
■ このスレッドは過去ログ倉庫に格納されています

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