【最強CUI】PowerShell -Part 2 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
>>29
PSもシェルスクリプトだからシェルは問題なく代用できる
Rubyは本格的なOOPとかメタプログラミングとか
難しいことやらなければおおむね代用可能だと思う 説明不足ですみません。
非プログラマー職なので、
powershell、エクセルvba、wsh(vbs,js)、バッチファイルみたいな
最初からWindowsに入ってる
プログラミング環境しか使えないという状況でした。 >>31
オフラインって書いてあるのにどうやって開発環境を揃える気なんだろう... 一応Add-TypeでC#やVB.NETも使えないことはないがVS無しで書くのは本当に苦行だからおすすめしない ファイルがダウンロードされたものか、ローカルで作成されたものかってどうやって判別してるんだろ Get-Content -Path hoge -Stream Zone.Identifier >>44
プログラム技術@2ch掲示板
この板はプログラムを作る人のための板です。 PS ISE以外に開発環境ってある?
テンプレート、シンタックスハイライト、入力補完、デバッガあたりが揃ってるやつ パスの扱いがよくわからん
System.IOを使うときはフルパスで渡すのが基本なのか? 普通にカレントディレクトリからの相対もできたと思うが...
なんか変な挙動あったっけ? PowerShellってみなさんどうやって覚えてる?
必要になったものをググって都度対応してるけど、
なんかおすすめの学習方法ないですか? >>51
よくあるのはPowerShell自身とCLRでカレントディレクトリの管理が別々なせいで祖対パスが通らない、とかかな VBSみたいにchmファイル的なオフラインヘルプって作れないの? >>55
CLR のカレントディレクトリなんてあるの?
詳しく教えてほしい >>57
そういう言葉で表現があってるかは分からないけど
スタティックメソッドに相対パスを渡すとそのメソッドはGetCurrentDirectoryメソッドで返ってくるパスをカレントディレクトリとして認識するよって話
ttp://stknohg.hatenablog.jp/entry/2015/04/30/232255 >>58
ほえー、これは知らんかったわ
ひとつ勉強になった
サンクス >>60
Get-Help の GUI 版みたいな感じじゃね
うちはまだ Version 2.0 使ってるからよくわからんが 会社の人が意地悪してRestrictedから変えてくれない(´;ω;`) OSのLocalSystemアカウントでWinRMコマンドは動かないんですよね? 変数 $? について質問です。
コマンドレットの終了ステータスを$?で取得する分にはいいんですが、
functionで定義した関数の終了結果を$?に反映するのはどうしたらいいんでしょうか?
コマンドレットは
Cmd -hoge
の直後に $? で判定できますが、
これが関数だと
$result = Cmd -hoge
とか
Cmd -hoge ([ref]$result)
とかやってわざわざ結果を受け渡さないといけないのがダルくて・・。
true/falseぐらいなんとかならないんですかね・・
無理やりやる場合、
throw "error"
とかやれば、$? にfalseは入りそうですが、trueの場合は・・?
何かスマートな解決方法がありましたら教えてください。 >>68
ああ、変な書き方してますね。すいません。
戻り値ではなく、関数実行の成否を
コマンドレットと同じように扱いたい、という意味です。
戻り値になるとWrite-Hostするとかいろいろあると思いますが、
呼び出し側で受け取らないといけないですし、
要は、おおざっぱに書くと
function hoge()
{
//なんかの処理
if ( exec )
{
// 成功
$? = true
}
else {
// 失敗
$? = false
}
}
みたいにできると
hogeの呼び出し側で
$?を見て判断できるので、
コマンドレットと統一したいなぁ、と。
関数やコマンドレットを別のテーブルにつっこんで、
連想配列呼び出しなどを行いたいので、
実行の成否判定を一つの方法に統一したいのです。 成功や失敗の定義が分からないけど、普通の関数呼び出しでも$?は更新されるでしょ
http://i.imgur.com/Xi3hIf9.jpg >>70
例外発生させずに $false に設定したいんでしょ 定数じゃなくて読み取り専用だった
Set-Variable -Force で値を変更できるけど、
値を変更したっていう「処理に成功」したことを処理系が感知して上書きしちゃうから意味ない
http://i.imgur.com/oCyQDIB.jpg みなさんInvoke-WebRequestって正しくダウンロードできますか?
以前は50MB程度のファイルでも正しく落とせていたのですが、
最近実行してみたら、50kB程度しかダウンロードしないですぐコマンドが完了します。
しかも終了ステータスはTRUEで、
try/catchで挟んでもなにも検出されないという・・・。
まったく同じURLで
Start-BitsTransferやbitsadmin
msys2のwgetなどでは正しくダウンロードできました・・。
こういうのって何が原因として考えられますかね?
ちなみにURLはこちらです。
http://jaist.dl.sourceforge.net/project/msys2/Base/x86_64/msys2-base-x86_64-20161025.tar.xz PSでセルオートマトン作ってみた
ヒマな時に実行したってや
$x = 79;$L = 1,(2..$x|%{0})
0..36000|%{
($L|%{if($_){'@'}else{' '}}) -join ''
$L = 0..($x-1)|%{$L[$_] -xor $L[($_+$x-1)%$x]}
sleep -Milliseconds 100
} C#でOkというような
PowerShellとC#一緒にしてるような人ってなに?
使い分けもわからん人かな なんでもExcelで作ろうとしちゃうおっさんと同じじゃなの 開発環境に恵まれてるんでしょ
ぼくはiseさんだけがたよりです "$($a='abc')$a"
ってやったら
abc
が表示される
で、
"$($a=')abc(')$a"
ってやろうとしたら
文字列の終端記号 ' がありません
って怒られるんだけどなぜなんだろ?
とりあえず今は
$b = ')abc('
"$($a=$b)$a"
ってやってるんだけどなんかいい方法ある? >>81
なるほど、これは気づかなかったわ
サンクス 結局PSプロバイダとかPSドライブが良くわからないので
環境変数の見方やセットの仕方が未だに覚えられない >>75
俺もそこに詰まってた。
Invoke-WebRequestが弾かれるから、Start-BitsTransfer使ったりしてかなりごちゃまぜな感じだけど、
Start-BitsTransfer使うと今度はHTTP ステータス 403: クライアントは要求されたサーバー オブジェクトに対する十分なアクセス権がありません
出てね。 最近余計な追加ばかりしやがる。
・先頭までBSすると妙にでかいBeepが鳴る。
・curlへのエイリアス >curlへのエイリアス
これって最近じゃないよね? >先頭までBSすると妙にでかいBeepが鳴る
Set-PSReadlineOption -BellStyle None
>curlへのエイリアス
Remove-Item alias:\curl まだpowerGUIってどこかでダウンロードできませんか?
ps1をexe化したいんですが 質問です。
コマンドプロンプト経由でPowershellを使って、
既存のxlsxファイルの複数シート(もしくは全シート)を選択した状態にしてセーブ/終了したいのですが、
複数シート(もしくは全シート)を選択した状態にするコードが分かりません。
方法があれば、ご教示いただけるとありがたいです。 >>92
全選択ならこれでできるよ
$book.Sheets.Select()
指定したものを選択だとなんかださい書き方になった
$sheet_number = 1
$selected_count = 0
foreach($sheet in $book.Sheets) {
if((1,2,4).Contains($sheet_number)) { # 1、2、4番目を選択
if($selected_count -eq 0) {
$sheet.Select($true)
$selected_count++
}
else {
$sheet.Select($false)
}
}
$sheet_number++
} 指定シート選択の方法で動きました。
ありがとうございました。 Excelのシートの背景色をまとめて変えたいです。
セルで範囲を指定する方法は分かるのですが、Excelだと左上のボタンを押すと全指定になるように全てのセルを対象にして背景色を変えたいです。
Powershellでそういう方法ってあるのでしょうか? $book.ActiveSheet.Cells.Interior.ColorIndex = 20 タイトルバー右クリック→プロパティ→画面の色
の16色カラーパレット各色の値を変更するコマンドってありますか? >>98
ありがとう。でも設定は永続ではなく現在のプロセスだけ有効であれば良いです。 >>96
遅ればせながら。
今日試して、うまくいきました。感謝。 PowerShellだけでローカルhttpサーバーって建てれる?
PythonとかNode.jsみたいにお手軽にローカルhttpサーバーを起動したいんだけど余計な開発者用wikiをローカルで動かしたいんだけど(コンテンツはリポジトリで共有)
余計なものをインストールするなって怒られるからPowerShellでやりたい >>101
PowerShellでもできると思うが普通にC#でいいんじゃね? >>102
Visual Studioが無い環境なのでc#はちょっとめんどくさい
JDKとEclipseがインストールされてるWindows 7環境
ツールのインストールは殆ど却下されるけどゼロから自作するのは問題ない 何も入れなくてもC#の機能呼び出せるからそれでHttpListener呼べば >>103
> Visual Studioが無い環境なのでc#はちょっとめんどくさい
メモ帳 + csc.exe でできるだろ
ゼロからの自作ならなにもインストールする必要はないよ Windows PowerShell を使用する場合とコードを記述する場合を判断する
https://msdn.microsoft.com/ja-jp/library/office/hh537936(v=office.14).aspx
明らかに Windows PowerShell が現実的な選択肢とならないシナリオもあります。
たとえば、Windows PowerShell を使用してカスタム アプリケーション ページ、
Web パーツ、または Web サービスを作成することは、通常、考えられません。
同様に、デザイン性に優れたユーザー インターフェイスを作成する場合に
Windows PowerShell はおそらく役に立ちません。
全体がコードであるソリューションを必要とする 1 つの具体的なシナリオは、
Windows PowerShell でできることを拡張する方法です。
SharePoint チームが Microsoft.SharePoint.PowerShell モジュールを使用して行ったように、
使用する独自のコマンドレットを作成できます。 >>108
残念ですが今はそれが現実的な選択肢なんです
何でもかんでもインストールできる環境とは違います 放置でいいだろ
インストールしちゃダメって言うならC#でもいいって書いてあるのにガン無視だし 開発環境揃えられないのにC#のコンパイラだけじゃ現実的じゃないでしょ >>104
C#じゃなくて.NET Frameworkだろ。 >>112
PowerShell でサーバー作るよりは現実的だよ w >>114
アホか
notepadやサクラエディタでプログラミングとか正気じゃないわ >>115 はPowerShell のソースを何で書くつもりなんだろう w 単純なものだよ
psでhttpリクエストを待ち受ける
シンプルなルーティングルールでコンテンツに振り分ける
コンテンツをテンプレートに従い変換してレスポンスを返す
これで十分
他の言語なら10数行で書けるしpsでも大差ないだろ
このアイデアに比べたらNotepadでc#なんてバカバカしいよ >>119
メモ帳を使っているやつなんかいるかよw
学生? >>120
世の中は君が思うようなゆとり環境ばかりではないということ
厳しい制限の中で何ができるか模索することができないと君が卒業後キツいぞ >>121
サーバー上でメモ帳しかないならわかるが、わざわざサーバー上で書く必要もない。 >>123
あなたはサクラエディタが使える環境を想定しているのに、わざわざメモ帳でやろうとするところが変。 >>123
統合開発環境がどこにでもあると思っているパターンだろ?
開発機と本番機が同じだったり、ネットワークでつながっていたりする環境しか知らない。 YouTubeにある、T Umezawa のプログラミング動画では、
秀丸でJava、メモ帳でC#、などで作っている
土方を極めると、補完よりも、キータイプの方が速いw >>127
初心者はコード補完をありがたがるんだよな。あんなの覚えていたり、コピーで作るからなくてもいい。間違って選択する可能性もある。そんなにあわてて作ることなんてないもん。 >>119
> 他の言語なら10数行で書けるしpsでも大差ないだろ
書いてから言えば? ■ このスレッドは過去ログ倉庫に格納されています