[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 10/24 19:35 / Filesize : 263 KB / Number-of Response : 1007
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【最強CUI】PowerShell -Part 1



1 名前:デフォルトの名無しさん [2013/09/12(木) 18:35:04.72 .net]
スレなかったので立てました

202 名前:デフォルトの名無しさん [2014/05/17(土) 21:25:14.42 ID:blVZ2esz.net]
単純にエンコード指定しただけではうまくいかないことがあるのは明白
試しもしないで大嘘書いてんじゃねえよクズ

203 名前:デフォルトの名無しさん [2014/05/17(土) 23:03:47.67 ID:blVZ2esz.net]
こちらの質問を投稿されてから少し時間が経ちましたが、その後の状況はいかがでしょうか

とかいう気持ち悪いからまれ方する掲示板から出てくんな

204 名前:デフォルトの名無しさん [2014/05/21(水) 01:04:44.83 ID:sYItXBaD.net]
utf8を出力するコマンドを扱うのは厄介で
普通に実行すると、utf8がsjisに文字化けした文字列が出力され、
これを > しようもんならさらにutf-16leでエンコードされて涙目になる。
> そもそも自分でエンコーディング指定しない状態でうまくいくと思うのがおかしくね
なんていう話ではない>>190>>191

これ(utf8がsjisに文字化けした出力)をファイルに落として(sjisでエンコード指定(Default))
Get-Contentで読み込む(utf-8でエンコード指定)と
文字コードはあってるのにバイトが欠けたような化け方をして元のコードには戻らない。
cmd.exeのutf-8→sjisの変換(iconvとかnkf)ではそんなバイト欠けしないので
暗黙の多重エンコードのせいでバグのような挙動になってるのだろう。

get-content でutf8なファイルを-Encoding utf8指定して読み込むとすべてうまくいくので
コマンドにもutf8でエンコードで指定できればうまくいきそうではある。
でもコマンドにはエンコード指定ができないのだ。
これはcmd.exeと一緒なので普通なんだけど。

cmd.exeでutf8を扱うのはXPからの悲願だったわけで
sjisに化けた文字をどうこうするよりやはり生のutf-8を出力してもらうのが最善であろう

Diagnostics.ProcessStartInfoのStandardOutputEncodingを設定すれば
ナマのutf-8を吐いてくれる。
つまり、Diagnostics.ProcessStartInfo の設定してとあるutf-8出力コマンドに
引数を渡すラッパをpowershellスクリプトで書けばいい

手間といえば手間だが
cmd.exeでutf8を扱うのはXPからの悲願だったわけで
必要な手間だといえる

205 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 02:18:31.24 ID:ta57bKtc.net]
標準出力のutf16leとsjisは自動判別されるがutf8は判別しない。
utf8での出力は問答無用でsjis出力される。$OutputEncoding は関係しないようだ。
.netのDiagnostics.ProcessStartInfoの StandardOutputEncodingをutf8に指定して
プロセスを作成すれば、化けずにutf8で表示できる。

utf8のファイルならば自動判別される。
Get-Contentで文字コードを指定しなくてもutf8のファイルを読み込めるし
> をしたら、化けずに正常にutf16leに変換される。

206 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 02:27:53.59 ID:ta57bKtc.net]
UTF8の標準出力は無視というより
単純にBOMBなしUTF8はスルーされるってだけの話なのか
BOMBなしUTF8は-encoding utf8すれば読めるが強制sjis変換される
BOMBがないutf8はちゃんと表示された

207 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 02:28:38.07 ID:ta57bKtc.net]
×BOMBがないutf8はちゃんと表示された
◯BOMBありのutf8はちゃんと表示された

208 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 18:11:51.04 ID:WiuU0w7h.net]
>>202
俺が言ったのは、エンコーディング指定なしで望みの形に自動で入出力される、なんて都合のいいもんのはずないだろってことだけだが
特にUTF-8が厄介なのはcmd.exeの頃からそうなんだから

209 名前:デフォルトの名無しさん mailto:sage [2014/05/22(木) 15:38:40.24 ID:/bbRYJfN.net]
テキストはバイト列じゃなくて文字列として扱われる
PHPとかPtyhon2とかしか知らないと、間違う

210 名前:デフォルトの名無しさん [2014/05/30(金) 23:45:52.42 ID:F99LD7Fr.net]
>テキストはバイト列じゃなくて文字列として扱われる
バイナリとして比較するということを言いたいのかな?



211 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 01:17:39.96 ID:HDDKJJTo.net]
逆だろ

212 名前:デフォルトの名無しさん [2014/05/31(土) 01:45:04.55 ID:tHdAdTRr.net]
>Diagnostics.ProcessStartInfoのStandardOutputEncodingを設定すれば
>ナマのutf-8を吐いてくれる。

これは勘違いで誤り。
utf-8をsjisに変換してくれる、が正しい。cmd.exeでも同じ挙動。

そもそも適切なエンコーディング指定する方法がないのだから
>そもそも自分でエンコーディング指定しない状態でうまくいくと思うのがおかしくね
で軽々しく済む話ではないのは明らか

213 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 01:48:59.81 ID:YDFuTMoW.net]
むかしは、シフトJISのテキストをバイト列として(バイナリとして=j処理した。
(当初からJavaは、テキストを文字列として処理してきた)

いまは、Perl, Python, Rubyは、文字列としてテキストを処理できる。
スクリプトがどの文字コードでかかれてるか明記。
出力するとき、内部の文字コードから表示の文字コードに変換。

214 名前:デフォルトの名無しさん [2014/05/31(土) 02:00:38.69 ID:tHdAdTRr.net]
ちょっとエンコーディング指定すればいいなんて手間じゃねえし
なめてんだろ

215 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 12:22:25.77 ID:LqLiNHuI.net]
>>190本人が、何もしなくてもUTF-8形式を適切に処理してくれるって考えは甘いってことを理解してりゃそれでいいよ

216 名前:デフォルトの名無しさん mailto:sage [2014/06/02(月) 22:17:32.05 ID:iXPDpkrB.net]
>>213
BOM付きUTF8ならば適切に処理されるんだからややこしいのであって
考えが甘いとかそういうことじゃないんだよ

こうやって精神論にすり替えて叩いてくる
どうせわんくまのバカどもが食いついてんだろ
お前らいつも参考にならないんじゃアホ

217 名前:デフォルトの名無しさん [2014/06/02(月) 22:30:48.29 ID:iXPDpkrB.net]
>>206
口だけのわんくまカス(あるいはそれと類する存在)よ
俺は100%間違ってないみたいな態度とってるんだがお前は間違ってんだよ
都合がどうのこうのだという話はしてない
少なくともお前の書き込みはいらなかったし死んでほしい
利用者のアラをつつくような(もちろんこちらのあらはなかった)グズは死ねよ

以下の挙動がcmd.exeなどとは違っててバグなんじゃないかと言ってるんだが?
アドバイスくれクズ

>>202
>これ(utf8がsjisに文字化けした出力)をファイルに落とし(Set-Content
-Encogin Default指定) て
>Get-Contentで読み込む(-Encoding utf8でエンコード指定)と
>文字コードはあってるのにバイトが欠けたような化け方をして元のコードには戻らない。
>cmd.exeのutf-8→sjisの変換(iconvとかnkf)ではそんなバイト欠けしないので
>バグだと思われる。

hyperestraier のようなutf8出力コマンドで再現可能

218 名前:デフォルトの名無しさん mailto:sage [2014/06/02(月) 22:34:16.22 ID:iXPDpkrB.net]
>>206
そもそも適切なエンコーディング指定する方法がないのだから
>そもそも自分でエンコーディング指定しない状態でうまくいくと思うのがおかしくね
で軽々しく済む話ではないのは明らか
cmd.exeではこんなビット欠けは起きない

219 名前:デフォルトの名無しさん [2014/06/02(月) 22:37:17.51 ID:iXPDpkrB.net]
>>206
コマンドの標準出力にはエンコード指定する方法なんかないので
大げさなラッパを作る必要がある
cmd.exeの頃は勝手にutf16leに変換されるなんてことなかったし
変換し直すだけでトラブルはなかった
分かったかわんくまバカ

220 名前:デフォルトの名無しさん [2014/06/02(月) 22:43:53.50 ID:iXPDpkrB.net]
echoや>の出力がUTF-16LEなのはハマるな
もともとUTF-8で出力するプログラムとかなんかおかしくなるし



221 名前:デフォルトの名無しさん [2014/06/02(月) 22:46:54.35 ID:iXPDpkrB.net]
じゃあ
echoや>の出力がUTF-16LE
である利点を語ってくれ
標準出力unicode化は今まで全く力を入れてこなかったことので悲願でも何でもない
それ以外で

222 名前:デフォルトの名無しさん mailto:sage [2014/06/02(月) 22:53:46.33 ID:iXPDpkrB.net]
>>191
正直そこらへんのブログの落書き情報よりつっこんだ話してるからね
このスレ読めばUTF8関連のトラブルは解決するだろう

もちろん俺だけのおかげであって
わんくまやムタや魔界仮面(宇宙仮面ではない)の出番はなかった
わんくまが役に立ったことなんかないがな

223 名前:デフォルトの名無しさん mailto:sage [2014/06/03(火) 00:46:33.05 ID:zVTgVwHZ.net]
利点も糞も、echo(write-output)は、生のオブジェクトを扱うことになるわけで、
つまりは、.NET仕様の根幹だから今更変えようがないでしょ。
従って、文字コード変換とかは受け取る側が全部面倒見る必要がある。

が、今どきUTF-8くらい標準(共通パラメータ?)で何とかしろよ、っていう点には同意だが。

224 名前:デフォルトの名無しさん mailto:sage [2014/06/03(火) 00:54:23.68 ID:Y/pEIVnr.net]
エンコーディングを指定すればいいだろ

225 名前:デフォルトの名無しさん mailto:sage [2014/06/04(水) 20:44:17.78 ID:L8qA/6qE.net]
Get-Item も Write-Output もオブジェクトの配列を引数に取りますが、

> Get-Item a.txt, b.txt # a.txt, b.txt 両方表示

> Get-Item a.txt b.txt
Get-Item : 引数 'b.txt' を受け入れる位置指定パラメーターが見つかりません。

ここまでは良いのですが、

> Write-Output 1, 2, 3
1
2
3

> Write-Output 1 2 3
1
2
3

Write-Output の2つ目のコマンドがエラーにならないのはなぜでしょうか?

226 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 00:54:18.00 ID:0UtGsb3y.net]
>>223
値を受け付けるパラメータの数が1つだけだとこういう挙動になるのかと思ったけど
Write-Hostでも同じようにエラーにならないな

227 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 20:42:25.77 ID:SJO4baaV.net]
>>214-216
いやお前は必要な情報を提示したつもりだったのかも知れんが、
>>190のレスだけじゃ一般論として文字コード意識しないと駄目だろって話にしかならない

228 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 09:45:09.57 ID:EYTmrCp1.net]
ここで聞いて良いのか分からないけど分かる方居たら教えて下さい。
Get-WmiObject -ComputerName IP -Credential $cre 〜としてサーバの情報取って来ようとしてるんですが、UserAdministrator Passなし で認証のダイアログ等を出さずに実行するだけで取得する方法はありますか?
パスワードの設定がされていればそのまま取ってこれるんですが、パスなしの場合は無理でしょうか。ちなみにドメインには参加していません。

229 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 15:47:34.27 ID:sw1PudVp.net]
WinRMを設定して使う。
SSHみたいにリモートでコマンド実行できる様になる。

230 名前:デフォルトの名無しさん mailto:sage [2014/06/09(月) 00:18:43.04 ID:5ZVLqxF5.net]
>>227
ちょっと調べてみた感じサーバ側の設定が必要なんですね
まだ入社したばかりで、大量にあるサーバを全手動でチェックしてるのでそこをなんとかしようと思って調べてました
お上にお伺い立てないといけませんが、もうちょっと調べて行けそうなら考えてみます
ありがとうございます



231 名前:デフォルトの名無しさん mailto:sage [2014/06/15(日) 12:59:24.56 ID:7N5YxzDD.net]
#file1.txt
hoge
fuga

$a = gc file1.txt
$a[0] #=> hoge

---
#file2.txt
hoge

$a = gc file2.txt
$a[0] #=> h

gc file2.txt | %{$_} #=> hoge

ログの集計で軽く嵌ったわ。
柔軟といえば柔軟なんだけど。

232 名前:デフォルトの名無しさん mailto:sage [2014/06/20(金) 15:35:56.81 ID:HoBg26Gr.net]
バージョン2.0使ってるけどConvertfrom-Csvで変換後にある列がブランクの行をWhereで抽出して表示させようとしたんだけど
他の列は「-eq ""」でいいんだけど最終列だけは「-eq $null」にしないと抽出できないね。
列ごとに書き方変えるの面倒なのでIsNullOrEmpty使うようにしたけどバグに近いレベルの仕様だな。
上位バージョンだと改善されてるのかな?

233 名前:デフォルトの名無しさん [2014/06/20(金) 16:53:37.72 ID:wHzCGsbi.net]
>>230
IsNullOrEmpty
使うものですよ

234 名前:デフォルトの名無しさん mailto:sage [2014/06/20(金) 17:49:45.80 ID:1hp3pFc2.net]
CSV自体が欠陥規格だから、変換後のデータをよーく検証しないのが悪い。

235 名前:デフォルトの名無しさん mailto:sage [2014/06/21(土) 09:09:56.44 ID:OJ/lzG/j.net]
Windows PowerShell 伊瀬

236 名前:デフォルトの名無しさん [2014/06/21(土) 10:30:10.12 ID:CuxdLLeL.net]
伊瀬って人の名前かと思ったわ

237 名前:デフォルトの名無しさん mailto:sage [2014/06/21(土) 11:10:30.86 ID:5Gha9VrW.net]
× 伊瀬

○ 伊勢

238 名前:デフォルトの名無しさん mailto:sage [2014/06/21(土) 14:55:17.30 ID:hhcyEr91.net]
>>232
まあ表示させようとしたのはタブ区切りファイルなんだけどね。(「-delimiter `t」を指定)
ちなみにタブ区切りファイルの全行の末尾にタブ1個追加すると最終列も「-eq ""」で抽出出来た。
余談だけどOutGridViewの表示内容をコピーすると全行の末尾に余分なタブが付いてるのもこれ絡みに理由なんだろうか…

239 名前:デフォルトの名無しさん [2014/06/26(木) 07:18:34.55 ID:W91RvMJw.net]
>>236
末尾のタブの有無じゃなくて
もしかして、ファイルの最後に改行が入って無いんじゃない?

240 名前:デフォルトの名無しさん mailto:sage [2014/08/30(土) 05:31:37.22 ID:86Qko6ZX.net]
これはWindowsの内部情報を操る部分にだけ使い、
一般的なUI処理・データ処理はバッチファイルや
PythonやRubyなどを併用した方が良さそうだな
コマンド名が冗長でついていけない



241 名前:デフォルトの名無しさん mailto:sage [2014/08/31(日) 08:59:00.04 ID:Fxu9rxFN.net]
他のLL覚えてて使用できる環境ならそれで十分だとは思うが
さすがにバッチはないわー・・・

242 名前:デフォルトの名無しさん [2014/09/02(火) 09:24:06.69 ID:uW2FT7+h.net]
>>238
ls,cd,cpなど、UNIX系の短いコマンド名も使える

243 名前:デフォルトの名無しさん mailto:sage [2014/09/02(火) 12:39:30.46 ID:Ez2bfEzC.net]
>>238
エイリアスあるだろ

244 名前:デフォルトの名無しさん mailto:sage [2014/09/02(火) 12:56:46.77 ID:rTXrUpAw.net]
コマンドの命名規則が統一されてるから、細かく覚えてなくても、getcommandとタブの補完で済む

245 名前:デフォルトの名無しさん [2014/09/04(木) 21:44:10.03 ID:tOnhAyW6.net]
Windows Server 2012 R2 でFPTサーバー機能インストール後
下記コマンドでサイト追加すると物理パスが設定されない

Import-Module WebAdministration
New-WebFtpSite -Name "●●●" -PhysicalPath "パス文字列"

administrator権限で実行してるし、GUIで設定すると問題なくできる
パス文字列をダブルクォテーション無しやシングルクォテーションで囲ったりも試したがダメだった

誰か助けてくれー

246 名前:デフォルトの名無しさん mailto:sage [2014/09/04(木) 21:53:03.90 ID:uNyEwEdx.net]
>>243
MSのサポートに聞けばいいじゃん
権利持ってるんでしょ

247 名前:デフォルトの名無しさん mailto:sage [2014/09/05(金) 13:32:14.07 ID:TJ9WELPZ.net]
入力したコマンドとエラーメッセージを、正確に書け

パスは相対・絶対?ドライブ名は?
カレントディレクトリはどこにある?

248 名前:デフォルトの名無しさん [2014/09/05(金) 19:56:46.63 ID:AtOrYG8X.net]
>>244

ライセンスは会社で買ってるの
マイクロソフトのサポートページからWindows Server 2012 で
カテゴリでpowershell選んでいくと「支払い方法」とか出てきてひよってしまった
もうちょい頑張ってダメなら聞いてみる

>>245

コマンドは下記

Import-Module WebAdministration
New-WebFtpSite -Name "test" -Port 21 -PhysicalPath "P:\test"

エラーメッセージは表示されず、物理パスが空欄でFTPサイトが追加されてる
パスは絶対、ドライブ名はPドライブがありtestフォルダも作成してる
存在しないパスを指定した場合はエラーになる
カレントディレクトリはC:\Users\Administratorだと思う
(AdministratorでログインしてそのままPowerShell実行 いま職場じゃないので正確じゃなくてすまん)

Windows7でも試してみたが同じ状態になる

249 名前:デフォルトの名無しさん mailto:sage [2014/09/05(金) 23:18:10.66 ID:TJ9WELPZ.net]
PowerShellと同じフォルダにある、powershell_ise で、
-WhatIf オプションを付けて実行してみたら?

このオプションは、実際には実行されず、
何が起こるか表示するだけ

250 名前:デフォルトの名無しさん mailto:sage [2014/09/06(土) 00:33:52.22 ID:lo5BUZzT.net]
この程度でプレミア使ってたら他で使えなくなるだろw



251 名前:デフォルトの名無しさん [2014/09/25(木) 18:53:25.00 ID:3nQex4gX.net]
power shellは、ファイルの入・出力の真似事のようなことはできても、
まともにプログラムを作るのは無理だな。

252 名前:デフォルトの名無しさん [2014/09/25(木) 23:29:14.42 ID:lRwJZ1gU.net]
そりゃ言語部分は、インタプリタの
スクリプトだから、目的が違うよ。
組み合わせれば、いいものもできるが
それだけじゃできても、遅くて無理。

253 名前:デフォルトの名無しさん mailto:sage [2014/09/26(金) 11:58:07.40 ID:TbsD84QQ.net]
DSCとかいうの話題出てないようだけどあれは何なの

254 名前:デフォルトの名無しさん mailto:sage [2014/09/27(土) 14:32:34.67 ID:W5v3g7cK.net]
>>251
www.buildinsider.net/enterprise/powershelldsc/01

255 名前:デフォルトの名無しさん mailto:sage [2014/09/29(月) 14:54:02.15 ID:/M46FFaB.net]
バッチはこんなのまでバッチでやるなんて・・とネタで盛り上がりやすかったんだよな
wshになるとCOM化オブジェクト化+本格スクリプト使用でできて当然、はしゃぐことはなくなっていった
PowerShellはさらに進化し玄人受けがすごく良いが登場時以降は小康状態へ
もっと新規に触れてほしいね

256 名前:デフォルトの名無しさん mailto:sage [2014/09/29(月) 14:59:20.82 ID:/M46FFaB.net]
PowerShellなら、様々なファイルの属性を取り出せる

Nameでファイル名
DirectoryNameで、フォルダまでのフルパス
FullNameで、ファイル名付きフルパスを取り出す
(FullName = DirectoryName + Name)

ファイル名について、
Extensionで、.txt などの拡張子の部分
BaseNameで、Extensionを除いた部分
(Name = BaseName + Extension)

.NETのクラスの説明を参照

257 名前:デフォルトの名無しさん mailto:sage [2014/09/29(月) 20:56:14.73 ID:hnxt5DQK.net]
>>252
アホだろお前
で使ってんのか?

258 名前:デフォルトの名無しさん mailto:sage [2014/10/03(金) 00:23:14.30 ID:pHiC8ZbM.net]
何怒ってんの

259 名前:デフォルトの名無しさん [2014/10/03(金) 23:08:21.66 ID:HQ6EBXmx.net]
ほんとだね。何か言いたいことがあるのかな?

260 名前:デフォルトの名無しさん mailto:sage [2014/10/04(土) 23:13:26.07 ID:zSlTHuRa.net]
powershellから外部コマンドを実行する場合の方法で相談にのってください。
任意個数の引数を指定して外部コマンドを実行するにはどうすればよいでしょうか?

外部プログラム user.exe があるとして、それらに対する引数が任意数あるとします。
$command_line = "user"
として
ループをまわして内部で各種条件判定を行い条件に合致した場合は
$command_line += "-commnad-hoge"
のように対応したコマンドを配列に追加します。

最終的には以下のように設定した状態と同様になります。
$command_line = "user","-command-hoge","-command-fuga","-command-moge"

これをコマンドとして実行したいのですが
$command_line.split()
& $command_line
これだとうまくいきませんでした。
invoke-command -scriptblock { $command_line }
もダメでした。
引数個数が決まっているなら、 -ArgumentListで対応できるのですが・・・。

こういった場合どうすれば良いでしょうか?



261 名前:259 mailto:sage [2014/10/04(土) 23:15:01.58 ID:zSlTHuRa.net]
訂正
$command_line.split()
↑の行は必要ないです。

262 名前:デフォルトの名無しさん mailto:sage [2014/10/05(日) 10:33:19.45 ID:mngpVki9.net]
$program = "user"

$arguments = @()
$arguments += "-command-hoge"
$arguments += "-command-fuga"
$arguments += "-command-moge"

& $program $arguments

263 名前:デフォルトの名無しさん mailto:sage [2014/10/05(日) 16:24:58.31 ID:+/TDLXSL.net]
>>260
ありがとうございます。
いけました。

264 名前:デフォルトの名無しさん mailto:sage [2014/10/05(日) 19:01:10.47 ID:+/TDLXSL.net]
もう一つ質問です。
あるディレクトリが存在していたらそれを削除して新たに生成するという処理を書いているのですが


if ( Test-Path $new_dir )
{
Remove-Item -path $new_dir -recurse -force
}
New-Item -name $new_dir -type directory

と記述したところ、既存の$new_dirが存在していてかつ、中身が少数のファイル数だった場合は問題なく動作しました。
しかし、小さいサイズのファイルが大量にあり削除に時間がかかるような$new_dirの場合
New-Itemが実行される際にエラーになります。

New-Itemが実行される時点でまだ、$new_dirが残っているらしく、すでにディレクトリあるからエラー、といわれてしまいます。
実際にディレクトリをみにいくとすでに消えています。
動作としては、 Remove-Itemの実行完了を待たずにNew-Itemが実行されているような印象でした。
Remove-Itemのオプションで-waitとかもないですし、
これを解消にするにはどうしたら良いでしょうか?

265 名前:デフォルトの名無しさん mailto:sage [2014/10/05(日) 19:42:07.63 ID:oF4PxXkb.net]
それはPowerShell固有の問題ではなく.NETの問題ぽいんだよね

social.msdn.microsoft.com/Forums/vstudio/en-US/c7c4557b-a940-40dc-9fdf-1d8e8b64c46c/dont-create-directory-after-delete?forum=netfxbcl
stackoverflow.com/questions/4216396/system-io-directorynotfoundexception-after-deleting-an-empty-folder-and-recreati

昔これに遭遇したときどうしたかなと調べてみたらフォルダそのものは削除せずにその配下を削除するというコードでお茶を濁してあった

266 名前:デフォルトの名無しさん mailto:sage [2014/10/05(日) 19:54:27.47 ID:+/TDLXSL.net]
>>263
> それはPowerShell固有の問題ではなく.NETの問題ぽいんだよね
うーん、いろいろ深刻なんですね。
割とよくある処理だとおもうのですがw

> 昔これに遭遇したときどうしたかなと調べてみたらフォルダそのものは削除せずにその配下を削除するというコードでお茶を濁してあった
とりあえず、URLを参考にお茶を濁してみます。
ありがとうございました。

267 名前:デフォルトの名無しさん mailto:sage [2014/10/05(日) 20:52:20.32 ID:x1UpicBb.net]
削除に先立ってそのフォルダをリネームしてしまうのはどうかね

268 名前:デフォルトの名無しさん mailto:sage [2014/10/05(日) 23:59:21.00 ID:+/TDLXSL.net]
>>265
> 削除に先立ってそのフォルダをリネームしてしまうのはどうかね
リネーム先の名前がかぶってるかとかチェックするのがだるそうなので
簡略化してかくと↓みたいにして対処しました。
とりあえずこれで問題なくいけてます。
こういうポーリング処理は見苦しくてあまりすきじゃないんですがしょーがないです。
同期オブジェクトでももらえるなら、もらって終わったら起こしてもらうほうが好きですね。
remove-item $path
while ( test-path $path )
{
start-sleep -m 500
}
new-item $path

269 名前:デフォルトの名無しさん mailto:sage [2014/10/06(月) 02:50:23.88 ID:q0WbIU2v.net]
複数のやり方から自分で選択したのにしょーがないもないもんだ

270 名前:デフォルトの名無しさん mailto:sage [2014/10/07(火) 00:03:39.16 ID:j618B6Sr.net]
$a = remove-item $path とか remove-item $path > $null とかかね
いや試してないけど



271 名前:デフォルトの名無しさん mailto:sage [2014/10/07(火) 01:41:24.38 ID:WYpWzpgi.net]
>>263
Windows本体の問題じゃないの?

272 名前:デフォルトの名無しさん mailto:sage [2014/10/15(水) 02:54:21.15 ID:+H/2h/ar.net]
> $7zip="C:\Program Files\7-Zip\7z.exe"
> dir *.zip | % {&$7zip x $_ -y "-o""$($_.Directoryname)"""}

やっていること
7z.exeでそのディレクトリにあるすべてのzipファイルを、
新たにディレクトリを作らず、その場にすべてのファイルを解凍
同名ファイルは上書き。7z.exeのパスは通していない

ポイント
・文字列のパスの先頭に&をつけると実行。変数でも可
・プロセスに渡す"は""。`でエスケープかな?と思うのは間違い
・dir=gci。gciはファイル名ではなくてファイルオブジェクトが渡るので重いっちゃ重い
がそのおかげでファイルオブジェクトのメソッドが使えて便利
・$_はパイプの現在の値。。for /fだと%iとか指定してたあれ。ここではファイルオブジェクト
・メソッドは$()でかこむと値を取り込める。""の中は展開される

273 名前:デフォルトの名無しさん mailto:sage [2014/10/18(土) 11:24:48.22 ID:UrxAWZhY.net]
Outlookのフォルダ構成を出力するのってどんなコマンドレットですか?

274 名前:デフォルトの名無しさん mailto:sage [2014/10/25(土) 12:09:13.69 ID:CSyeBZR0.net]
企業の部門エンドユーザーだが、内製での業務効率化に使えるかなあと思って勉強している
古臭いUNIXシェルに、.netオブジェクトと現代的なスクリプト言語の機能を無理矢理
詰め込んだような感じ。記号やオブション指定が多く、かなり取っつきにくい印象あり
これの想定ユーザーはエンドユーザーではなく開発技術者なのかな?

275 名前:デフォルトの名無しさん mailto:sage [2014/10/25(土) 21:48:14.17 ID:oo9NyNnA.net]
UNIXシェルを遥かに超えてるが故に?普及してないな。
デフォでセキュアなのも原因か。

276 名前:デフォルトの名無しさん mailto:sage [2014/10/25(土) 21:56:37.49 ID:wMFwKrRB.net]
UNIXみたいにアプリがコマンド連携できないから

277 名前:デフォルトの名無しさん mailto:sage [2014/10/25(土) 22:47:35.24 ID:CSyeBZR0.net]
コマンドの公式エイリアスが多すぎるのも頭の痛いところ
get-childitem・gci・dir・lsなどと複数あり、大文字・小文字も自由となれば
人により表記のブレが大きくなり、コードの共有に難が出てくる
それならバッチファイルで済ませたくなるのが人情

278 名前:デフォルトの名無しさん [2014/10/30(木) 08:43:46.53 ID:h9RzQ4Cj.net]
>>275
エイリアスは、
他の環境での利用者を考えた結果だろうから
バッチファイルで済ますという考えがあるなら
エイリアスはdos表記利用だけ、あるいはエイリアス禁止に
してしまう手があるともいえる。

279 名前:デフォルトの名無しさん [2014/10/30(木) 08:48:36.56 ID:h9RzQ4Cj.net]
>>272
もともとがサーバー管理者向けにできたもので、
その利用範囲が拡大してきたということでしょ。
エンドユーザーの想定は、少なくとも当初は無いと思うけど。
>>274
その意味が分かんない。PowerShellの方が連携しやすいと
いう認識あるんだけど、思っている意味が違うのかな?

280 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 09:14:10.61 ID:eeECNXMU.net]
>>277
UNIXみたいなCUIアプリはパイプと標準入出力で連携できるけど
windowsは基本GUIアプリばかりなので連携できない
もしかして何かあるのなら無知な私に教えてくださいませ



281 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 11:12:43.92 ID:P7z1oqc0.net]
Powershell は Powershell で閉じてるよねえ
grep したり find したりとか自前でやるあたりやっぱりシェルっていうより言語環境に近い

282 名前:デフォルトの名無しさん [2014/10/30(木) 13:23:12.07 ID:ApVpmuLz.net]
>>278
>基本GUIアプリばかりなので
自身で主に使っているのがそういう環境だ
ということじゃないかな

283 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 15:13:41.75 ID:n5jf4ckH.net]
旧来のシェルは単にテキスト吐き出すだけだからね、
それ以上でも以下でもない。

284 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 22:03:57.70 ID:7iNuGGQG.net]
zshやbashは組み込みコマンドだけじゃ何も出来ないからな
awkとかperlのワンライナーとか使い出したら、それはもうシェルスクリプトって次元じゃないだろう

285 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 22:22:21.39 ID:tllqb13A.net]
>>278
本業のWindows Server系ではまずPowerShellコマンドレットで機能実装してGUIの皮を被せ
GUI操作内容を後でスクリプトとして吐き出したりできるようにしているよ

286 名前:デフォルトの名無しさん [2014/10/30(木) 22:24:49.66 ID:k8NiVNHr.net]
とはいえperlつかっても結局テキスト吐き出すだけだし
アプリプログラムとしたら、めちゃくちゃ遅いので
その面ではメリットのある利用はシェル替わりにしかならなから
弱ったもんだ。

287 名前:デフォルトの名無しさん [2014/10/30(木) 22:32:50.58 ID:k8NiVNHr.net]
>>278
そもそも、Serverでの管理用に出てきたのに、基本GUIなんて
こと有り得ないでしょう。ちょっと勘違いしてるかな。

288 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 22:42:32.77 ID:aZFM4Dkl.net]
>>278
GUIしかないアプリ間で連携させたいというなら
そもそもバッチファイルだろうがUNIXだろうが無理な話で

Windowsだってサーバー管理はコマンドラインツールでどうにかしてきたし、
コマンドラインツールを勉強せずに連携とか言ってるなら、そもそも思想がおかしい。

PowerShellになると既存のコマンドはほとんど置き換えられてしまうけど
色々なコマンドのオプション指定方法がある程度共通化されて、学習コストは下がってきてるし、
データの連携もやりやすくなってるから、今までの経験は置いといて覚えなおすのが良いと思う。

289 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 22:45:43.43 ID:2y8PDjyu.net]
>>283
スレ違いかもしれないけど、PowerShellのGUIって何で作るの?

290 名前:デフォルトの名無しさん [2014/10/30(木) 22:47:51.51 ID:k8NiVNHr.net]
WPFでもWinFormでもSiverlightでも。

めちゃくちゃ簡単で自由度高いよ。



291 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 22:55:20.17 ID:IM+QeQcX.net]
読みづらいんだけど。規約とか工夫してることある?

292 名前:デフォルトの名無しさん [2014/10/30(木) 22:57:13.10 ID:k8NiVNHr.net]
>>289 
私の場合は、省略形(エイリアス)は使わないようにしてる。
自分だけならいいんだけどね。

293 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 22:58:03.04 ID:tllqb13A.net]
>>287
アプリの機能をコマンドレットとして実装してるってだけで
別にPowerShellでGUIまで実装してるわけじゃないよ?

294 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 23:05:47.26 ID:P7z1oqc0.net]
サーバー管理系以外のアプリもコマンドレット実装してたりするもんなの?

295 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 23:12:25.65 ID:2y8PDjyu.net]
>>291
自分でつかうぶんにはコンソールから使えばいいんだけど、他のひとにつかってもらうときにはGUIがあったらいいなー何て思ってるのでつい反応してしまいましたがな。。。。

296 名前:デフォルトの名無しさん [2014/10/30(木) 23:13:10.90 ID:k8NiVNHr.net]
まだそんなにないでしょうね。
わたしは作ってるけど。
米国ではツールとしてだいぶでてきてる。
聞いていることの回答になっているかはわからないけど。

297 名前:295 [2014/10/30(木) 23:15:39.82 ID:k8NiVNHr.net]
>>294 は >>292 への回答でした

298 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 04:19:42.55 ID:6uOYsRYD.net]
学習中だが、コードが見にくいですなあ
キャストも添字参照もオブジェクトのメンバアクセスも[]を使うので
[]だらけになってしまいがち。あと$・@・{}などの記号が多い印象
シンプルなPythonから来たのでかなりつらい

299 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 06:10:03.53 ID:5RNGAkQP.net]
旧来のシェルを知ってると馴染みぶかくていい

300 名前:デフォルトの名無しさん [2014/10/31(金) 07:03:03.31 ID:rr8q/oyJ.net]
記号が多い言語と言えば

静かな湖畔の森の陰から
もう起きちゃいかがとカッコウがなく
カッコウ カッコウ カッコウ カッコウ カッコウ

Lispの歌でした



301 名前:デフォルトの名無しさん [2014/10/31(金) 09:19:46.12 ID:th/TRSyt.net]
記号の種類が多いのは、何と言ってもAPL
これに種類が勝る言語はないだろう。

作った本人がわからなくなるという話は有名

302 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 07:38:04.23 ID:zr+1nUxZ.net]
型を指定できる時点で断然いい
Pythonはワンライナーが致命的に向かないので、Perlやawkがなくなる事はないだろう






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<263KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef