Windows PowerShell Part5 [無断転載禁止]©2ch.net
>>220
取れました!取れました!取れました!取れました!
ありがとおおおおおおおおおおおおおおおおおおおおおおおおございます!! 先輩方お世話になります
PowerShellではIEやExcelについては、内部情報がわかっているのでセル内の数値を読みだしたり、
IEでWeb上のデータをExcelに読み出したりできますが、
知らないソフトを操作することはできるのでしょうか。
パスワード管理ソフトがそこにあった場合、それを自動で操作できるものでしょうか。 >>224
それを見て安心しました。
PowerShellを本格的に使います。
ありがとうございました。 引数で渡されたcsvヘッダーなしファイルを、
1レコードづつ分割して、
各レコード中の5番目の項目をファイル名にしたく
色々調べて何となくパワーシェルでできそうかもと感じたのですが、
パワーシェルでは難しいものでしょうか エラー表示を出したくないのですが、
invoke-restmethod -uri http://127.0.0.1/ -ErrorAction SilentlyContinue
invoke-restmethod -uri http://127.0.0.1/ | out-null
invoke-restmethod -uri http://127.0.0.1/ 2> $null
のいずれもエラーが出てしまいます。何か良い手はないでしょうか。 >>226
PowerShell csv
とかでググることもしない君には無理かも 自己解決。
try {invoke-restmethod -uri http://169.254.169.254/} catch {} 使い始めて半年になるけど、コマンドプロンプトよか遥かにマシだけど、MSのスクリプト言語はやっぱうんこだね >>232
あなたの考えるうんこでないスクリプト言語は何? >>232
理由を説明することが出来ず結果だけ述べるやつは頭蓋骨の中にウンコが詰まってるらしいね 負荷テストのために下記コードを書いて見ましたがこれって音は全部鳴ってるのかな?
# 下記サイトより効果音をお借りしました。
# 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 プログラムスレ行きます
>>235は取り下げします UI Automation Extensionで#32770のダイアログを取得してくれないのってどう対応すればいいんでしょうか
UIAutomationSpyで見る限り取得先は間違ってないんですが、Sleep入れたりしても改善しません >>226
練習のつもりでそれやってみた。私がやったのはこんな感じ。
もっといい方法あるんでしょうけど。
$lines=get-content c:\Test.csv
$head=($lines[4].Split(",")).ForEach({$_})
$data=($lines|ConvertFrom-Csv -Header $head)[0..3+5..($lines.Length-1)] テキスト変換ならawkも楽しい
gawk -F ',' -- '{print>>$5}' %1 あ〜〜〜、
私、問題を取り違えてる
5列めをファイル名にすんのね。
5行目をラベルにすると勘違い。
またトライしてみよう。 ごめん、いまの226じゃなく238ね、
何度も申し訳ない。 こんな感じかな。
ファイル名にして、中身を何にするのかわからないんで
単に5列めを取り出しただけだけになるけど
$lines=Get-Content c:\test csv -Encoding Default
$lines|%{$_.Split(",")[5]} 同じことを短く書くとこうかな
(Get-Content C:\Test.csv).Foreach({$_.Split(",")[5]}) さらに短くすると、こんな感じかな
(GC C:\test.csv).foreach({$_.Split(",")[5]})
PowerShellって
他のスクリプトに比べると可読性がいいね >>244
cat C:\test.csv | %{$_.Split(",")[5]}
とか?
Get-Content はcatと書きたい派 まあ、ヘッダーがないなら付けた方がいいよね。
単純に「,」で分割しちゃうとエスケープされた,が入っている時に困る
cat C:\test.csv | ConvertFrom-Csv -Header @('a', 'b', 'c', 'd', 'filename') | %{$_.filename} パイプ経由だったら
cat C:\test.csv|Select ({$_.split(",")[5]})
の方が速いかもしれない >>239以外は5列目を取り出すというスクリプトにしかなってない
エクササイズにしたってそれでいいの?
質問者の「ファイル名にしたい」というキーワードは、行ごとに個別ファイルに分割出力したいってことと考えるのが自然
いろいろ調べてパワーシェルでできそうかも?パワーシェルでは難しいですか?って疑問ともよりマッチする
質問者の言葉足らずも、プログラマのできる範囲ややってみたいことも「顧客が本当に必要だったもの」っていうブランコの風刺絵を連想させるゾ ファイル名にしたいっていうのが良く分からんかったからスルーしてたわ。
とりあえず、csvの5列目の値をファイル名にもつ、空ファイルを作るならこんな感じかな?
(動かしてないけど)
cat C:\test.csv | ConvertFrom-Csv -Header @('a', 'b', 'c', 'd', 'filename') | %{eco "" > $_.filename} $path = 'C:\test.csv'
gc $path | % {sc (ConvertFrom-Csv $_ -h (1..5)).(5) $_}
別に質問スレじゃないから、古い質問をダシに遊んでたっていいんじゃね? 出力ファイルの内容を何にするのか意味がとれなかったよ。
その行ということなんだな。こんなやり方にしてみた。
GC C:\test.csv|%{out-file -i $_ -fi $($_.Split(",")[0]+".csv")} あ、配列のインデックス間違った
0 じゃなく 4 ですね。 powershellのバグ発見しちゃったんですけど。
chdir "test.txt" 2> clip
ってやってもエラー出力がクリップボードにコピーされません。 chdir "test.txt" 2>&1 | clip
ってやったらできました。
バグなんて言ってすいませんでした、powershellさん。 gc aaa.txt
↑のコマンドでaaa.txtの中身を表示できますが、この時に
1行目
2行目
3行目
4行目
5行目
と行順に表示するのではなく
3行目
2行目
5行目
1行目
4行目
のようにランダムに表示することはできるのでしょうか? $txt = gc aaa.txt
random $txt -c $txt.Length 友達がWindowsで稼げている情報など。ニュースというか参考までに。
⇒ http://kuchibeta.sblo.jp/article/181868190.html
興味がある方のために書きました。
OEE18BYXAP >>257
返信遅れてすみません。
うまく出来ました。ありがとうございます!
randomってかなり初期バージョンのPowerShellですら使えるんですね。存在すら知りませんでした(^_^;) こんなの作る暇あるならオブジェクトリテラルくれよ
PowerShell should support creating an List similar to how it supports arrays
https://github.com/PowerShell/PowerShell/issues/5643 powershellすごく便利よね。これなんで流行らないの・・・。 >>263
頭の良い人にしか使いこなせない
使いはじめるハードルも高い 裏方だけど十分流行ってると思うよ。
MSのサーバー系の管理はほとんどPowerShellに置き換わってるし
Azureの管理もPowerShellが主流。
Win10でもちょっと探ってみれば随所で使われてる。
MS系のシステム管理者はだいたい大なり小なり使ってるんでは。 ちょっとしたBootstrapperとかもそうやね >>263
とっつきにくいんだよねw
自分も最初はCMDと行ったり来たりしてた。
今は慣れちゃったからCMDと使い分けてるよ。
SQLのハンドブックでSqlServerやOracleの構文が併記されてる書籍があるけど
同じようにCMDとPowershellを併記した書籍なりサイトがあれば初心者も入りやすいかもね。 https://blogs.technet.microsoft.com/jpsecurity/2018/02/06/now-you-see-me-exposing-fileless-malware/
PowerShell を無効化すべきですか?
いいえ。PowerShell は強力で安全な管理ツールであり、多くのシステム機能や IT 機能にとって重要なものです。
攻撃者が使用する悪意のある PowerShell スクリプトは、最初の侵害が起こった後にのみ有効な悪用後のテクニックです。
PowerShell の悪用はソフトウェア エクスプロイト、ソーシャル エンジニアリング、または資格情報の盗難など
他の悪意のあるアクションで開始される攻撃の兆候となります。
重要なのは、攻撃者が PowerShell を悪用できるポジションに立つことを防止することです。 6.0.1入れてみた、起動や動作がかなり早くなってる
標準のエンコードがUTF8になったようで、今までshiftjis扱うには-encode defaultで済んでたのが -encode oemに
あと.ps1ソースがshitjisだと文字化けする
ついでにテスト環境がいまいち、ISEでは使えないし
vscodeも(出来るとは思うけど)設定がよく分からない。F5のデバッグだと自動で5.01が立ち上がる
まあwin7に5.0.1とか入れるくらいなら6.0がいいかもね 'a'..'z' が 'a' から 'z' までの文字を返すようになったらしいので
'あ'..'こ' ってやってみたら予想外の結果が返って来たw いろは順って言ったら"い".."と" で「いろはにほへと」でしょw
JISコードの順番だね、"ぁ".."ん"でひらがな全部出てくる これ考えた人天才だな。1文字も重複せずにストーリーにしちゃうなんて。
「いろはにほへと ちりぬるを わかよたれそ つねならむ うゐのおくやま けふこえて あさきゆめみし ゑひもせすん」
↓
「色は匂へど 散りぬるを 我が世誰そ 常ならむ 有為の奥山 今日越えて 浅き夢見じ 酔ひもせず」 >>279
確かにw
コーディングでこれ書いてるとこ見られたら勘違いされそうw とあるフォルダ配下にあるテキストファイルだけ抽出して配列に格納
別のフォルダ配下にあるテキストファイルだけ抽出して配列に格納し配列同士を比較して同じファイルのみを抜き出してCompare-Objectで比較したいんですけどどうやったらできますか? すみません↑書き込む場所間違えたのでプログラム板行きます 任意のディレクトリ内の全てのファイルに対して、ファイルプロパティに任意の文字列が含まれているファイルのフルパスを取得したいのですが。
賢い方、よかったらコード下さい。
具体的には、ファイルプロパティの詳細、バージョン情報で検索をかけたいです。 >>285
ここにプロパティー取得の方法はある
https://letspowershell.blogspot.jp/2015/11/powershell_18.html
問題は「バージョン情報」がプロパティの何番目かだけど、これは環境によって違うので
自分で調べるしかない
全部取得するとかなり時間がかかる >>286
レスありがとうございます。
やっぱり時間かかりそうですね。 昔、powershellでexcelのデータ扱えるかなと思って試して見たが、目で追えるほど処理が遅かった。
excelのVBAの方が余程使える気がするが、powershellでそういった処理してる人って居る? コードが無いから何とも言えんけど工夫次第かな
それより目で追えるのはScreenUpdating関係では無く? 既存のrtfファイルを「Microsoft Print to PDF」を使ってPDFにしたいと考えています
(Wordから直接PDFとして保存すると何故かrtf中の画像が粗くなり、「Microsoft Print to PDF」で印刷したら問題が回避できたため。マシンにはAdobeはreader以外インストールされておらず)。
Start-Processでやろうとしたものの出力ファイルの指定がわからず、そこで止まっています。
印刷ができればStart-Processに拘らないのですが、ご存知の方がいればご教示いただけないでしょうか。 screenupdatingは関係ないと思う。そう言う次元ですらないから。
1セル1秒みたいに時間がかかる。 Windows10のISEは標準で日本語だけど、
Windows7のアップデートでいれたISE5.1は英語になってる
日本語化できる? >>289
>昔、powershellでexcelのデータ扱えるかなと思って試して見たが、
>目で追えるほど処理が遅かった。
一つ一つセルごとに出力したら遅いよ。
配列にいれて処理すれば一発。 >>289
別にお勧めしないけど、私は使ってるよ。
遅いのは処理の仕方の問題で、>>294 に書いたような処理をすれば早い。
難しくもない。
単純な表形式なら、プログラムでクリップボード利用すると
一瞬で処理がおわる。 Excelアプリを操作するより、XLSXファイルを操作する方が何かといいね 友達から教えてもらった簡単確実稼げる秘密の方法
関心がある人だけ見てください。
グーグルで検索するといいかも『金持ちになりたい 鎌野介メソッド』
YJL2J 友達から教えてもらったネットで稼げる情報とか
興味がある人はどうぞ
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
ADP78 Invoke-ItemでPDFを開くことはできたのですが開くページの指定はできないですか?
関連付けられてるソフトはSumatraPDFですが,ページ指定して開けるなら他のソフトでもいいです
OSはWin7でPowershellは5.1.14409.1012でした そんなこと聞いてきてしまうレベルの人にあう本はないだろうね それは定番が既にあるという意味なのか、ネットのチュートリアルで充分or僕は本嫌いだからお前らも読むなという意味なのか、amazon評価を鵜呑みにせよという意味なのか どんな本を読んだところで理解できまいという意味だろ
定番を知ってるなら無いという回答と矛盾するし
詳しい人のほとんどは本を買ってないから大型書店かネットで試し読みが早くて確実なんじゃないか 実行ファイルの右クリックのプロパティーの「管理者としてこのプログラムを実行する」を
コマンドラインからチェック入れる方法ってあるかな
ソフトのセットアップ時に毎回設定するのがかったるくなった >>308
コマンドからだけでなく、exeダブルクリックでも.lnkからでも管理者権限にしたい
307の設定がOSのどこかには格納されてるはずなんで、それをコマンドで変更したいんだけど、無理かな
レジストリのどこかかね 使わなそうなexe(既存のをコピーして名前変えても拾ってきてもいい)でチェック入れて
regeditで検索すればすぐ見つかるよ >>310
見つけた!
なるほど、この手があったか、ありがとう ExcelでA1:A3に
佐藤 なんちゃら
田中 なにがし
高橋 えみった
と書いているとして、
$tanto = 高橋
と部分一致したA3の値をB3に書くにはどうしたらいいですか >>307
俺ならUACを一時的に無効にしちまってからインストール作業をするけど、
管理者権限の許可タブをクリックするだけの作業なんてダルくも何ともないです >>313
複数のアプリでセットアップ対象も複数なら自動化したくもなる >>312
pwsh内で配列とかで処理するようだけど、現段階で使い方が理解できませんでした
Excelに$tantoを書いて、Excel内でvlookupした結果をまた$tantoに格納してExcelに戻す
というまったくスマートじゃない方法でひとまず解決しました >>285-286
便乗質問ですけど、任意のディレクトリ内の複数のpdfについて、pdfを開いてから見られるプロパティのフォント(の埋め込み)情報をまとめて取得したいと思ってます。
そのようなコードあったら教えてもらえませんか? Rename-Itemで角括弧入りのパスを扱うときは-Literalpathをつけるといいってのは調べるとすぐにわかったんだけど、
角括弧入りの名前を付けたいときはどうすればいいの?
録画ソフトでとった番組ファイルをスクリプトで圧縮するときに、一旦仮の名前にリネームしてから圧縮後のファイルに後で戻したいんだけど
番組名によってはエラーになってしまうんで困った。 普通に付けられたけど
Get-Item .\てすと.txt|Rename-Item -NewName [てすと].txt >318
ごめん、確かにできるね。
"?"のほうがいかんかったみたい。
"?"がまたどうにもならんね。 >>319
?は*と同じくファイル名には付けられないよ
dos時代からね >>320
なるほど!
すっきりしたよ。ありがとう