>>74
>まさかとは思うがツールというのはGUIのことだろうか
なわけないよ。
要は今は良くなってきているが
シェル言語なないと処理できないようなのがUnix系の世界
だったということ
ほかにろくなものないから
PowerShell -Part 4
レス数が1000を超えています。これ以上書き込みはできません。
77デフォルトの名無しさん
2020/01/12(日) 21:27:38.66ID:gh55rPFY78デフォルトの名無しさん
2020/01/12(日) 22:41:27.46ID:gh55rPFY ま、そりゃいいか。
PowerShellを語る板だから
ごめん。
PowerShellの話に戻します。
PowerShellを語る板だから
ごめん。
PowerShellの話に戻します。
2020/01/13(月) 13:13:43.40ID:GhUCXbF0
意味不明。結局、CUIでない、GUIでもない"ツール"とはいったい何だったのか
2020/01/16(木) 08:46:49.48ID:wD5IBL5x
81デフォルトの名無しさん
2020/01/28(火) 00:59:10.36ID:b7mfcqCA 刻々と変化する変数をフォームに表示させたいんだけど
当然この例だと実行した時点での変数しか表示されません。
フォームのラベルの変数を動的に表示し続ける方法を教えてください(この例だと時計のように動かしたい)
$time = Get-Date
Add-Type -AssemblyName System.Windows.Forms
$form = New-Object System.Windows.Forms.Form
$label = New-Object System.Windows.Forms.Label
$label.Text = $time
$form.Controls.Add($label)
$form.ShowDialog()
当然この例だと実行した時点での変数しか表示されません。
フォームのラベルの変数を動的に表示し続ける方法を教えてください(この例だと時計のように動かしたい)
$time = Get-Date
Add-Type -AssemblyName System.Windows.Forms
$form = New-Object System.Windows.Forms.Form
$label = New-Object System.Windows.Forms.Label
$label.Text = $time
$form.Controls.Add($label)
$form.ShowDialog()
2020/01/28(火) 02:09:43.73ID:Vj4Y99PX
タイマーイベントとかあるじゃろ
C#タイマーあたりでぐぐれ
C#タイマーあたりでぐぐれ
2020/01/28(火) 05:27:11.17ID:gua2EZr0
正確な時間じゃなくても良いなら、Ruby なら、sleep で簡単にできる。
ただし、OS がバッファリングしてると、最後にまとめて出力されてしまう!
STDOUT.sync = true # バッファリングしない
3.times do
puts Time.now
sleep 3
end
ただし、OS がバッファリングしてると、最後にまとめて出力されてしまう!
STDOUT.sync = true # バッファリングしない
3.times do
puts Time.now
sleep 3
end
2020/01/28(火) 08:59:06.21ID:CfcUNbbY
フォーム要素はどこに行った
2020/01/28(火) 19:45:19.95ID:xyAuIeAM
>>81
別スレッドで非同期にフォームを起動すればいい
using namespace System.Windows.Forms
using assembly System.Windows.Forms
$label = [Label]@{ Dock = "Fill"; Font = "Meiryo,20" }
$form = [Form]@{ Size = "350,100" }
$form.Controls.Add($label)
$runspace = [RunspaceFactory]::CreateRunspace()
$runspace.Open()
$pipeline = $runspace.CreatePipeline()
$pipeline.Commands.AddScript({ param ($form) $form.ShowDialog() })
$pipeline.Commands[0].Parameters.Add("form", $form)
$pipeline.InvokeAsync()
foreach ($p in 1..10) {
if ($Runspace.RunspaceAvailability -ne "Busy") { break }
$time = [datetime]::Now
$label.Text = $time
sleep 1
}
if ($Runspace.RunspaceAvailability -eq "Busy") { $form.Close() }
$runspace.Dispose()
別スレッドで非同期にフォームを起動すればいい
using namespace System.Windows.Forms
using assembly System.Windows.Forms
$label = [Label]@{ Dock = "Fill"; Font = "Meiryo,20" }
$form = [Form]@{ Size = "350,100" }
$form.Controls.Add($label)
$runspace = [RunspaceFactory]::CreateRunspace()
$runspace.Open()
$pipeline = $runspace.CreatePipeline()
$pipeline.Commands.AddScript({ param ($form) $form.ShowDialog() })
$pipeline.Commands[0].Parameters.Add("form", $form)
$pipeline.InvokeAsync()
foreach ($p in 1..10) {
if ($Runspace.RunspaceAvailability -ne "Busy") { break }
$time = [datetime]::Now
$label.Text = $time
sleep 1
}
if ($Runspace.RunspaceAvailability -eq "Busy") { $form.Close() }
$runspace.Dispose()
2020/01/30(木) 19:49:29.15ID:dJd/g4Kb
2020/02/01(土) 09:36:54.77ID:tNoLSDZ1
2020/02/01(土) 10:30:55.09ID:escHc8OK
PowerShel で凝ったことやろうとすると、どうしても C# の知識が必要になるよな。
おかげで、C# を勉強する良いきっかけになったわ。スキルの幅が広がるのは嬉しい。
おかげで、C# を勉強する良いきっかけになったわ。スキルの幅が広がるのは嬉しい。
2020/02/01(土) 11:42:52.32ID:S54SgdVf
C#スキル?
.net frameworkの知識じゃなくて?
.net frameworkの知識じゃなくて?
2020/02/01(土) 21:57:28.51ID:KsqMKxaU
C#全く使えん奴は凝ったことすら思いつかないのでは
2020/02/01(土) 22:22:36.87ID:QN2fVxGF
$label = [Label]@{ Dock = "Fill"; Font = "Meiryo,20" }
という式を初めて見て驚いてるんだけど、これについてのドキュメントってどこかにありますか?
という式を初めて見て驚いてるんだけど、これについてのドキュメントってどこかにありますか?
2020/02/01(土) 23:27:18.65ID:1A0Wf54C
>>91
PowerShell 3からの機能
クラスが引数を取らないコンストラクタを持っていて、プロパティがパブリックでset可能なら使える
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_hash_tables?view=powershell-7#creating-objects-from-hash-tables
PowerShell 3からの機能
クラスが引数を取らないコンストラクタを持っていて、プロパティがパブリックでset可能なら使える
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_hash_tables?view=powershell-7#creating-objects-from-hash-tables
2020/02/02(日) 11:46:03.71ID:9GpNdTap
2020/02/04(火) 17:22:37.51ID:Rq+qX9o+
オブジェクト志向ライクでいいんだけど、
powershellへbatやVBSから置き換えようとすると機能によってはバージョンチェックをしないといけないのがもどかしい
.NETにしろそうなんだけどね
powershellへbatやVBSから置き換えようとすると機能によってはバージョンチェックをしないといけないのがもどかしい
.NETにしろそうなんだけどね
2020/02/04(火) 20:42:27.29ID:uL6VAIkG
ご教示ください。
商品の価格を定期的にWebサイトから取得したいのですが、Invoke-WebRequestで取得したHtmlWebResponseObjectから要素の内の文字列を取り出そうとすると「Windows セキュリティの警告」のポップアップが表示されてしまいます。
ポップアップを出さずに要素の内の文字列を取得するにはどうすればよいでしょうか?
$response = Invoke-WebRequest -uri "https://www.yodobashi.com/product/100000001002955686/"
$price = $response.ParsedHtml.getElementById("js_scl_unitPrice").innerText
これを実行すると「この Web サイトから個人用の情報を提供できるように、Cookie と呼ばれる小さなファイルをこのコンピューターに配置できるようにしますか?」と表示されます。
商品の価格を定期的にWebサイトから取得したいのですが、Invoke-WebRequestで取得したHtmlWebResponseObjectから要素の内の文字列を取り出そうとすると「Windows セキュリティの警告」のポップアップが表示されてしまいます。
ポップアップを出さずに要素の内の文字列を取得するにはどうすればよいでしょうか?
$response = Invoke-WebRequest -uri "https://www.yodobashi.com/product/100000001002955686/"
$price = $response.ParsedHtml.getElementById("js_scl_unitPrice").innerText
これを実行すると「この Web サイトから個人用の情報を提供できるように、Cookie と呼ばれる小さなファイルをこのコンピューターに配置できるようにしますか?」と表示されます。
2020/02/04(火) 21:00:56.36ID:sy7Lzsaq
なんでPSで?・・・
2020/02/04(火) 22:40:04.72ID:tW1M7Be/
cookie powershellでぐぐればやり方は出てくる
javascriptとか出てきたら素直にseleniumを使う
seleniumをpowershellで使う方法もある
javascriptとか出てきたら素直にseleniumを使う
seleniumをpowershellで使う方法もある
2020/02/07(金) 03:46:32.51ID:eL08TT0Y
DateTimePickerで翌日の日付をデフォルト選択する方法ありませんか?
2020/02/07(金) 06:17:27.09ID:Ec63bSXx
[DateTimePicker]@{ Value = [datetime]::Now.AddDays(1) }
100デフォルトの名無しさん
2020/02/07(金) 17:42:43.13ID:eL08TT0Y >>99
できましたサンクス!
できましたサンクス!
101デフォルトの名無しさん
2020/02/09(日) 17:36:01.93ID:7dfvQcUC 同スクリプト重複実行抑止する場合
皆さんどうしてますか?
pid書き出し?Mutex?
皆さんどうしてますか?
pid書き出し?Mutex?
102デフォルトの名無しさん
2020/02/09(日) 19:33:00.88ID:9UBXd1bi mutex
103デフォルトの名無しさん
2020/02/10(月) 12:17:46.17ID:f4vRyC3Z コールバック関数ってpowershellで可能ですか?
104デフォルトの名無しさん
2020/02/10(月) 12:24:25.91ID:8uBZGbTk 可能ですよ
105デフォルトの名無しさん
2020/02/10(月) 14:42:20.49ID:OVbm/XKG どうやるのですか?
106デフォルトの名無しさん
2020/02/10(月) 15:13:30.85ID:8uBZGbTk スクリプトブロックを渡すか、関数なら
$function:関数名
で渡す
実行は & でやるのが基本で他にもいろいろ方法がある
$function:関数名
で渡す
実行は & でやるのが基本で他にもいろいろ方法がある
107デフォルトの名無しさん
2020/02/10(月) 18:46:32.72ID:D64OFTKi スクリプトからフォームをshowメソッドで表示すると固まってしまい、
showDialogメソッドで表示すると操作できるようになります。
例えばモーダルフォームを表示した親フォームが固まるのは分かるのですが、
呼び出したモードレスフォームが固まってしまうのは何故なのでしょうか。
showDialogメソッドで表示すると操作できるようになります。
例えばモーダルフォームを表示した親フォームが固まるのは分かるのですが、
呼び出したモードレスフォームが固まってしまうのは何故なのでしょうか。
108デフォルトの名無しさん
2020/02/10(月) 21:56:58.62ID:RZngPC6l 103です。
実はコールバック関数が何かもよく理解してませんが、
以下URL先の
$sslStream = New-Object System.Net.Security.SslStream($stream,$false,({$True} -as [Net.Security.RemoteCertificateValidationCallback]))
の第三引数がコールバック関数でしょうか?
このやり方を理解したくて。
https://stackoverflow.com/questions/19252963/powershell-ssl-socket-client
実はコールバック関数が何かもよく理解してませんが、
以下URL先の
$sslStream = New-Object System.Net.Security.SslStream($stream,$false,({$True} -as [Net.Security.RemoteCertificateValidationCallback]))
の第三引数がコールバック関数でしょうか?
このやり方を理解したくて。
https://stackoverflow.com/questions/19252963/powershell-ssl-socket-client
109デフォルトの名無しさん
2020/02/11(火) 13:53:02.82ID:iYccZVyV コールバックはこの説明が分かりやすい
https://wa3.i-3-i.info/word12295.html
Powershellだと「スクリプトブロック」というコードを { } で括った物がコールバック関数として使える
引数として直接書いてもいいし、一度変数に代入して変数を引数に渡してもいい
{$True} という部分がそれ
でも今回は「スクリプトブロック」じゃなくて「RemoteCertificateValidationCallback」でと指定されている
三つ目のコンストラクタの引数の型に注目
https://docs.microsoft.com/ja-jp/dotnet/api/system.net.security.sslstream?view=netframework-4.8#constructors
なので -as 演算子で型変換をしてる
https://wa3.i-3-i.info/word12295.html
Powershellだと「スクリプトブロック」というコードを { } で括った物がコールバック関数として使える
引数として直接書いてもいいし、一度変数に代入して変数を引数に渡してもいい
{$True} という部分がそれ
でも今回は「スクリプトブロック」じゃなくて「RemoteCertificateValidationCallback」でと指定されている
三つ目のコンストラクタの引数の型に注目
https://docs.microsoft.com/ja-jp/dotnet/api/system.net.security.sslstream?view=netframework-4.8#constructors
なので -as 演算子で型変換をしてる
110デフォルトの名無しさん
2020/02/11(火) 14:24:03.53ID:AAFADizG とりあえず、引数がご飯で戻り値がウンコと言う事だけはわかった。
111デフォルトの名無しさん
2020/02/11(火) 15:25:48.37ID:LmagV5MS >>107
win32APIでウィンドウ作ったりしたことなかったら分からないかもしれないけどざっくり言うと
ウィンドウがOSからのメッセージ(マウスがクリックされたとか、ボタンが押されたとか)
を処理するにはOSからのメッセージをウィンドウに知らせてやる必要がある(メッセージループ)
ShowDialogはその辺をよしなにやってくれる
win32APIでウィンドウ作ったりしたことなかったら分からないかもしれないけどざっくり言うと
ウィンドウがOSからのメッセージ(マウスがクリックされたとか、ボタンが押されたとか)
を処理するにはOSからのメッセージをウィンドウに知らせてやる必要がある(メッセージループ)
ShowDialogはその辺をよしなにやってくれる
112デフォルトの名無しさん
2020/02/15(土) 04:04:02.58ID:Nij30Obe113デフォルトの名無しさん
2020/02/15(土) 08:45:46.45ID:Ba23wrvp >>109
103です。ありがとうございます。なんとなくわかったような気がしますが、自分には.netクラスライブラリのリファレンスマニュアル読めるほどのオブジェクト指向プログラムの知識が足りてないようです。
powershellでちょっと小難しい事しようと思うといつもこの壁にぶち当たります。
103です。ありがとうございます。なんとなくわかったような気がしますが、自分には.netクラスライブラリのリファレンスマニュアル読めるほどのオブジェクト指向プログラムの知識が足りてないようです。
powershellでちょっと小難しい事しようと思うといつもこの壁にぶち当たります。
114デフォルトの名無しさん
2020/02/15(土) 09:54:27.30ID:/QpUFa9s >>112
デバッガで実行ステップを追う感覚で捉えると分かりやすいよ
Powershellのようなコンソールアプリって基本シングルスレッドで、上から下に処理が流れて最後まで行ったら終わりでしょ
Showメソッドは表示するだけ
ShowDialogと違って閉じるのを待たずに呼び出し元に処理を戻すから、メインスレッドはすぐに続きのスクリプト処理を再開してしまう
ウィンドウっていつでもユーザーのマウス操作に反応できて、閉じられるまでは処理が終わらないよね
それは無限ループを回し続けて、マウス操作のような指令が来るまでキューを調べて待つ体制に入ってるから
その仕事を直接的にも間接的にもやってないならウインドウはだんまりになって当然
結論、コンソールアプリから最初に呼び出すウィンドウはモーダル表示にすべし
デバッガで実行ステップを追う感覚で捉えると分かりやすいよ
Powershellのようなコンソールアプリって基本シングルスレッドで、上から下に処理が流れて最後まで行ったら終わりでしょ
Showメソッドは表示するだけ
ShowDialogと違って閉じるのを待たずに呼び出し元に処理を戻すから、メインスレッドはすぐに続きのスクリプト処理を再開してしまう
ウィンドウっていつでもユーザーのマウス操作に反応できて、閉じられるまでは処理が終わらないよね
それは無限ループを回し続けて、マウス操作のような指令が来るまでキューを調べて待つ体制に入ってるから
その仕事を直接的にも間接的にもやってないならウインドウはだんまりになって当然
結論、コンソールアプリから最初に呼び出すウィンドウはモーダル表示にすべし
115デフォルトの名無しさん
2020/02/16(日) 00:31:35.72ID:EHy9IoT2 >>114
ありがとうございます
スッキリしました
よくC#でShowDialogで表示した時はDisposeを呼ばないとダメと言いますが、
これもイベントループを作るのか作らないかの差なのでしょうか
また、PowerShellでもDisposeした方がいいのでしょうか
ありがとうございます
スッキリしました
よくC#でShowDialogで表示した時はDisposeを呼ばないとダメと言いますが、
これもイベントループを作るのか作らないかの差なのでしょうか
また、PowerShellでもDisposeした方がいいのでしょうか
116デフォルトの名無しさん
2020/03/05(木) 08:17:58.34ID:Lxf+ynQs Announcing PowerShell 7.0
https://devblogs.microsoft.com/powershell/announcing-powershell-7-0/
Today, we’re happy to announce the Generally Available (GA) release of PowerShell 7.0!
https://devblogs.microsoft.com/powershell/announcing-powershell-7-0/
Today, we’re happy to announce the Generally Available (GA) release of PowerShell 7.0!
117デフォルトの名無しさん
2020/03/06(金) 04:35:17.20ID:fNVi1eTS インストーラで出てくるスパイダーマンのパチモンみたいなの何なの
118デフォルトの名無しさん
2020/03/06(金) 05:16:26.33ID:hxBXwa2S Overwatchのソンブラにそっくりだけどパクったのか?
119デフォルトの名無しさん
2020/03/06(金) 09:18:25.45ID:jyEHwxlL https://blog.shibata.tech/entry/2017/10/14/153510
このキャラクターはあまり認知度は高くないと思いますがPowerShell公式のキャラクターです。
名前はそのまま PowerShell の様です。(よくある言語の擬人化なのでしょう)
中の人からはPowerShell HeroやPosh-Chan*2と呼ばれている様です。
いまではPowerShell TeamのTwitterアイコンにも採用されています。
このキャラクターはあまり認知度は高くないと思いますがPowerShell公式のキャラクターです。
名前はそのまま PowerShell の様です。(よくある言語の擬人化なのでしょう)
中の人からはPowerShell HeroやPosh-Chan*2と呼ばれている様です。
いまではPowerShell TeamのTwitterアイコンにも採用されています。
120デフォルトの名無しさん
2020/03/06(金) 11:37:23.38ID:B7JE7mx4 >>116
キタ━━━━(゚∀゚)━━━━!!
キタ━━━━(゚∀゚)━━━━!!
121デフォルトの名無しさん
2020/03/06(金) 16:45:05.11ID:EUcOgnT/ PowerShellの本増えないかなー
日本でももう少し流行ってほしい
日本でももう少し流行ってほしい
122デフォルトの名無しさん
2020/03/06(金) 17:17:48.60ID:mKExt1TS >>121
Windows が関係するインフラ系の管理ではデファクトだと思ってたけど違うんかい?
自分はインフラ系の仕事が多いんだけど、MS 製品は言うに及ばず、
VMware、AWS、HPE の設定とか構築で使うためのモジュールが用意されてるんで、
そっち系の人は全員使ってるのかと思ってた。
今関わってる案件だと客先で用意された作業用 PC でも PowerCLI は
入れさせてもらえるんで、VMware の構築&設定が超絶はかどってすごく助かってる。
Windows が関係するインフラ系の管理ではデファクトだと思ってたけど違うんかい?
自分はインフラ系の仕事が多いんだけど、MS 製品は言うに及ばず、
VMware、AWS、HPE の設定とか構築で使うためのモジュールが用意されてるんで、
そっち系の人は全員使ってるのかと思ってた。
今関わってる案件だと客先で用意された作業用 PC でも PowerCLI は
入れさせてもらえるんで、VMware の構築&設定が超絶はかどってすごく助かってる。
123デフォルトの名無しさん
2020/03/06(金) 19:23:36.96ID:EUcOgnT/ >>122
IT系ですらない製造業の人間なので、インフラとかよく知らんです
CSVファイルとか扱う定型業務でVBAの代わりに流行らないかなーと思ってる
会社PCに標準で入ってるのが何よりありがたい
たまたまC#の経験あるからPowerShellが使いやすく感じるだけなのかもしれんけど
VBAは古すぎるし、文化が違いすぎて好きになれない…
IT系ですらない製造業の人間なので、インフラとかよく知らんです
CSVファイルとか扱う定型業務でVBAの代わりに流行らないかなーと思ってる
会社PCに標準で入ってるのが何よりありがたい
たまたまC#の経験あるからPowerShellが使いやすく感じるだけなのかもしれんけど
VBAは古すぎるし、文化が違いすぎて好きになれない…
124デフォルトの名無しさん
2020/03/06(金) 22:15:50.08ID:mKExt1TS >>123
確かに、RPA 的な用途にも使えるわね。
そう言われてみれば、IT プロ向けの PowerShell の資料は山ほどあるけど、
エンドユーザの業務効率化に的を絞った資料ってあまり聞かないね。
エンドユーザが手作業でやってる定型業務を PowerShell +αで
自動化/半自動化する事例を紹介する資料を作れば需要ありそう。
確かに、RPA 的な用途にも使えるわね。
そう言われてみれば、IT プロ向けの PowerShell の資料は山ほどあるけど、
エンドユーザの業務効率化に的を絞った資料ってあまり聞かないね。
エンドユーザが手作業でやってる定型業務を PowerShell +αで
自動化/半自動化する事例を紹介する資料を作れば需要ありそう。
125デフォルトの名無しさん
2020/03/07(土) 20:55:12.96ID:yZMlhieX Windows以外でもGridViewが使える
A new kind of GridView right in your console: Introducing the early preview of ConsoleGuiTools
https://devblogs.microsoft.com/powershell/introducing-consoleguitools-preview/
A new kind of GridView right in your console: Introducing the early preview of ConsoleGuiTools
https://devblogs.microsoft.com/powershell/introducing-consoleguitools-preview/
126デフォルトの名無しさん
2020/03/09(月) 17:26:48.99ID:BZZ4ItAR パワーシェルでテキストファイルを一行ずつ読み取って環境変数化するのはどうやるんでしょうか?
バッチファイルだと簡単にできるのにパワーシェルだと難しい
イメージ的にはこんなことをパワーシェルでやりたいです
for /f %%a “usebackq” in (./testfile.txt) do (
set testenv=%%a
echo !testenv!
)
バッチファイルだと簡単にできるのにパワーシェルだと難しい
イメージ的にはこんなことをパワーシェルでやりたいです
for /f %%a “usebackq” in (./testfile.txt) do (
set testenv=%%a
echo !testenv!
)
127デフォルトの名無しさん
2020/03/10(火) 14:15:31.74ID:qUF7p1Fi こーゆー感じのことやりたいのか?
cat .\testfile.txt | %{ $env:testenv = $_; $env:testenv }
cat .\testfile.txt | %{ $env:testenv = $_; $env:testenv }
128デフォルトの名無しさん
2020/03/10(火) 14:32:38.22ID:j2kTK4tI >>126
Get-Content -Path .\TextFile.txt | ForEach-Object -Process { $env:TestVar = $_ }
もしくは
$ContentData = Get-Content -Path .\TextFile.txt
foreach ($LineData in $ContentData) {
$env:TestVar = $LineData
}
こんな感じじゃないかな
知らんけど
グローバルな環境変数への代入はどうするのかな?
Get-Content -Path .\TextFile.txt | ForEach-Object -Process { $env:TestVar = $_ }
もしくは
$ContentData = Get-Content -Path .\TextFile.txt
foreach ($LineData in $ContentData) {
$env:TestVar = $LineData
}
こんな感じじゃないかな
知らんけど
グローバルな環境変数への代入はどうするのかな?
129デフォルトの名無しさん
2020/03/11(水) 20:45:46.50ID:lIDu6EwW130デフォルトの名無しさん
2020/03/11(水) 20:47:48.33ID:lIDu6EwW あ、システム環境変数のことですか
シェルスクリプト内の一時環境変数?で良いのです
シェルスクリプト内の一時環境変数?で良いのです
131デフォルトの名無しさん
2020/03/13(金) 14:02:44.23ID:MwEg+WGB javawみたいな感じで、スクリプト実行時にコマンドプロンプトを出さない方法はありませんか?1ファイルで。
ショートカットやvbs等の2ファイル使う方法なら解ってます。
ショートカットやvbs等の2ファイル使う方法なら解ってます。
132デフォルトの名無しさん
2020/03/13(金) 15:02:17.45ID:VpgJT114 まだ開発中
WIP: Add pwshw for console-less PowerShell on Windows
https://github.com/PowerShell/PowerShell/pull/10962
WIP: Add pwshw for console-less PowerShell on Windows
https://github.com/PowerShell/PowerShell/pull/10962
133デフォルトの名無しさん
2020/03/13(金) 15:27:21.47ID:e1b5/B0w ↑そのpwshwが取り込まれるまでは、↓を自前でビルドして自作pwshwなり、powershellwなりを作ることもできるよ
https://github.com/SeidChr/RunHiddenConsole
ビルドしてできたhiddenw.exeをリネームして使うだけ
https://github.com/SeidChr/RunHiddenConsole
ビルドしてできたhiddenw.exeをリネームして使うだけ
134デフォルトの名無しさん
2020/03/13(金) 19:15:38.63ID:cafRoH7X >>131
1,まず、.ps1 で動作するスクリプトを作る
2,1を BASE64 でエンコード
3,powershell.exe にオプション -EncodedCommand と 2をつないで実行
4,3を .cmd (.bat) に書く
詳細は「powershell EncodedCommand」みたいな感じでググればいいでしょう。
1,まず、.ps1 で動作するスクリプトを作る
2,1を BASE64 でエンコード
3,powershell.exe にオプション -EncodedCommand と 2をつないで実行
4,3を .cmd (.bat) に書く
詳細は「powershell EncodedCommand」みたいな感じでググればいいでしょう。
136デフォルトの名無しさん
2020/03/14(土) 10:34:16.74ID:3Jd+nG/t exe化するやつにそんなオプションがあったと思う
137デフォルトの名無しさん
2020/03/15(日) 16:23:53.40ID:ake3THHi Windows PowerShell in Action、900ページあるけど面白かった
次はPowerShell fo Sysadmins読もうかな
次はPowerShell fo Sysadmins読もうかな
138デフォルトの名無しさん
2020/03/15(日) 23:09:18.13ID:b9Qsc7j/ python.exe / pythonw.exe や ruby.exe / rubyw.exe の違いでよく悩むのでまとめておく
https://blog.shibayan.jp/entry/20141221/1419171414
https://blog.shibayan.jp/entry/20141221/1419171414
139デフォルトの名無しさん
2020/03/16(月) 21:24:16.40ID:vD0R4SAm >>133
さいこー。ありがとう
さいこー。ありがとう
140デフォルトの名無しさん
2020/03/20(金) 21:08:31.06ID:hI9v4wSz win10 バージョン5.1
Invoke-RestMethodの"-body"にjsonを入れる方法を教えてほしい
google photos apiで日付を指定して一覧を取得したい
ubuntu + curlで
curl -s -X POST -H "Authorization: Bearer " -H "Content-type: application/json"
-d '{"filters":{"dateFilter": {"dates":[{"year":2019,"month":11,"day":15}]}}}'
https://photoslibrary.googleapis.com/v1/mediaItems:search
これだと取得出来るんだけど
powershellで
$header = @{"Authorization" = "Bearer "};
$body = '{"filters":{"dateFilter": {"dates":[{"year":2019,"month":11,"day":15}]}}}';
Invoke-RestMethod -Uri https://photoslibrary.googleapis.com/v1/mediaItems:search
-Method Post -Headers $header -Body $body ;
(400) 要求が不適切ですでエラーになる
たぶんbodyの入れ方が悪いだと思うんだけど
アルバムIDの絞り込みだったら
$body=@{
"albumId"="id"
}
で取得出来た
Invoke-RestMethodの"-body"にjsonを入れる方法を教えてほしい
google photos apiで日付を指定して一覧を取得したい
ubuntu + curlで
curl -s -X POST -H "Authorization: Bearer " -H "Content-type: application/json"
-d '{"filters":{"dateFilter": {"dates":[{"year":2019,"month":11,"day":15}]}}}'
https://photoslibrary.googleapis.com/v1/mediaItems:search
これだと取得出来るんだけど
powershellで
$header = @{"Authorization" = "Bearer "};
$body = '{"filters":{"dateFilter": {"dates":[{"year":2019,"month":11,"day":15}]}}}';
Invoke-RestMethod -Uri https://photoslibrary.googleapis.com/v1/mediaItems:search
-Method Post -Headers $header -Body $body ;
(400) 要求が不適切ですでエラーになる
たぶんbodyの入れ方が悪いだと思うんだけど
アルバムIDの絞り込みだったら
$body=@{
"albumId"="id"
}
で取得出来た
141デフォルトの名無しさん
2020/03/20(金) 23:34:49.75ID:fNo2jQuJ -ContentType "application/json" を付けるか
もしくは全部ヘッダに入れる
$accessToken = "your access token"
$uri = "https://photoslibrary.googleapis.com/v1/mediaItems:search"
$response = Invoke-RestMethod $uri -Method Post -Headers @{
Authorization = "Bearer $accessToken"
Filters = @{
DateFilter = @{
Dates = @{ Year = 2016; Month = 3; Day = 1 }
}
}
}
もしくは全部ヘッダに入れる
$accessToken = "your access token"
$uri = "https://photoslibrary.googleapis.com/v1/mediaItems:search"
$response = Invoke-RestMethod $uri -Method Post -Headers @{
Authorization = "Bearer $accessToken"
Filters = @{
DateFilter = @{
Dates = @{ Year = 2016; Month = 3; Day = 1 }
}
}
}
142デフォルトの名無しさん
2020/03/21(土) 00:10:00.03ID:AKmTgF3+ ごめんやっぱBodyに入れないといけない
$body = @{
filters = @{
dateFilter = @{
dates = @(@{ year = 2019; month = 11; day = 15 })
}
}
} | ConvertTo-Json -Depth 100
$param = @{
Uri = $uri
Method = "Post"
Headers = @{ Authorization = "Bearer $accessToken" }
Body = $body
ContentType = "application/json"
}
$response = Invoke-RestMethod @param
$body = @{
filters = @{
dateFilter = @{
dates = @(@{ year = 2019; month = 11; day = 15 })
}
}
} | ConvertTo-Json -Depth 100
$param = @{
Uri = $uri
Method = "Post"
Headers = @{ Authorization = "Bearer $accessToken" }
Body = $body
ContentType = "application/json"
}
$response = Invoke-RestMethod @param
143デフォルトの名無しさん
2020/03/21(土) 00:24:48.78ID:WepcD5N+144デフォルトの名無しさん
2020/03/21(土) 09:18:44.54ID:AEZYARkU145デフォルトの名無しさん
2020/03/21(土) 09:34:19.00ID:Nklv0DXu VSCode の拡張機能、REST Client が簡単!
POST http://localhost:8888/abc HTTP/1.1
content-type: application/json
{
"name": "abc",
"time": "時刻"
}
POST http://localhost:8888/abc HTTP/1.1
content-type: application/json
{
"name": "abc",
"time": "時刻"
}
146デフォルトの名無しさん
2020/03/21(土) 10:02:37.23ID:+Hs4SQrc147デフォルトの名無しさん
2020/03/21(土) 17:39:49.06ID:vJ0Lurek Windows PowerShell in Actionの改3版、日本語訳してくれないかなぁ…
148デフォルトの名無しさん
2020/03/23(月) 10:55:55.25ID:wpOCnP6k パイプラインを繋げる先を条件で分岐って可能ですか?
イメージとしては
Get-Nantoka |
Switch ($_.Name)
Case ('A') | Get-NantokaA
Case ('B') | Get-NantokaB
Case ('C') | Get-NantokaC
な感じです
イメージとしては
Get-Nantoka |
Switch ($_.Name)
Case ('A') | Get-NantokaA
Case ('B') | Get-NantokaB
Case ('C') | Get-NantokaC
な感じです
149デフォルトの名無しさん
2020/03/23(月) 22:15:40.05ID:nB8lN/u6 さすがにそんなシンタックスはないが同じような動作はできる
$continuation = @{
A = { select Name,Age | Write-Host -f Cyan }.GetSteppablePipeline()
B = { select Name,Gender | Write-Host -f Magenta }.GetSteppablePipeline()
C = { select Name | Write-Host -f Yellow }.GetSteppablePipeline()
}
$continuation.Values.ForEach("Begin", $true)
@"
Name,Age,Gender
A,12,Male
C,93,Female
B,32,Male
A,52,Female
C,73,Female
"@ | ConvertFrom-Csv | foreach { $continuation[$_.Name].Process($_) }
$continuation.Values.ForEach("End")
$continuation = @{
A = { select Name,Age | Write-Host -f Cyan }.GetSteppablePipeline()
B = { select Name,Gender | Write-Host -f Magenta }.GetSteppablePipeline()
C = { select Name | Write-Host -f Yellow }.GetSteppablePipeline()
}
$continuation.Values.ForEach("Begin", $true)
@"
Name,Age,Gender
A,12,Male
C,93,Female
B,32,Male
A,52,Female
C,73,Female
"@ | ConvertFrom-Csv | foreach { $continuation[$_.Name].Process($_) }
$continuation.Values.ForEach("End")
150デフォルトの名無しさん
2020/03/24(火) 02:11:10.59ID:1omVAMXs 結局処理を別々に書かなきゃいけないなら書いてる通りswitch文でいいんじゃねって気はする
151デフォルトの名無しさん
2020/03/24(火) 12:26:04.21ID:/23EZweg switch文だと毎回新規にGetNantokaAとかが呼ばれてしまうため例えばGetNantokaAがMeasure-Objectだと意味がなくなる
152デフォルトの名無しさん
2020/03/24(火) 13:30:06.69ID:n2AHJDo3153デフォルトの名無しさん
2020/03/24(火) 16:14:53.92ID:/23EZweg >>152
> いま、もしかして上にある「パイプラインの並列化」って分岐の事じゃね?と思ったのだが違うのかな
同じルーチンが複数同時に走るってことだとと思う
排他制御とか順序の保証とかがどうなってるのかが気になる
> いま、もしかして上にある「パイプラインの並列化」って分岐の事じゃね?と思ったのだが違うのかな
同じルーチンが複数同時に走るってことだとと思う
排他制御とか順序の保証とかがどうなってるのかが気になる
154デフォルトの名無しさん
2020/03/24(火) 19:15:33.49ID:n2AHJDo3155デフォルトの名無しさん
2020/03/24(火) 19:46:16.61ID:1omVAMXs >>151
あーそれでわざわざGetSteppablePipeline使ってるのね
あーそれでわざわざGetSteppablePipeline使ってるのね
156デフォルトの名無しさん
2020/03/24(火) 21:24:12.31ID:LC2xv/4E >>149が何やってるのかサッパリ
GetSteppablePipelineでぐぐっても日本人はほとんど存在士らないのかなって具合
GetSteppablePipelineでぐぐっても日本人はほとんど存在士らないのかなって具合
157デフォルトの名無しさん
2020/03/24(火) 22:44:37.71ID:VBWCR/ci ScriptBlock.GetSteppablePipeline Method
https://docs.microsoft.com/en-us/dotnet/api/system.management.automation.scriptblock.getsteppablepipeline
https://docs.microsoft.com/en-us/dotnet/api/system.management.automation.scriptblock.getsteppablepipeline
158デフォルトの名無しさん
2020/03/24(火) 23:52:12.51ID:LC2xv/4E >>149の最初の連想配列作ってるとこは判る
問題は次
>$continuation.Values.ForEach("Begin", $true)
これ何してるの?
Values.ForEachて。
こんな書き方でSteppablePipelineのBeginメソッドが呼べるの?
C言語の配列で"A"[0]みたいなトリッキーさを連想させるのだが
問題は次
>$continuation.Values.ForEach("Begin", $true)
これ何してるの?
Values.ForEachて。
こんな書き方でSteppablePipelineのBeginメソッドが呼べるの?
C言語の配列で"A"[0]みたいなトリッキーさを連想させるのだが
159デフォルトの名無しさん
2020/03/25(水) 03:41:09.46ID:IDfpoHeN .ForEachはメソッド形式のForeach-Objectで、要するにC#のLINQをPowerShell風にアレンジした何か
どっちかというと.ForEach({ ..... }) みたいにスクリプトブロックを渡す使い方が主流だと思うけど、メソッド名を文字列で渡してオブジェクトのメソッドを呼び出すこともできる
ステッパブルパイプラインは任意のパイプライン(文)をメソッド形式で呼び出せるようにするための何か
渡された引数を先頭のコマンドにパイプして実行させることができる
どっちかというと.ForEach({ ..... }) みたいにスクリプトブロックを渡す使い方が主流だと思うけど、メソッド名を文字列で渡してオブジェクトのメソッドを呼び出すこともできる
ステッパブルパイプラインは任意のパイプライン(文)をメソッド形式で呼び出せるようにするための何か
渡された引数を先頭のコマンドにパイプして実行させることができる
160デフォルトの名無しさん
2020/03/25(水) 18:56:02.32ID:8IWtSBvh powershellで2つのファイルの差分のみを抜き出して追加や削除されたものは別ファイルに出力したいです
例えば
fileA.txt
aaa
uuu
iii
fileB.txt
iii
uuu
eee
とあった場合にfileBをマスタとしてaaaの文字列をdelete.txtにeeeの文字列をadd.txt出力したいです。
やり方教えてください!
例えば
fileA.txt
aaa
uuu
iii
fileB.txt
iii
uuu
eee
とあった場合にfileBをマスタとしてaaaの文字列をdelete.txtにeeeの文字列をadd.txt出力したいです。
やり方教えてください!
161デフォルトの名無しさん
2020/03/25(水) 19:05:36.15ID:D/1vKEW+ 素人ですまんけど、
$test0 = "a", "b", "c"
$test1 = $test0[1]
こういった時に、$test0のbを同時に削除する書き方はありますか?別途処理を書く必要あり?
$test0 = "a", "b", "c"
$test1 = $test0[1]
こういった時に、$test0のbを同時に削除する書き方はありますか?別途処理を書く必要あり?
162デフォルトの名無しさん
2020/03/26(木) 00:05:42.98ID:fIJkkKI3 >>160
function Marge([object[]]$Adds,[object[]]$Deletes){
$Adds|Where-Object{$_ -notin $Deletes}
}
Marge $(Get-Content fileB.txt) $(Get-Content fileA.txt) > add.txt
Marge $(Get-Content fileA.txt) $(Get-Content fileB.txt) > delete.txt
function Marge([object[]]$Adds,[object[]]$Deletes){
$Adds|Where-Object{$_ -notin $Deletes}
}
Marge $(Get-Content fileB.txt) $(Get-Content fileA.txt) > add.txt
Marge $(Get-Content fileA.txt) $(Get-Content fileB.txt) > delete.txt
163デフォルトの名無しさん
2020/03/26(木) 00:09:27.46ID:fIJkkKI3164デフォルトの名無しさん
2020/03/26(木) 00:14:14.98ID:fIJkkKI3 -ne演算子の場合は大小比較をしないので注意
もし比較する場合は>>162のように-notin演算子とWhere関数でフィルタする
もし比較する場合は>>162のように-notin演算子とWhere関数でフィルタする
165デフォルトの名無しさん
2020/03/26(木) 08:51:19.38ID:BddTdfqa166デフォルトの名無しさん
2020/03/28(土) 02:03:33.90 scoop の魅力
167デフォルトの名無しさん
2020/03/30(月) 02:08:56.05ID:VM+VSYRD > $a = try{get-content data.txt}catch{@()}
> $a = if(3 -ne 4){11}else{22}
ダメ元で試してみたらこんな書き方出来たのかよ
> $a = if(3 -ne 4){11}else{22}
ダメ元で試してみたらこんな書き方出来たのかよ
168デフォルトの名無しさん
2020/03/30(月) 07:08:11.36ID:PN3/f/57 うん、だから三項演算子入れないでほしかった
なんでわざわざ評判微妙な記法を取り入れたんだろ
なんでわざわざ評判微妙な記法を取り入れたんだろ
169デフォルトの名無しさん
2020/03/30(月) 18:31:48.20ID:2xrywwd7 三項演算子は俺の大好物
170デフォルトの名無しさん
2020/03/30(月) 18:44:14.41ID:kxtxXuN0 C#8.0のswitch式見ててあれってなったけど、そういえば右辺に文を持ってこれるのってPowerShellくらいなんだっけ
171デフォルトの名無しさん
2020/03/30(月) 22:05:50.57ID:bK3E1kug goto を禁止して
今度は if then else を禁止しようってか?
今度は if then else を禁止しようってか?
172デフォルトの名無しさん
2020/03/31(火) 09:18:05.97ID:hmCJ2D6X # RSSの内容を取得
$url="https://rss.itmedia.co.jp/rss/2.0/ait.xml"
$webclient = new-object System.Net.WebClient
$webclient.Encoding = [System.Text.Encoding]::UTF8
$rss = [xml]$webclient.downloadstring($url)
とやった場合に$rssの内容を手早く調べるにはどうやればいいですか?
$rss | ConvertTo-Json -Depth 100
$rss | Out-GridView
なんかは表示が貧弱すぎてわかりません
多少長くてもいいので正確に(できればJSONで)階層化する方法が知りたいです
$rssはあくまで一例で類似の複雑なオブジェクト全般について知りたいです
$url="https://rss.itmedia.co.jp/rss/2.0/ait.xml"
$webclient = new-object System.Net.WebClient
$webclient.Encoding = [System.Text.Encoding]::UTF8
$rss = [xml]$webclient.downloadstring($url)
とやった場合に$rssの内容を手早く調べるにはどうやればいいですか?
$rss | ConvertTo-Json -Depth 100
$rss | Out-GridView
なんかは表示が貧弱すぎてわかりません
多少長くてもいいので正確に(できればJSONで)階層化する方法が知りたいです
$rssはあくまで一例で類似の複雑なオブジェクト全般について知りたいです
173デフォルトの名無しさん
2020/03/31(火) 12:14:42.73ID:b44czDa9 >>172
$rss.rss.channel.item で一覧表示される(もちろんGridViewで見てもよい)けど、そういうことではなくて?
$rss.rss.channel.item で一覧表示される(もちろんGridViewで見てもよい)けど、そういうことではなくて?
174デフォルトの名無しさん
2020/03/31(火) 13:02:27.84ID:UGGIMXD4 >>172
JSONとXMLじゃ表現できる範囲が違うから「正確に」と言うなら$rss.OuterXmlとかで見るしかないと思うよ
インデントとか付けて見易くしたいならXmlWriter使って整形すればいい
https://imihito.hatenablog.jp/entry/2018/01/20/225513
JSONとXMLじゃ表現できる範囲が違うから「正確に」と言うなら$rss.OuterXmlとかで見るしかないと思うよ
インデントとか付けて見易くしたいならXmlWriter使って整形すればいい
https://imihito.hatenablog.jp/entry/2018/01/20/225513
175172
2020/03/31(火) 15:56:05.63ID:hmCJ2D6X ISEからVSCodeに変えてデバッグ&インスペクトしたら大体望み通りの表示が得られました
https://i.imgur.com/HRVgQP3.png
[xml]な$rssも細部まで階層表示が出来ました
余計なプロパティがあまりにもごちゃごちゃしていて目視で$rssの把握は無理気味でしたが…
ありがとうございました
https://i.imgur.com/HRVgQP3.png
[xml]な$rssも細部まで階層表示が出来ました
余計なプロパティがあまりにもごちゃごちゃしていて目視で$rssの把握は無理気味でしたが…
ありがとうございました
176デフォルトの名無しさん
2020/04/01(水) 05:14:26.18ID:T/a2Vy7O VSCode に、XML のお勧め拡張機能はないの?
177デフォルトの名無しさん
2020/04/01(水) 08:11:20.55ID:VNCwfYlv >>176
スレタイ1024回読み直せ
スレタイ1024回読み直せ
178デフォルトの名無しさん
2020/04/01(水) 20:40:01.19ID:wuY/0uuQ classとclassを使うスクリプトの場所を分けたい場合
例えば
c:\workフォルダに
main.ps1
c:\work\class フォルダに
class1.ps1
class2.ps1
class2.ps1はclass1.ps1を読込ので先頭に
cd $PSScriptRoot
. ".\class1.ps1"
main.ps1はclass2.ps1を読込ので先頭に
cd $PSScriptRoot
. ".\class\class2.ps1"
これでmain.ps1動かすとディレクトリがc:\work\classに変わっちゃうから
class2.ps1を読み込んだ後にもう一度cd $PSScriptRootでディレクトリを移動し直すのが
なんか気持ち悪いんですが、絶対パスでやる以外に方法はあるんでしょうか
例えば
c:\workフォルダに
main.ps1
c:\work\class フォルダに
class1.ps1
class2.ps1
class2.ps1はclass1.ps1を読込ので先頭に
cd $PSScriptRoot
. ".\class1.ps1"
main.ps1はclass2.ps1を読込ので先頭に
cd $PSScriptRoot
. ".\class\class2.ps1"
これでmain.ps1動かすとディレクトリがc:\work\classに変わっちゃうから
class2.ps1を読み込んだ後にもう一度cd $PSScriptRootでディレクトリを移動し直すのが
なんか気持ち悪いんですが、絶対パスでやる以外に方法はあるんでしょうか
179デフォルトの名無しさん
2020/04/02(木) 02:02:55.73ID:sgXKVFsI pushd popd
180デフォルトの名無しさん
2020/04/02(木) 23:47:54.92ID:W0wv5F0P . "$PSScriptRoot\class1.ps1"
と絶対パスでやるのが一般的
カレントディレクトリの移動はやらんほうがいい
と絶対パスでやるのが一般的
カレントディレクトリの移動はやらんほうがいい
181デフォルトの名無しさん
2020/04/03(金) 01:06:03.07ID:BrOkETDP なる程その手があったか
どうもありがとう
どうもありがとう
182デフォルトの名無しさん
2020/04/08(水) 19:04:23.59ID:bFKpwotA 連想配列をカンマ区切りに置換してファイル出力する方法教えてください
配列の場合はわかるんですが連想配列の場合がわかりません
@{id=001;name=hoge}
みたいなやつを↓
001,hoge
みたいな感じにしたいんです
配列の場合はわかるんですが連想配列の場合がわかりません
@{id=001;name=hoge}
みたいなやつを↓
001,hoge
みたいな感じにしたいんです
183デフォルトの名無しさん
2020/04/08(水) 19:27:34.84ID:VOICq9dy @{id="001";name="hoge"}.Values -join ","
184デフォルトの名無しさん
2020/04/08(水) 20:46:56.85ID:u/iW9oDx >>183
なるほど!!
なるほど!!
185デフォルトの名無しさん
2020/04/09(木) 10:17:18.42ID:qPytwYgo powershellのエラー発生時のログ出力って皆さんどうやってますか?
単純にpowershellの画面上に出力されてるエラーをログに吐き出したいだけなのですがイマイチやり方が分かりません!
単純にpowershellの画面上に出力されてるエラーをログに吐き出したいだけなのですがイマイチやり方が分かりません!
186デフォルトの名無しさん
2020/04/09(木) 11:37:10.62ID:ZcR3gUW3 $error
187デフォルトの名無しさん
2020/04/19(日) 17:57:40.84ID:LL/F5W9x シフト右クリックからpowershellウインドウをここで開くでウインドウ立ち上げた時にアクティブな状態で立ち上がらないから一回クリックしたりして選択し直さないかんのが地味にストレス
188デフォルトの名無しさん
2020/04/19(日) 18:12:07.47ID:wL4NwIK0 >>187
おま環
おま環
189デフォルトの名無しさん
2020/04/19(日) 18:14:16.64ID:vjiWfekt シフト右クリックするとメニューが出る
このとき先にシフトを離してから開く操作をするといい
シフトを押した状態でアプリを起動すると非アクティブで開くのはWindowsの昔からの機能
このとき先にシフトを離してから開く操作をするといい
シフトを押した状態でアプリを起動すると非アクティブで開くのはWindowsの昔からの機能
190デフォルトの名無しさん
2020/04/19(日) 18:18:01.41ID:vjiWfekt Windows95の頃からこの機能は変わっていないと思う
191デフォルトの名無しさん
2020/04/19(日) 19:11:09.49ID:jwLUU+vG192デフォルトの名無しさん
2020/04/19(日) 19:35:33.27ID:/0QkS1hn なるほど、勉強になった
ありがとう
ありがとう
193デフォルトの名無しさん
2020/04/21(火) 22:23:31.60ID:8Kh2/Vc8 >>137
結構古い本だけど今でも読み応えある感じですか?
結構古い本だけど今でも読み応えある感じですか?
194デフォルトの名無しさん
2020/04/23(木) 21:26:18.73ID:xCk1mGre 日本語に翻訳された初版じゃなくて第3版でしょ
Windows PowerShell in Action, Third Edition
https://www.manning.com/books/windows-powershell-in-action-third-edition
Windows PowerShell in Action, Third Edition
https://www.manning.com/books/windows-powershell-in-action-third-edition
195デフォルトの名無しさん
2020/04/28(火) 10:53:40.07ID:+ujIhWuh メンバを呼ぶ.(ドット)の演算子を逆参照演算子と呼ぶらしいんだけど、どこら辺が逆なんだろう
196デフォルトの名無しさん
2020/04/28(火) 15:39:52.27ID:nkgQazrR Cとかでは * で値を得ることをdereferenceということがあるよ。
197デフォルトの名無しさん
2020/04/28(火) 19:06:19.94ID:+ujIhWuh 逆参照演算子もdereferenceの直訳っぽいね
参照の反対の行動という意味で逆なのかな
参照の反対の行動という意味で逆なのかな
198デフォルトの名無しさん
2020/04/29(水) 08:59:09.87ID:pj1FfIiR 参照先のオブジェクト実体を見る、参照じゃなくなるからdereference(逆参照)
199デフォルトの名無しさん
2020/04/29(水) 10:32:55.55ID:JJa9UlV/ 普通、参照外しって訳すけどな。「逆」じゃ意味が通じない。
200デフォルトの名無しさん
2020/04/29(水) 11:22:32.85ID:HjIuTJYT Powershellに逆参照演算子なんてないでしょ
ドットはMember access operatorとDot sourcing operatorの二種類のはず
ほかの言語との混同があるのでは
C言語の & と * を参照演算子、逆参照演算子と訳すなら分かるし、-> を逆参照演算子と呼ぶのもまあ分かる
ドットはMember access operatorとDot sourcing operatorの二種類のはず
ほかの言語との混同があるのでは
C言語の & と * を参照演算子、逆参照演算子と訳すなら分かるし、-> を逆参照演算子と呼ぶのもまあ分かる
201デフォルトの名無しさん
2020/04/29(水) 12:43:39.55ID:YtBfjahw 日本語版Windows PowerShell in Actionにそう書いてあった気がするんだが、
確かにMSDN見るとMember access operatorだ
確かにMSDN見るとMember access operatorだ
202デフォルトの名無しさん
2020/04/29(水) 12:50:10.22ID:YtBfjahw vscode上だと高度な関数のbeginブロックで定義した変数が、
processブロック中で使ってるにも関わらず未参照の警告が出るんだけど良い解決方法ないでしょうか
未参照確認自体は便利なので黙らせたくはないです
processブロック中で使ってるにも関わらず未参照の警告が出るんだけど良い解決方法ないでしょうか
未参照確認自体は便利なので黙らせたくはないです
203デフォルトの名無しさん
2020/04/29(水) 21:28:33.91ID:kj6lHAl7 >>199
逆参照と訳す人が現実にいるんだから仕方がない
https://www.google.com/search?q=dereference+%E9%80%86%E5%8F%82%E7%85%A7
逆参照と訳す人が現実にいるんだから仕方がない
https://www.google.com/search?q=dereference+%E9%80%86%E5%8F%82%E7%85%A7
204デフォルトの名無しさん
2020/04/30(木) 09:42:14.57ID:Lei4veWw >>200-201
古い about_Operators には property dereferences operator とあるので、改名されたのかも。
https://docs.microsoft.com/en-us/previous-versions/powershell/module/microsoft.powershell.core/about/about_operators
古い about_Operators には property dereferences operator とあるので、改名されたのかも。
https://docs.microsoft.com/en-us/previous-versions/powershell/module/microsoft.powershell.core/about/about_operators
205デフォルトの名無しさん
2020/04/30(木) 14:51:17.97ID:qeUJHkfv https://docs.microsoft.com/ja-jp/previous-versions/windows/powershell-scripting/hh847732(v=wps.640)
. プロパティ逆参照演算子
オブジェクトのプロパティとメソッドにアクセスします。
$myProcess.peakWorkingSet
(get-process PowerShell).kill()
. プロパティ逆参照演算子
オブジェクトのプロパティとメソッドにアクセスします。
$myProcess.peakWorkingSet
(get-process PowerShell).kill()
206デフォルトの名無しさん
2020/05/01(金) 00:27:41.37ID:iyqswZZm 一般的には
参照 アドレスを取り出す
逆参照 アドレスに入っている値を取り出す
だけど値を取り出すことを「逆」と訳した経緯がわからん
参照 アドレスを取り出す
逆参照 アドレスに入っている値を取り出す
だけど値を取り出すことを「逆」と訳した経緯がわからん
207デフォルトの名無しさん
2020/05/01(金) 05:46:31.59ID:XmUvZ7vC 変な翻訳だな
値参照でいい
値参照でいい
208デフォルトの名無しさん
2020/05/01(金) 12:57:54.38ID:578ddPng dereferenceはやっぱ参照外しかな
referenceってポインタ(または名前)が主語で、実体に向かって矢印が向いている、ポイントしている状態
逆参照というとこの矢印を逆に辿る、変数からポインタを探すになっちゃう
接頭辞de-を「離れる」と理解せずに、かなり派生的な「逆」と訳して定着した誤訳に近い語だと思う
referenceってポインタ(または名前)が主語で、実体に向かって矢印が向いている、ポイントしている状態
逆参照というとこの矢印を逆に辿る、変数からポインタを探すになっちゃう
接頭辞de-を「離れる」と理解せずに、かなり派生的な「逆」と訳して定着した誤訳に近い語だと思う
209デフォルトの名無しさん
2020/05/01(金) 12:58:58.53ID:578ddPng いずれにしてもPowershellでdereferenceなんて概念を持ち込む必要がないからメンバアクセス演算子って名前に改善されたんでしょう
210デフォルトの名無しさん
2020/05/01(金) 16:33:54.54ID:5CcYXcTT C系は逆参照じゃないの
むしろ参照外しのほうがわからんかったが
むしろ参照外しのほうがわからんかったが
211デフォルトの名無しさん
2020/05/01(金) 17:34:48.85ID:578ddPng どっちがデファクトスタンダードかって話とどっちが正しいかって話は別だから
確信犯とか姑息みたいに誤用の方が普及して定義が揺らいでる言葉はいろいろあるけどどう使うかは話者次第
確信犯とか姑息みたいに誤用の方が普及して定義が揺らいでる言葉はいろいろあるけどどう使うかは話者次第
212デフォルトの名無しさん
2020/05/04(月) 01:09:24.67ID:hArtKUaR 初心者です
move-item等でファイル名に[]があるとエラーがある事を知りました
ようやく -LiteralPath つければ良いと分かりましたが、
デフォルトの仕様がワイルドカード受け付けるのって初心者殺しというか…
なれてる人はこっちの方が便利なんでしょうか
move-item等でファイル名に[]があるとエラーがある事を知りました
ようやく -LiteralPath つければ良いと分かりましたが、
デフォルトの仕様がワイルドカード受け付けるのって初心者殺しというか…
なれてる人はこっちの方が便利なんでしょうか
213デフォルトの名無しさん
2020/05/04(月) 03:59:19.96ID:eeiLu4M/ Powershell好きだけどファイル名の [ ] の扱いは失策だと思う
214デフォルトの名無しさん
2020/05/04(月) 08:21:59.04ID:ayLem+RW ?や*すらファイル名に使えるUNIXの世界へようこそ!
215デフォルトの名無しさん
2020/05/04(月) 09:28:04.92ID:hArtKUaR >>213
やっぱりそうですよね・・・
比較演算子も、-matchで[ ]があるとエラーになって困りました
これもいろいろ調べてようやく-match [regex]::escape() にすれば良いと分かりましたが・・・
PowerShellって参考書もあまりなくて古いし、ネットの情報もあまりなくてなかなか学習が進みません・・・
そもそもPowerShell ISEのヘルプで -pathは「ワイルドカード文字を許可する false」って嘘書いてあるのが・・・
やっぱりそうですよね・・・
比較演算子も、-matchで[ ]があるとエラーになって困りました
これもいろいろ調べてようやく-match [regex]::escape() にすれば良いと分かりましたが・・・
PowerShellって参考書もあまりなくて古いし、ネットの情報もあまりなくてなかなか学習が進みません・・・
そもそもPowerShell ISEのヘルプで -pathは「ワイルドカード文字を許可する false」って嘘書いてあるのが・・・
216デフォルトの名無しさん
2020/05/04(月) 11:59:27.10ID:dnvbBZmT ファイル名はともかくmatch が正規表現で比較ってのは割と知られているような気もするけど
217デフォルトの名無しさん
2020/05/04(月) 13:19:22.94ID:XmeTIU4M 対になるlike演算子があるからなんとなくわかる
ところでreplaceの正規表現じゃない版が欲しい・・・
ところでreplaceの正規表現じゃない版が欲しい・・・
218デフォルトの名無しさん
2020/05/04(月) 13:22:34.10ID:eeiLu4M/ たしかに-matchの話に限っては単なる勘違いだな
match(一致)と言われて部分一致だと思うかといえば、普通はpattern matchでしょう
参考にしたサイトが悪かったのかもしれない
正規表現を使わないなら "a[b]c".Contains("[b]") でいい
match(一致)と言われて部分一致だと思うかといえば、普通はpattern matchでしょう
参考にしたサイトが悪かったのかもしれない
正規表現を使わないなら "a[b]c".Contains("[b]") でいい
219デフォルトの名無しさん
2020/05/04(月) 13:25:02.05ID:eeiLu4M/220デフォルトの名無しさん
2020/05/04(月) 13:42:36.44ID:XmeTIU4M なるほどね
そういや -replace [regex]::escape()でもOKか
そういや -replace [regex]::escape()でもOKか
221デフォルトの名無しさん
2020/05/04(月) 16:06:32.60ID:hArtKUaR >>216 >>218
教えていただいてありがとうございます。
自分がやりたかったのは、例えば hoge[hoge] というファイル名で拡張子の違う
複数のファイルの移動だったんですが、最初は
$hoge = "hoge[hoge]"
Move-Item "C:\test\$hoge.*" "C:\test2"
これは失敗しました([ ]があるファイルを処理していて気がつきました)
いろいろ調べて
Get-ChildItem "C:\test\*.*"|Where-Object{$_.basename -match [regex]::escape("$hoge")}|Move-Item -Destination "C:\test2"
してみて成功しました
今回教えてもらって
Get-ChildItem "C:\test\*.*"|Where-Object{$_.basename.contains("$hoge")}|Move-Item -Destination "C:\test2"
これでOKみたいです。まだ冗長な気もしますが・・・
教えていただいてありがとうございます。
自分がやりたかったのは、例えば hoge[hoge] というファイル名で拡張子の違う
複数のファイルの移動だったんですが、最初は
$hoge = "hoge[hoge]"
Move-Item "C:\test\$hoge.*" "C:\test2"
これは失敗しました([ ]があるファイルを処理していて気がつきました)
いろいろ調べて
Get-ChildItem "C:\test\*.*"|Where-Object{$_.basename -match [regex]::escape("$hoge")}|Move-Item -Destination "C:\test2"
してみて成功しました
今回教えてもらって
Get-ChildItem "C:\test\*.*"|Where-Object{$_.basename.contains("$hoge")}|Move-Item -Destination "C:\test2"
これでOKみたいです。まだ冗長な気もしますが・・・
222デフォルトの名無しさん
2020/05/04(月) 17:06:49.01ID:LlR+aKwZ パスの角括弧の扱いはpsの一番いけてないとこだからね
角括弧のみをエスケープする場合は次のようにする
move "C:\test\$hoge.*".Replace('[', '``[') "C:\test2"
もしくは-Filterパラメータが角括弧をワイルドカード扱いしないことを利用して
move "C:\test\*" "C:\test2" -Filter "$hoge.*"
角括弧のみをエスケープする場合は次のようにする
move "C:\test\$hoge.*".Replace('[', '``[') "C:\test2"
もしくは-Filterパラメータが角括弧をワイルドカード扱いしないことを利用して
move "C:\test\*" "C:\test2" -Filter "$hoge.*"
223デフォルトの名無しさん
2020/05/04(月) 18:54:18.78ID:hArtKUaR >>222
なるほど。 [ だけエスケープすれば大丈夫なんですね
ようやく引っかかってた所から脱出できそうです
皆さん大変ありがとうございました
なるほど。 [ だけエスケープすれば大丈夫なんですね
ようやく引っかかってた所から脱出できそうです
皆さん大変ありがとうございました
224デフォルトの名無しさん
2020/05/06(水) 21:11:41.78ID:prm5gj7H これってクラス多めのオブジェクト指向でやるべきなのか、
高度な関数多めのパイプライン志向(?)でやるべきなのか、
どっちがいいのかな
高度な関数多めのパイプライン志向(?)でやるべきなのか、
どっちがいいのかな
225デフォルトの名無しさん
2020/05/07(木) 01:36:33.14ID:k5uIH00p オブジェクト使い回す設計のほうが読みやすそうならそうする
高度な関数ってどんなんやねん
高度な関数ってどんなんやねん
226デフォルトの名無しさん
2020/05/07(木) 02:22:01.91ID:GVyLSOna 高度な関数ってずいぶん懐かしい単語だな、普通に関数でいいと思うよ
全ては無理に和訳しようとしたMSが悪い
全ては無理に和訳しようとしたMSが悪い
227デフォルトの名無しさん
2020/05/07(木) 08:07:17.17ID:O8jL8wQb228デフォルトの名無しさん
2020/05/07(木) 08:26:30.42ID:H2g0PsUL PSのクラスって判らんからコード量増えたらC#埋め込むわ
229843
2020/05/07(木) 09:38:19.28ID:1Drf/TcZ PSのクラスって機能が足りないとかはあるけど特に難しい所はないと思うが…
230デフォルトの名無しさん
2020/05/07(木) 23:47:47.43ID:cnY/r+Lf 教えてください。
WindowsServer2012のADユーザー情報の取得についてです。
testunyo.local
┗ユーザー
┗Users
上記OUにあるユーザーの情報のうち、
ログオンID
フルネーム(表示名)
所属するグループ名 の情報をcsvで抽出したいとき、
Get-ADPrincipalGroupMembership -identity test | Select-Object name | Format-Wide -Column 20 | Out-String -Width 500 >> C:\work\logtest.csv
とすると所属するグループ名しか抽出できません。
A列にログオンID、
B列にフルネーム、
C列以降に所属するグループ名
と、1ユーザー1レコードで表示させたいとき、
どのようにするのが良いでしょうか?
Get-ADPrincipalGroupMembershipではなく、csvdeを使うのが良さそう
とは思ったのですが、うまく抽出できませんでした。
WindowsServer2012のADユーザー情報の取得についてです。
testunyo.local
┗ユーザー
┗Users
上記OUにあるユーザーの情報のうち、
ログオンID
フルネーム(表示名)
所属するグループ名 の情報をcsvで抽出したいとき、
Get-ADPrincipalGroupMembership -identity test | Select-Object name | Format-Wide -Column 20 | Out-String -Width 500 >> C:\work\logtest.csv
とすると所属するグループ名しか抽出できません。
A列にログオンID、
B列にフルネーム、
C列以降に所属するグループ名
と、1ユーザー1レコードで表示させたいとき、
どのようにするのが良いでしょうか?
Get-ADPrincipalGroupMembershipではなく、csvdeを使うのが良さそう
とは思ったのですが、うまく抽出できませんでした。
231デフォルトの名無しさん
2020/05/08(金) 01:23:43.35ID:GBARQ9Uf Select-Object name で name プロパティしか抽出できてないとか?
232デフォルトの名無しさん
2020/05/08(金) 12:22:27.69ID:Fn4yfVbS >>221
Ruby で作った。
DryRun なので、実際には実行されません
require 'fileutils'
dest_dir = "C:/test2"
keyword = "hoge[hoge]"
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/test/*"
src_dir = File.dirname( glob_pattern ) # ディレクトリパスだけを取り出す
Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.select { |full_path| File.basename( full_path, ".*" ) === keyword } # 拡張子を取り除いた部分のファイル名
.each do |full_path|
dest_path = dest_dir + "/" + File.basename( full_path ) # ファイル名
FileUtils::DryRun.move( full_path, dest_path )
end
出力
mv C:/test/hoge[hoge].txt C:/test2/hoge[hoge].txt
Ruby で作った。
DryRun なので、実際には実行されません
require 'fileutils'
dest_dir = "C:/test2"
keyword = "hoge[hoge]"
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/test/*"
src_dir = File.dirname( glob_pattern ) # ディレクトリパスだけを取り出す
Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.select { |full_path| File.basename( full_path, ".*" ) === keyword } # 拡張子を取り除いた部分のファイル名
.each do |full_path|
dest_path = dest_dir + "/" + File.basename( full_path ) # ファイル名
FileUtils::DryRun.move( full_path, dest_path )
end
出力
mv C:/test/hoge[hoge].txt C:/test2/hoge[hoge].txt
233デフォルトの名無しさん
2020/05/08(金) 13:46:42.62ID:fxtS7XW6 GetNewClosureで作ったクロージャからトップレベルに定義した関数にアクセスできんのだがスコープどうなってんだ?
function Hoge () {}
{ Hoge }.Invoke() #うごく
{ Hoge }.GetNewClosure().Invoke() #うごかん
function Hoge () {}
{ Hoge }.Invoke() #うごく
{ Hoge }.GetNewClosure().Invoke() #うごかん
234デフォルトの名無しさん
2020/05/08(金) 15:09:04.88ID:eZ8FT/L5 またキチガイが湧いてきたか
NG しやすいように、コテハン付けて欲しいわ
NG しやすいように、コテハン付けて欲しいわ
235デフォルトの名無しさん
2020/05/10(日) 09:05:34.07ID:oQrk4XHl >>233
トップレベルと呼んでいるのは、(仮に) Hoge.ps1 の Script スコープでいいよね?
PowerShell のクロージャは、動的モジュールにバインドされたスクリプトブロック。
モジュールの Script スコープは、常に Global スコープの直接の子なので、
クロージャの Local スコープは、Hoge.ps1 の Script スコープの子孫にならない。
スコープの親子関係:
[Global] - [Script(Hoge.ps1)] <== Hoge 関数の定義されているスコープ
[Global] - [Script(動的モジュール)] - [Local] <== 問題のクロージャ内のスコープ
トップレベルと呼んでいるのは、(仮に) Hoge.ps1 の Script スコープでいいよね?
PowerShell のクロージャは、動的モジュールにバインドされたスクリプトブロック。
モジュールの Script スコープは、常に Global スコープの直接の子なので、
クロージャの Local スコープは、Hoge.ps1 の Script スコープの子孫にならない。
スコープの親子関係:
[Global] - [Script(Hoge.ps1)] <== Hoge 関数の定義されているスコープ
[Global] - [Script(動的モジュール)] - [Local] <== 問題のクロージャ内のスコープ
236デフォルトの名無しさん
2020/05/10(日) 15:23:52.95ID:JjPR8mXC Ruby で作った!
237デフォルトの名無しさん
2020/05/11(月) 21:37:49.46ID:41JmE2xy238デフォルトの名無しさん
2020/05/12(火) 21:11:03.62ID:2xTEfvW8 Closures in PowerShell
https://devblogs.microsoft.com/scripting/closures-in-powershell/
Windows PowerShell uses dynamic modules to create dynamic closures.
A closure in computer science terms (at least as defined in Wikipedia) is “a function that is evaluated in an environment containing one or more bound variables.”
A bound variable is, for our purposes, a variable that exists and has a value. The environment in our case is the dynamic module.
https://devblogs.microsoft.com/scripting/closures-in-powershell/
Windows PowerShell uses dynamic modules to create dynamic closures.
A closure in computer science terms (at least as defined in Wikipedia) is “a function that is evaluated in an environment containing one or more bound variables.”
A bound variable is, for our purposes, a variable that exists and has a value. The environment in our case is the dynamic module.
239デフォルトの名無しさん
2020/05/15(金) 09:02:37.24ID:B71gCNON240デフォルトの名無しさん
2020/05/15(金) 09:54:10.26ID:JVqn6ak1 昔ながらのPowerShellとPowerShell Coreって共存できんの?
PowerShell CoreってクロスプラットフォームだけどWindowsの管理コマンドとか旧PowerShell資産とかとどれぐらい互換性あるのかな
PowerShell CoreってクロスプラットフォームだけどWindowsの管理コマンドとか旧PowerShell資産とかとどれぐらい互換性あるのかな
241デフォルトの名無しさん
2020/05/15(金) 12:11:51.23ID:spGK6l8f242デフォルトの名無しさん
2020/05/15(金) 21:26:49.08ID:OwQtRj4C Windows PowerShell 5.1 から PowerShell 7 への移行
https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/migrating-from-windows-powershell-51-to-powershell-7
https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/migrating-from-windows-powershell-51-to-powershell-7
243デフォルトの名無しさん
2020/05/16(土) 02:28:51.69ID:LVL/9uGV むしろCore版を上書きしてほしんだが
Powershellで検索すると大量に出てきてうざいし、
Win+Xのショートカットから起動したいし
Powershellで検索すると大量に出てきてうざいし、
Win+Xのショートカットから起動したいし
244デフォルトの名無しさん
2020/05/16(土) 02:29:08.79ID:LVL/9uGV 逆、Core版で、ね
245デフォルトの名無しさん
2020/05/16(土) 21:17:04.74ID:I3dvVBqE >>243
タスクバーにピン留めでは駄目なの?
タスクバーにピン留めでは駄目なの?
246デフォルトの名無しさん
2020/05/19(火) 11:55:42.51ID:1h+Pwucu C#クラスFooをAdd-Typeして
Fooを継承するpowershell class Barを定義しようとするとVSCodeの静的解析に型Fooが無いって言われる
実行時には問題なく動作するんだけど鬱陶しい
どうにかならんのかこれ
Fooを継承するpowershell class Barを定義しようとするとVSCodeの静的解析に型Fooが無いって言われる
実行時には問題なく動作するんだけど鬱陶しい
どうにかならんのかこれ
247デフォルトの名無しさん
2020/05/19(火) 16:52:18.17ID:JYrNQD+Z >>246
現状では継承クラスを別ファイルにして読み込み元で先にadd-typeしてから遅延読み込みするしかない
core系統ではusing assemblyの実装が保留されてるから
将来的にはおそらくそこをクリアしたusing assemblyが実装されると思うけど
>実行時には問題なく動作するんだけど
それはどこかしらで自分で先にadd-typeしてるからだと思う。そうじゃないとエラーで止まる
今の段階で最善と思われる方法はマニフェストモジュールにして
psd1内でRequiredAssembliesに継承元のアセンブリを設定すること
それをusing moduleで読み込むようにすれば最も自然に使える
現状では継承クラスを別ファイルにして読み込み元で先にadd-typeしてから遅延読み込みするしかない
core系統ではusing assemblyの実装が保留されてるから
将来的にはおそらくそこをクリアしたusing assemblyが実装されると思うけど
>実行時には問題なく動作するんだけど
それはどこかしらで自分で先にadd-typeしてるからだと思う。そうじゃないとエラーで止まる
今の段階で最善と思われる方法はマニフェストモジュールにして
psd1内でRequiredAssembliesに継承元のアセンブリを設定すること
それをusing moduleで読み込むようにすれば最も自然に使える
248デフォルトの名無しさん
2020/05/19(火) 20:59:56.70ID:JYrNQD+Z249デフォルトの名無しさん
2020/05/19(火) 21:17:33.27ID:qw+UaCoQ Suppressing Rules
https://github.com/PowerShell/PSScriptAnalyzer#introduction
https://github.com/PowerShell/PSScriptAnalyzer#introduction
250デフォルトの名無しさん
2020/05/19(火) 21:19:20.10ID:qw+UaCoQ251デフォルトの名無しさん
2020/05/25(月) 18:56:03.39ID:1KC3re4i 教えてください。Windows10です。
クリップボードに次の文字をコピーします。
Get-ChildItem -Path "c:\doc★"
これをPowershellに貼り付けると、勝手に★が削除されて
Get-ChildItem -Path "c:\doc"
になってしまいます。正常に貼り付けるには、
どのようにすればよろしいでしょうか?
クリップボードに次の文字をコピーします。
Get-ChildItem -Path "c:\doc★"
これをPowershellに貼り付けると、勝手に★が削除されて
Get-ChildItem -Path "c:\doc"
になってしまいます。正常に貼り付けるには、
どのようにすればよろしいでしょうか?
252デフォルトの名無しさん
2020/05/25(月) 20:12:08.85ID:zwsFaYDZ Powershellコンソールのバグらしいよ
253デフォルトの名無しさん
2020/05/26(火) 00:18:53.47ID:oj/EjNC2 そうですか。バグなのですか。ありがとうございました。
254デフォルトの名無しさん
2020/05/26(火) 08:41:22.73ID:Ay3ltgvo コンソールじゃなくてPSReadLineのバグでしょ
Remove-Module PSReadLine を実行した後なら普通に貼り付けできる
Remove-Module PSReadLine を実行した後なら普通に貼り付けできる
255デフォルトの名無しさん
2020/05/26(火) 08:45:00.47ID:TWTiQG7J256デフォルトの名無しさん
2020/05/26(火) 08:56:54.86ID:lYnWhySi >>254
ホントだ、治った
ホントだ、治った
257デフォルトの名無しさん
2020/05/26(火) 10:38:39.59ID:DUXfe990 なん…だと…
258デフォルトの名無しさん
2020/05/26(火) 11:36:52.76ID:fIo6Jhad スクリプトならok?
259デフォルトの名無しさん
2020/05/26(火) 15:52:47.39ID:q+hnim2U スクリプトならOKだよ
画面を色分けする処理がバグってたはず
画面を色分けする処理がバグってたはず
260デフォルトの名無しさん
2020/05/26(火) 19:42:26.62ID:wDroaLCo echo 'yatta-man★ko-hi-★raita-'
いやー、もう少しで社会的に抹殺されるところだったよ
いやー、もう少しで社会的に抹殺されるところだったよ
261デフォルトの名無しさん
2020/05/27(水) 18:03:22.45ID:8S2S1tlw htmlのdiffでまともな方法ない?
262デフォルトの名無しさん
2020/05/28(木) 16:49:06.82ID:NkjBuM4x Get-ADPrincipalGroupMembership -identity testuser1 | Select-Object name | ・・・
というshellを2つ続けて流すと、ログファイルに記載されたとき、
1つ目のshellの結果と2つ目のshellの結果に3行の空白が生まれます。
なぜでしょうか・・・?
というshellを2つ続けて流すと、ログファイルに記載されたとき、
1つ目のshellの結果と2つ目のshellの結果に3行の空白が生まれます。
なぜでしょうか・・・?
263デフォルトの名無しさん
2020/05/29(金) 08:40:18.33ID:GJdaxgw0 >>262
shell ってどういう意味ですか?
shell ってどういう意味ですか?
264デフォルトの名無しさん
2020/05/29(金) 09:24:43.84ID:AL+gVKfO https://ejje.weblio.jp/content/shell
shellとは
貝殻、(カキの)殻、(カメ・エビ・カニなどの)甲羅、(カブトムシなどの)硬い外皮、(鳥の卵の)殻、(果実・種子などの)殻、(豆類の)さや、(建物・乗り物などの)骨組み、外郭、船体
shellとは
貝殻、(カキの)殻、(カメ・エビ・カニなどの)甲羅、(カブトムシなどの)硬い外皮、(鳥の卵の)殻、(果実・種子などの)殻、(豆類の)さや、(建物・乗り物などの)骨組み、外郭、船体
265デフォルトの名無しさん
2020/05/29(金) 09:26:47.27ID:d1uEOplb266デフォルトの名無しさん
2020/05/29(金) 12:54:04.01ID:1C1s9P85 ログファイルはフィルターして見るから、どうでも良くね?
サーバー運用部門しか見ないし。
一般社員が見ないだろ
数年保存して捨てるだけの、ログファイルの書式にこだわっても、仕方ない
サーバー運用部門しか見ないし。
一般社員が見ないだろ
数年保存して捨てるだけの、ログファイルの書式にこだわっても、仕方ない
267デフォルトの名無しさん
2020/05/29(金) 14:16:17.31ID:8xO19nFy なぜそうなるかを知りたいってことだろ
>>262がどういうスクリプトを流してるのかさっぱり要領を得ないから原因は全くわからんけど
>>262がどういうスクリプトを流してるのかさっぱり要領を得ないから原因は全くわからんけど
268デフォルトの名無しさん
2020/05/29(金) 15:24:58.90ID:GJdaxgw0 >>265
(1)1回目と2回目は、パラメータが違うのですか?それとも、全く同じ内容で実行のタイミングが違うだけですか?
(2)何度も尋ねるのは煩雑なので、可能であれば端折らずに記述内容を全て記載してもらえませんか?
(1)1回目と2回目は、パラメータが違うのですか?それとも、全く同じ内容で実行のタイミングが違うだけですか?
(2)何度も尋ねるのは煩雑なので、可能であれば端折らずに記述内容を全て記載してもらえませんか?
269デフォルトの名無しさん
2020/05/29(金) 15:38:08.24ID:QVnkNeSg まあでも、センスは出るよね
270デフォルトの名無しさん
2020/05/29(金) 15:53:45.83ID:d1uEOplb >>266
正にその通りなんですが、サーバー運用部門としてみる人数が多いので、
可能な限り整った書式で出力したい次第です。
>>267
今までも様々なログを出力してきましたが、
今回のような不思議な現象は初めてで、どうしてなのか解明したいです。
>>268
(1)1回目と2回目はほぼ同じスクリプトです。
(2)端折っていない実行したスクリプトを記載します。
>>269
センス、出ますよね・・・。
端折っていないスクリプトです。
以下二つを、同時に流しました。
Get-ADPrincipalGroupMembership -identity test111 | Select-Object name | Format-Wide -Column 20 | Out-String -Width 1000 >> C:\work\logtest0528.csv
Get-ADPrincipalGroupMembership -identity test222 | Select-Object name | Format-Wide -Column 20 | Out-String -Width 1000 >> C:\work\logtest0528.csv
よろしくお願いします。
正にその通りなんですが、サーバー運用部門としてみる人数が多いので、
可能な限り整った書式で出力したい次第です。
>>267
今までも様々なログを出力してきましたが、
今回のような不思議な現象は初めてで、どうしてなのか解明したいです。
>>268
(1)1回目と2回目はほぼ同じスクリプトです。
(2)端折っていない実行したスクリプトを記載します。
>>269
センス、出ますよね・・・。
端折っていないスクリプトです。
以下二つを、同時に流しました。
Get-ADPrincipalGroupMembership -identity test111 | Select-Object name | Format-Wide -Column 20 | Out-String -Width 1000 >> C:\work\logtest0528.csv
Get-ADPrincipalGroupMembership -identity test222 | Select-Object name | Format-Wide -Column 20 | Out-String -Width 1000 >> C:\work\logtest0528.csv
よろしくお願いします。
271デフォルトの名無しさん
2020/05/29(金) 16:13:12.46ID:1C1s9P85 たぶん、1つ目のアプリが、3行の改行コードを出力してるからだろ
例えば、HTML みたいに、データ内の区切りに、CR・LF の改行コードを使っているものもある。
それらを出力すると、空行ができる
それか、アプリにバグがあって、
正しくデータが取れず、空行だけが出力されているとか
例えば、HTML みたいに、データ内の区切りに、CR・LF の改行コードを使っているものもある。
それらを出力すると、空行ができる
それか、アプリにバグがあって、
正しくデータが取れず、空行だけが出力されているとか
272デフォルトの名無しさん
2020/05/29(金) 16:16:40.36ID:yQdVc2qs273デフォルトの名無しさん
2020/05/29(金) 16:45:48.92ID:d1uEOplb274デフォルトの名無しさん
2020/05/29(金) 16:56:48.51ID:xfksWnzq そもそも Get-ADPrincipalGroupMembership が何個の要素をパイプラインに流してるか見てみたら?
275デフォルトの名無しさん
2020/05/29(金) 17:01:45.38ID:GJdaxgw0276デフォルトの名無しさん
2020/05/29(金) 17:11:08.51ID:GJdaxgw0 >>273
力技だけど、これでどうですかね。うちの環境ではうまく行ってます。
(Get-ADPrincipalGroupMembership -identity testuser111 ).name | %{"$_`t"| Out-File -NoNewline -Encoding ascii -Append -FilePath "C:\a.txt"}
力技だけど、これでどうですかね。うちの環境ではうまく行ってます。
(Get-ADPrincipalGroupMembership -identity testuser111 ).name | %{"$_`t"| Out-File -NoNewline -Encoding ascii -Append -FilePath "C:\a.txt"}
277デフォルトの名無しさん
2020/05/29(金) 17:38:52.98ID:d1uEOplb >>274
その考えは無かったです・・・
調べてみます。
>>275
>>270のコードでtest111,test222としているところ、
実際には3000程の数があります。
実行するスクリプトの結果(ログ)は一つのファイルに追記する形で、
理想の出力は、
1ユーザーの所属するグループが、1セル1グループに横並びになることです。
A B C
1 グループ1 グループ2 グループ3 ←1つ目のスクリプトで流したtest111の所属するグループ
2 グループ1 グループ3 グループ4 ←2つ目のスクリプトで流したtest222の所属するグループ
というイメージです。
>>276
ありがとうございます!
検証してみます。
その考えは無かったです・・・
調べてみます。
>>275
>>270のコードでtest111,test222としているところ、
実際には3000程の数があります。
実行するスクリプトの結果(ログ)は一つのファイルに追記する形で、
理想の出力は、
1ユーザーの所属するグループが、1セル1グループに横並びになることです。
A B C
1 グループ1 グループ2 グループ3 ←1つ目のスクリプトで流したtest111の所属するグループ
2 グループ1 グループ3 グループ4 ←2つ目のスクリプトで流したtest222の所属するグループ
というイメージです。
>>276
ありがとうございます!
検証してみます。
278デフォルトの名無しさん
2020/05/29(金) 18:01:42.95ID:d1uEOplb >>276
-NoNewline でエラーになります・・・
Out-FileのパラメーターとしてNoNewLineというものが無いと表示されます。
276さんはうまくいったとのことなので、
環境が違うのでしょうか・・・?
-NoNewline でエラーになります・・・
Out-FileのパラメーターとしてNoNewLineというものが無いと表示されます。
276さんはうまくいったとのことなので、
環境が違うのでしょうか・・・?
279デフォルトの名無しさん
2020/05/29(金) 18:11:11.49ID:GJdaxgw0 >>278
じゃあ、最初の趣旨とは違ってますけどこれでどうでしょう。
"C:\users.txt"には、対象となるユーザ名を1行に一つという形式で記述してください。
まあ、対象ユーザも Get-ADObject で取得したほうがスマートですけどね。「特定のコンテナ内のユーザ」といった条件なら簡単なのですが。
$users = Get-Content "C:\users.txt"
foreach ($user in $users) {
if($user -eq ''){
break
}
echo $user
$grps = (Get-ADPrincipalGroupMembership -identity $user ).name
$line = ''
foreach ($grp in $grps){
$line += '"{0}",' -f $grp
}
echo $line
Out-File -InputObject $line -Encoding utf8 -Append -FilePath "C:\grp.csv"
}
じゃあ、最初の趣旨とは違ってますけどこれでどうでしょう。
"C:\users.txt"には、対象となるユーザ名を1行に一つという形式で記述してください。
まあ、対象ユーザも Get-ADObject で取得したほうがスマートですけどね。「特定のコンテナ内のユーザ」といった条件なら簡単なのですが。
$users = Get-Content "C:\users.txt"
foreach ($user in $users) {
if($user -eq ''){
break
}
echo $user
$grps = (Get-ADPrincipalGroupMembership -identity $user ).name
$line = ''
foreach ($grp in $grps){
$line += '"{0}",' -f $grp
}
echo $line
Out-File -InputObject $line -Encoding utf8 -Append -FilePath "C:\grp.csv"
}
280デフォルトの名無しさん
2020/05/29(金) 18:22:56.82ID:d1uEOplb >>279
ありがとうございます。
すでに私に理解できる範囲を超えているのですが、、、
データを取得したい対象ユーザーは”特定のコンテナ内”です。
その場合であれば、どこを変更するようになるでしょうか?
すみません。ご教示ください。
ありがとうございます。
すでに私に理解できる範囲を超えているのですが、、、
データを取得したい対象ユーザーは”特定のコンテナ内”です。
その場合であれば、どこを変更するようになるでしょうか?
すみません。ご教示ください。
281デフォルトの名無しさん
2020/05/29(金) 18:44:52.24ID:GJdaxgw0 >>280
じゃあこれが良いと思います。
3行目の「"OU=Newusers,DC=example,DC=local"」となっている箇所を、実際の環境に置き換えてください。
以下は、ドメイン名が「example.local」、最上階層の「Newusers」という OU 内の UserObject を全て取得する場合の例です。
デスクトップ上に 'yyyyMMdd_hhmmss.csv' を出力します。1カラム目はユーザ名で、2カラム目以降がグループ名です。
$Now = Get-Date -Format 'yyyyMMdd_hhmmss'
$logPath = Join-Path -Path ([Environment]::GetFolderPath("Desktop")) -ChildPath ('{0}.csv' -f $Now )
$users = Get-ADUser -Filter * -SearchBase "OU=Newusers,DC=example,DC=local"
foreach ($user in $users) {
if($user -eq ''){
break
}
Write-Host ('{0} : ' -f $user.SamAccountName) -NoNewline
$grps = (Get-ADPrincipalGroupMembership -identity $user).name
$line = '"{0}",' -f $user.SamAccountName
foreach ($grp in $grps){
$line += '"{0}",' -f $grp
}
echo $line
Out-File -InputObject $line -Encoding 'utf8' -Append -FilePath $logPath
}
じゃあこれが良いと思います。
3行目の「"OU=Newusers,DC=example,DC=local"」となっている箇所を、実際の環境に置き換えてください。
以下は、ドメイン名が「example.local」、最上階層の「Newusers」という OU 内の UserObject を全て取得する場合の例です。
デスクトップ上に 'yyyyMMdd_hhmmss.csv' を出力します。1カラム目はユーザ名で、2カラム目以降がグループ名です。
$Now = Get-Date -Format 'yyyyMMdd_hhmmss'
$logPath = Join-Path -Path ([Environment]::GetFolderPath("Desktop")) -ChildPath ('{0}.csv' -f $Now )
$users = Get-ADUser -Filter * -SearchBase "OU=Newusers,DC=example,DC=local"
foreach ($user in $users) {
if($user -eq ''){
break
}
Write-Host ('{0} : ' -f $user.SamAccountName) -NoNewline
$grps = (Get-ADPrincipalGroupMembership -identity $user).name
$line = '"{0}",' -f $user.SamAccountName
foreach ($grp in $grps){
$line += '"{0}",' -f $grp
}
echo $line
Out-File -InputObject $line -Encoding 'utf8' -Append -FilePath $logPath
}
282デフォルトの名無しさん
2020/05/29(金) 18:48:35.39ID:GJdaxgw0 >>280
追伸。まず、
Get-ADUser -Filter * -SearchBase "OU=Newusers,DC=example,DC=local"
だけ実行して希望通りのユーザオブジェクトが出力されることを確認してください。
"OU=Newusers,DC=example,DC=local"の記述方法がキモになりますが、
よくわからない場合は「distinguished name」でググってください。
追伸。まず、
Get-ADUser -Filter * -SearchBase "OU=Newusers,DC=example,DC=local"
だけ実行して希望通りのユーザオブジェクトが出力されることを確認してください。
"OU=Newusers,DC=example,DC=local"の記述方法がキモになりますが、
よくわからない場合は「distinguished name」でググってください。
283デフォルトの名無しさん
2020/05/29(金) 23:38:38.95ID:d1uEOplb284デフォルトの名無しさん
2020/05/30(土) 00:38:50.73ID:AsxV9jzU ふーむcsvde使った方が楽そうだな
285デフォルトの名無しさん
2020/05/30(土) 07:47:46.25ID:Z2NT1d95 PowerShellを使って結果出す事それ自体が目的になってしまう事はよくある
286デフォルトの名無しさん
2020/05/30(土) 08:49:02.75ID:d859mrLa 結果を出すことが目的なのはいいだろw
PowerShellを使うことが目的になると言いたいんだろうけど
PowerShellを使うことが目的になると言いたいんだろうけど
287デフォルトの名無しさん
2020/05/30(土) 10:31:28.21ID:KjUAf8QQ >>284
このスレでそれを言うのは、料理レシピサイトで「ファミレスで食うほうが楽じゃね?」って言うのと同じ
このスレでそれを言うのは、料理レシピサイトで「ファミレスで食うほうが楽じゃね?」って言うのと同じ
288デフォルトの名無しさん
2020/05/30(土) 13:24:05.40ID:9sn/rA++ 余計なソフトのインストールを禁止している会社って
PowerShellでプログラミングするのは認められているの?
PowerShellでプログラミングするのは認められているの?
289デフォルトの名無しさん
2020/05/30(土) 16:10:14.39ID:KjUAf8QQ >>288
会社によるだろう、としか
会社によるだろう、としか
290デフォルトの名無しさん
2020/05/30(土) 23:54:06.76ID:iu9cBMrA 合法とも禁止とも明示してる企業は見たことないな
はっきり禁止されてないなら使ってOKって解釈で今まで問題になったことはない
はっきり禁止されてないなら使ってOKって解釈で今まで問題になったことはない
291デフォルトの名無しさん
2020/05/31(日) 00:40:12.13ID:+AbQWtDJ ちなみにレジストリをいじるのは認められているの?
292デフォルトの名無しさん
2020/05/31(日) 01:57:51.20ID:81hmFEht うちは、総務部の担当者に許可を求めることになっているが、
その担当者がよく解らない人のようで、ダメと言われたことはないな。
その担当者がよく解らない人のようで、ダメと言われたことはないな。
293デフォルトの名無しさん
2020/05/31(日) 12:20:40.53ID:b/Zu62PW 管理者権限アカウントの申請は必要てのはあるよね
294デフォルトの名無しさん
2020/05/31(日) 17:04:24.67ID:rtfQfZlf 部のPC担当じゃなければせいぜいパワーユーザーだと思うけど
295デフォルトの名無しさん
2020/05/31(日) 23:56:26.74ID:iB7Renkw >>281
報告が遅くなりました・・・。
検証環境で実行した結果、
A列にログオンID、B列に所属するグループ1、が表示されました。
ここまではかなりいい感じだったのですが、
所属するグループの2つ目以降が出力できませんでした・・・。
2つ目以降を出力できるよう考えてみましたが、
取ってつけた知識では太刀打ちできませんでした。
すみません。2つ目以降を出す方法を教えていただけますでしょうか。
csvdeも考えたのですが、
先に形になったのがGet-ADPrincipalGroupMembershipだったので、
そちらを主軸に考えていました。
理想形が出力されればcsvdeでも全く問題ありません!
レジストリはいじれますが、あくまでもシステム管理部であるから、
という感じですね。
あー、PowerShellを使うこと、が目的になってしまってる感はありました。
理想の出力結果が出れば、フリーのツールでもOKなんですが、、、
報告が遅くなりました・・・。
検証環境で実行した結果、
A列にログオンID、B列に所属するグループ1、が表示されました。
ここまではかなりいい感じだったのですが、
所属するグループの2つ目以降が出力できませんでした・・・。
2つ目以降を出力できるよう考えてみましたが、
取ってつけた知識では太刀打ちできませんでした。
すみません。2つ目以降を出す方法を教えていただけますでしょうか。
csvdeも考えたのですが、
先に形になったのがGet-ADPrincipalGroupMembershipだったので、
そちらを主軸に考えていました。
理想形が出力されればcsvdeでも全く問題ありません!
レジストリはいじれますが、あくまでもシステム管理部であるから、
という感じですね。
あー、PowerShellを使うこと、が目的になってしまってる感はありました。
理想の出力結果が出れば、フリーのツールでもOKなんですが、、、
296デフォルトの名無しさん
2020/06/01(月) 00:21:41.64ID:vdF2NbM2 余分な空白さえ消えればいいなら
Out-String -Stream | ?{$_ -ne ""} | %{$_.trim()}
Out-String -Stream | ?{$_ -ne ""} | %{$_.trim()}
297281
2020/06/01(月) 08:58:32.48ID:Pn8bHbMj >>295
説明がしにくいので、pastebin に貼りました。
https://pastebin.com/g40VkBXe
こちらで試している限り、所属グループが複数でも正しく出力されています。
現象的に、12行目の
$line += '"{0}",' -f $grp
が、「+」が抜けて
$line = '"{0}",' -f $grp
になっているように思えます。
確認1:
コードはコピペされてますか?それとも、画面を見ながら手打ちで転記でしょうか。
もし後者の場合はコピペで試してみてください。
また、仮にコピペだったとしても、5ちゃんからではなく上記 URL の pastebin からコピペしなおしてみてもらえますか。
確認2:
ファイルに書き出すものと同じ内容を画面にも出力するようにしています。
グループ名が一つだけ、というのは画面上でもでしょうか?
説明がしにくいので、pastebin に貼りました。
https://pastebin.com/g40VkBXe
こちらで試している限り、所属グループが複数でも正しく出力されています。
現象的に、12行目の
$line += '"{0}",' -f $grp
が、「+」が抜けて
$line = '"{0}",' -f $grp
になっているように思えます。
確認1:
コードはコピペされてますか?それとも、画面を見ながら手打ちで転記でしょうか。
もし後者の場合はコピペで試してみてください。
また、仮にコピペだったとしても、5ちゃんからではなく上記 URL の pastebin からコピペしなおしてみてもらえますか。
確認2:
ファイルに書き出すものと同じ内容を画面にも出力するようにしています。
グループ名が一つだけ、というのは画面上でもでしょうか?
298デフォルトの名無しさん
2020/06/01(月) 20:38:24.16ID:6WpvIjeC >>296
ありがとうございます。
>>270に記載のスクリプトを編集して、
Get-ADPrincipalGroupMembership -identity test111 | Select-Object name | Format-Wide -Column 20 | Out-String -Stream | ?{$_ -ne ""} | %{$_.trim()} >> C:\work\logtest0528.csv
という感じになるでしょうか?
>>297
ありがとうございます。
確認1:5ちゃんをコピペしてました。
明日検証環境を使えるので、URLのpastebinからやってみます。
確認2: グループ名が一つだけ、というのは画面上でもそうなってます。
(実際には所属するグループが3つあるユーザーを作りテストしています)
「+」は確かに抜けているところがありますね・・・。
修正して、もう一度検証してみます。
ありがとうございます!
ありがとうございます。
>>270に記載のスクリプトを編集して、
Get-ADPrincipalGroupMembership -identity test111 | Select-Object name | Format-Wide -Column 20 | Out-String -Stream | ?{$_ -ne ""} | %{$_.trim()} >> C:\work\logtest0528.csv
という感じになるでしょうか?
>>297
ありがとうございます。
確認1:5ちゃんをコピペしてました。
明日検証環境を使えるので、URLのpastebinからやってみます。
確認2: グループ名が一つだけ、というのは画面上でもそうなってます。
(実際には所属するグループが3つあるユーザーを作りテストしています)
「+」は確かに抜けているところがありますね・・・。
修正して、もう一度検証してみます。
ありがとうございます!
299デフォルトの名無しさん
2020/06/01(月) 23:33:53.68ID:5NIHbXOS 「慶應卒の学歴なんていらない」10代起業で成功する子の共通点
https://www.excite.co.jp/news/article/President_35457/
起業で成功するキャリア形成の仕方とは? 元プロサッカー選手で起業家の鈴木啓祐氏に聞いた
https://sogyotecho.jp/career-development/
【アプリ開発で起業】必要な心得とマネタイズ方法のすべて
https://www.dreamgate.gr.jp/contents/column/application-development
学生起業家が開発、「人を軸に本を探すアプリ」とは?読書通じて「考える力」養って
https://newswitch.jp/p/20168
島田商高生がアプリ考案、発表 ICT起業家育成プログラム
https://www.at-s.com/news/article/local/central/730010.html
医師コンビが「治療用アプリ」で起業、禁煙に続き高血圧治療アプリを開発
https://diamond.jp/articles/-/229375
好きが高じて“カレー起業”、キャッシュレス決済アプリ「TOKYO MIX CURRY」の挑戦
https://diamond.jp/articles/-/215868
https://www.excite.co.jp/news/article/President_35457/
起業で成功するキャリア形成の仕方とは? 元プロサッカー選手で起業家の鈴木啓祐氏に聞いた
https://sogyotecho.jp/career-development/
【アプリ開発で起業】必要な心得とマネタイズ方法のすべて
https://www.dreamgate.gr.jp/contents/column/application-development
学生起業家が開発、「人を軸に本を探すアプリ」とは?読書通じて「考える力」養って
https://newswitch.jp/p/20168
島田商高生がアプリ考案、発表 ICT起業家育成プログラム
https://www.at-s.com/news/article/local/central/730010.html
医師コンビが「治療用アプリ」で起業、禁煙に続き高血圧治療アプリを開発
https://diamond.jp/articles/-/229375
好きが高じて“カレー起業”、キャッシュレス決済アプリ「TOKYO MIX CURRY」の挑戦
https://diamond.jp/articles/-/215868
300デフォルトの名無しさん
2020/06/02(火) 12:00:25.43ID:TaVu0Z+0 >>297
pastebinに記載いただいたスクリプトをマルっとコピペで、
理想形として出力することができました!!
本当にありがとうございました!!
一文で作成しようと考えていましたが、
こんなに長いスクリプトが必要とは思いませんでした・・・。
pastebinに記載いただいたスクリプトをマルっとコピペで、
理想形として出力することができました!!
本当にありがとうございました!!
一文で作成しようと考えていましたが、
こんなに長いスクリプトが必要とは思いませんでした・・・。
301297
2020/06/02(火) 13:51:33.65ID:4gU+uBDd >>300
うまく動いたようで良かったです。
あのスクリプトですが、1行ごとに見ていけば実行してることは単純です。
また、記述する際も省略表記はなるべく避けるようにしましたので、
ググって意味を調べるのも容易かと思います。
Windows 系インフラの構築/運用では PowerShell を活かせる場面が
多くありますので、この機会に覚えておくと強力なスキルになると思います。
うまく動いたようで良かったです。
あのスクリプトですが、1行ごとに見ていけば実行してることは単純です。
また、記述する際も省略表記はなるべく避けるようにしましたので、
ググって意味を調べるのも容易かと思います。
Windows 系インフラの構築/運用では PowerShell を活かせる場面が
多くありますので、この機会に覚えておくと強力なスキルになると思います。
302デフォルトの名無しさん
2020/06/02(火) 16:16:22.57ID:e5f6kXC+ csvdeは全部エクスポートしておけば適当なスクリプトでどこでも試せるけど
PSはいちいちAD鯖に繋ぎに行く形だからテストが大変なんよね
PSはいちいちAD鯖に繋ぎに行く形だからテストが大変なんよね
303デフォルトの名無しさん
2020/06/02(火) 18:35:36.73ID:TaVu0Z+0304300
2020/06/03(水) 17:19:22.25ID:OSlS0ZCr すみません。頑張り切れませんでした。
>>297 の出力結果に加え、
そのアカウントの有効/無効の情報を同時に取得したいと思い、
Enabledを加えてみましたが、うまく出力できませんでした。
Enabledは、Write-Hostの前に入れればよいと思いましたが、合っていますか?
>>297 の出力結果に加え、
そのアカウントの有効/無効の情報を同時に取得したいと思い、
Enabledを加えてみましたが、うまく出力できませんでした。
Enabledは、Write-Hostの前に入れればよいと思いましたが、合っていますか?
305300
2020/06/03(水) 18:10:05.65ID:OSlS0ZCr Write-Hostの前じゃなかったです。
後ろでした。
これで
$Now = Get-Date -Format 'yyyyMMdd_hhmmss'
$logPath = Join-Path -Path ([Environment]::GetFolderPath("Desktop")) -ChildPath ('{0}.csv' -f $Now )
$users = Get-ADUser -Filter * -SearchBase " OU=ユーザー,DC=test,DC=local "
foreach ($user in $users) {
if($user -eq ''){
break
}
Write-Host ('{0} : ' -f $user.SamAccountName) -NoNewline
Write-Host ('{0} : ' -f $user.Enabled) -NoNewline ←★★ココ
$grps = (Get-ADPrincipalGroupMembership -identity $user).name
$line = '"{0}",' -f $user.SamAccountName
foreach ($grp in $grps){
$line += '"{0}",' -f $grp
}
echo $line
Out-File -InputObject $line -Encoding 'utf8' -Append -FilePath $logPath
}
これで画面には出るようになりました。
出力するファイルにも出るようにするには、、、
後ろでした。
これで
$Now = Get-Date -Format 'yyyyMMdd_hhmmss'
$logPath = Join-Path -Path ([Environment]::GetFolderPath("Desktop")) -ChildPath ('{0}.csv' -f $Now )
$users = Get-ADUser -Filter * -SearchBase " OU=ユーザー,DC=test,DC=local "
foreach ($user in $users) {
if($user -eq ''){
break
}
Write-Host ('{0} : ' -f $user.SamAccountName) -NoNewline
Write-Host ('{0} : ' -f $user.Enabled) -NoNewline ←★★ココ
$grps = (Get-ADPrincipalGroupMembership -identity $user).name
$line = '"{0}",' -f $user.SamAccountName
foreach ($grp in $grps){
$line += '"{0}",' -f $grp
}
echo $line
Out-File -InputObject $line -Encoding 'utf8' -Append -FilePath $logPath
}
これで画面には出るようになりました。
出力するファイルにも出るようにするには、、、
306297
2020/06/04(木) 11:06:18.52ID:TeZKrupD >>305
$line = '"{0}",' -f $user.SamAccountName
の下に、
$line += '"{0}",' -f $user.Enabled
を追加してみてください。
あと、
if($user -eq ''){
break
}
は、対象のユーザ名をファイルから読み取っていたバージョン (>>279) の名残ですので、バッサリ削除しても良いですね。
まとめるとこうです。
https://pastebin.com/8iFFBCA5
念のため解説しておくと、$line は、最終的にファイルに書き込むことになる文字列を格納しています。
で、代入時に「=」ではなく「+=」を使ってますので、代入の都度「置き換え」ではなく「追記」になります(文字列の場合。数値の場合は加算)。
つまり、
$line += '"{0}",' -f $user.Enabled
を冗長な書き方に直すと、
$line = $line + ('"{0}",' -f $user.Enabled)
ということになります。
文字列の「-f」については以下を参照してください。
https://www.google.com/search?q=powershell+string+%27-f%27
オブジェクトのプロパティを指定したものを文字列に直接記述できないのでこうしています。
(こうは書けない $line += '"$user.Enabled",')
$line = '"{0}",' -f $user.SamAccountName
の下に、
$line += '"{0}",' -f $user.Enabled
を追加してみてください。
あと、
if($user -eq ''){
break
}
は、対象のユーザ名をファイルから読み取っていたバージョン (>>279) の名残ですので、バッサリ削除しても良いですね。
まとめるとこうです。
https://pastebin.com/8iFFBCA5
念のため解説しておくと、$line は、最終的にファイルに書き込むことになる文字列を格納しています。
で、代入時に「=」ではなく「+=」を使ってますので、代入の都度「置き換え」ではなく「追記」になります(文字列の場合。数値の場合は加算)。
つまり、
$line += '"{0}",' -f $user.Enabled
を冗長な書き方に直すと、
$line = $line + ('"{0}",' -f $user.Enabled)
ということになります。
文字列の「-f」については以下を参照してください。
https://www.google.com/search?q=powershell+string+%27-f%27
オブジェクトのプロパティを指定したものを文字列に直接記述できないのでこうしています。
(こうは書けない $line += '"$user.Enabled",')
307300
2020/06/04(木) 21:01:19.40ID:7LqTXEt1 >>306
解説までいただきましてありがとうございます!
ご提案のスクリプトで無事、第1段階のデータを出力することができました。
次の作業がまた待っていますが、教えていただいたことを参考に
作ってみます。
本当にありがとうございます。
解説までいただきましてありがとうございます!
ご提案のスクリプトで無事、第1段階のデータを出力することができました。
次の作業がまた待っていますが、教えていただいたことを参考に
作ってみます。
本当にありがとうございます。
308デフォルトの名無しさん
2020/06/04(木) 22:31:22.80ID:sBE+PUel powershell学習したいのですが、どのようなことからやっていけばいいでしょうか?
とりあえず、バッチファイルを書き換えようかなぁとか思ったりしていますが
いかがでしょうか?
とりあえず、バッチファイルを書き換えようかなぁとか思ったりしていますが
いかがでしょうか?
309デフォルトの名無しさん
2020/06/04(木) 22:43:28.06ID:7Yb6fwZR 自分で書いたバッチファイルを置き換えるのは効果的な学習だと思う
ただ対応するコマンドを置き換えていくだけだと
オブジェクトをパイプでつないでいくPowerShellっぽい部分を身につけるのが難しいから
Cookbook的な本で先人のコードを写経しつつ改変していくのがいいんじゃないかな
ただ対応するコマンドを置き換えていくだけだと
オブジェクトをパイプでつないでいくPowerShellっぽい部分を身につけるのが難しいから
Cookbook的な本で先人のコードを写経しつつ改変していくのがいいんじゃないかな
310デフォルトの名無しさん
2020/06/04(木) 23:21:46.10ID:hC0MsN2x Ruby の方がよい。
Ruby 内で、powershell, clip コマンドなども呼べる
# クリップボード内の複数行文字列の、各行の先頭・末尾から、
# 連続する空白類を除去して、クリップボードに入れる
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
ary = str.each_line.map( &:strip ) # 連続する空白類を除去する
IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
Ruby 内で、powershell, clip コマンドなども呼べる
# クリップボード内の複数行文字列の、各行の先頭・末尾から、
# 連続する空白類を除去して、クリップボードに入れる
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
ary = str.each_line.map( &:strip ) # 連続する空白類を除去する
IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
311デフォルトの名無しさん
2020/06/05(金) 01:16:33.38ID:amrr7gLk ttps://heetnote.com/semi-auto-ps/#more-2973
ここで公開されているスクリプトを自分なりに書き換えて使っているのですが、
FakeAacWavをfre:ac1.11に置き換えるとWrite-Hostで表示される日本語が全て文字化けするようになってしまいました。
以前はfre:ac0.9を使っていたのですが、その時は文字化けしませんでした。
処理開始時点では日本語は正常に表示されるのですが、fre:acの処理が始まると同時に、正常に表示されていたものも含めて
全ての日本語が「□□□」に置き換わるようになります。
多分ですが文字コードの問題ではないようです。ソフト側の問題であってどうしようもないものでしょうか?
ここで公開されているスクリプトを自分なりに書き換えて使っているのですが、
FakeAacWavをfre:ac1.11に置き換えるとWrite-Hostで表示される日本語が全て文字化けするようになってしまいました。
以前はfre:ac0.9を使っていたのですが、その時は文字化けしませんでした。
処理開始時点では日本語は正常に表示されるのですが、fre:acの処理が始まると同時に、正常に表示されていたものも含めて
全ての日本語が「□□□」に置き換わるようになります。
多分ですが文字コードの問題ではないようです。ソフト側の問題であってどうしようもないものでしょうか?
312デフォルトの名無しさん
2020/06/05(金) 06:07:06.84ID:Trob9zBU コマンドラインに その@ を張り付けると その だけになるの困る
なぜか @ 単独で張り付けると @ が入るのが謎
@あ@あ だと @ああ だったりもう……
なぜか @ 単独で張り付けると @ が入るのが謎
@あ@あ だと @ああ だったりもう……
313デフォルトの名無しさん
2020/06/05(金) 08:46:16.13ID:S6jGROW/ >>311
外部コマンド(*.exe)の出力が起因する問題なのであれば、
「& 〜〜」で同一のコンソール内で実行するのではなく、
「Start-Process 〜〜〜」で実行してみてはどうでしょう。
Start-Process の場合は新しいコマンドプロンプトのウィンドウが開いて、
そこで実行されます。
外部コマンド(*.exe)の出力が起因する問題なのであれば、
「& 〜〜」で同一のコンソール内で実行するのではなく、
「Start-Process 〜〜〜」で実行してみてはどうでしょう。
Start-Process の場合は新しいコマンドプロンプトのウィンドウが開いて、
そこで実行されます。
314デフォルトの名無しさん
2020/06/05(金) 15:49:55.88ID:amrr7gLk >>313
ありがとうございます。試行錯誤しているのですがStart-Processでfre:acが起動しません…
Start-Process -FilePath (fre:acのパス。""で囲む) -ArgumentList (fre:acの引数。""で囲む)
…で書式は合ってますよね?
ありがとうございます。試行錯誤しているのですがStart-Processでfre:acが起動しません…
Start-Process -FilePath (fre:acのパス。""で囲む) -ArgumentList (fre:acの引数。""で囲む)
…で書式は合ってますよね?
315デフォルトの名無しさん
2020/06/05(金) 16:56:17.03ID:S6jGROW/ >>314
CLI の外部コマンドは ※ 上で実行しますので、Start-Process で起動するのは
あくまでも ※ です。ですので、引数として CLI の外部コマンドを指定するといいと思います。
こんなかんじですかね。
https://pastebin.com/NFDDXARP
※ コード内の文字列が5ちゃんの NG ワードになっていて書き込めないので、Pastebin にしました
CLI の外部コマンドは ※ 上で実行しますので、Start-Process で起動するのは
あくまでも ※ です。ですので、引数として CLI の外部コマンドを指定するといいと思います。
こんなかんじですかね。
https://pastebin.com/NFDDXARP
※ コード内の文字列が5ちゃんの NG ワードになっていて書き込めないので、Pastebin にしました
316デフォルトの名無しさん
2020/06/05(金) 17:15:12.53ID:O//h2yE5 初心者です。
あるlogフアイルの1行目を新しいlogファイルに書き出し、
続けて同じlogファイルから特定の文字列で検索した結果を上書きしたいのですが、
具体的には
Get-Content C:\test\stdout.log -totalcount 1 > C:\test\stdout_bk.log
Select-String -Path C:\test\stdout.log -Pattern 2020/0 -Encoding default >> C:\test\stdout_bk.log
こう書いてしまうとstdout_bk.log ファイルの2行目が改行してしまいます。
(3行目からSelect-String の結果がかき出される)
stdout_bk.log ファイルの2行目からSelect-String の結果をかき出したいのですが
どうすればいいでしょうか。また処理全体を2行に分けるのではなく
できたら1行にまとめたいのですが、可能でしょうか。
あるlogフアイルの1行目を新しいlogファイルに書き出し、
続けて同じlogファイルから特定の文字列で検索した結果を上書きしたいのですが、
具体的には
Get-Content C:\test\stdout.log -totalcount 1 > C:\test\stdout_bk.log
Select-String -Path C:\test\stdout.log -Pattern 2020/0 -Encoding default >> C:\test\stdout_bk.log
こう書いてしまうとstdout_bk.log ファイルの2行目が改行してしまいます。
(3行目からSelect-String の結果がかき出される)
stdout_bk.log ファイルの2行目からSelect-String の結果をかき出したいのですが
どうすればいいでしょうか。また処理全体を2行に分けるのではなく
できたら1行にまとめたいのですが、可能でしょうか。
317デフォルトの名無しさん
2020/06/05(金) 17:50:49.18ID:Trob9zBU >>316
これであってる?
Get-Content C:\test\stdout.log | & { Begin { $header = $true } Process { if ($header) { $_; $header = $false } elseif ($_ -match '2020/0') { $_ } } > C:\test\stdout_bk.log
これであってる?
Get-Content C:\test\stdout.log | & { Begin { $header = $true } Process { if ($header) { $_; $header = $false } elseif ($_ -match '2020/0') { $_ } } > C:\test\stdout_bk.log
318デフォルトの名無しさん
2020/06/05(金) 17:53:48.63ID:amrr7gLk >>315
丁寧な解説ありがとうございます。しかしうまくいかない…。
ひょっとして外部コマンドになるので引数にPowerShellの変数を使用できないですか? こんな感じですが↓
Start-Process "一部省略" -ArgumentList ("/c","freacのパス","-e sndfile-wave -d $OutputDir $AacItem.FullName")
丁寧な解説ありがとうございます。しかしうまくいかない…。
ひょっとして外部コマンドになるので引数にPowerShellの変数を使用できないですか? こんな感じですが↓
Start-Process "一部省略" -ArgumentList ("/c","freacのパス","-e sndfile-wave -d $OutputDir $AacItem.FullName")
319デフォルトの名無しさん
2020/06/05(金) 18:06:39.45ID:S6jGROW/ >>318
$AacItem.FullName を「"」で囲っても、$AacItem のプロパティ FullName は取り出せないです。
いろんなやり方があると思いますけど、私は「-f」を使うやり方が好みです。
Start-Process "一部省略" -ArgumentList ("/c","freacのパス",("-e sndfile-wave -d $OutputDir {0}" -f $AacItem.FullName))
でもこっちのほうが良さそうですね。
Start-Process "一部省略" -ArgumentList ("/c","freacのパス","-e","sndfile-wave","-d",$OutputDir,$AacItem.FullName)
$AacItem.FullName を「"」で囲っても、$AacItem のプロパティ FullName は取り出せないです。
いろんなやり方があると思いますけど、私は「-f」を使うやり方が好みです。
Start-Process "一部省略" -ArgumentList ("/c","freacのパス",("-e sndfile-wave -d $OutputDir {0}" -f $AacItem.FullName))
でもこっちのほうが良さそうですね。
Start-Process "一部省略" -ArgumentList ("/c","freacのパス","-e","sndfile-wave","-d",$OutputDir,$AacItem.FullName)
320デフォルトの名無しさん
2020/06/05(金) 18:11:37.96ID:S6jGROW/ >>318
$OutputDir や $AacItem.FullName にスペースが含まれてると失敗するかもしれませんので、その場合はこうでしょうか。
Start-Process "一部省略" -ArgumentList ("/c freacのパス -e sndfile-wave -d '{0}' '{1}'" -f $OutputDir,$AacItem.FullName)
$OutputDir や $AacItem.FullName にスペースが含まれてると失敗するかもしれませんので、その場合はこうでしょうか。
Start-Process "一部省略" -ArgumentList ("/c freacのパス -e sndfile-wave -d '{0}' '{1}'" -f $OutputDir,$AacItem.FullName)
321デフォルトの名無しさん
2020/06/05(金) 18:22:39.72ID:O//h2yE5322デフォルトの名無しさん
2020/06/05(金) 18:52:19.70ID:O//h2yE5323デフォルトの名無しさん
2020/06/05(金) 19:56:13.96ID:amrr7gLk >>319
3つとも試してみましたが、どれも正常に動きませんでした…。
一番上は何も処理せずpowershellが終了してしまい、2番めと3番めは黒いウインドウが一瞬表示されるものの
freacは何も処理せず次に進んでしまいました。
{0}と-fは
ttps://yanor.net/wiki/?PowerShell/%E6%96%87%E6%B3%95/%E6%96%87%E5%AD%97%E5%88%97%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E6%BC%94%E7%AE%97%E5%AD%90
ここの一番上で解説されているものでしょうか。
3つとも試してみましたが、どれも正常に動きませんでした…。
一番上は何も処理せずpowershellが終了してしまい、2番めと3番めは黒いウインドウが一瞬表示されるものの
freacは何も処理せず次に進んでしまいました。
{0}と-fは
ttps://yanor.net/wiki/?PowerShell/%E6%96%87%E6%B3%95/%E6%96%87%E5%AD%97%E5%88%97%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E6%BC%94%E7%AE%97%E5%AD%90
ここの一番上で解説されているものでしょうか。
324デフォルトの名無しさん
2020/06/05(金) 20:50:39.26ID:Trob9zBU325デフォルトの名無しさん
2020/06/05(金) 21:15:18.94ID:Trob9zBU 例をつけ忘れました。こんな感じ。
Start-Process 'pwsh' -ArgumentList @('-nop -c "1 .. 3 | % { $_; Start-Sleep 1 }"')
Start-Process 'pwsh' -ArgumentList @('-nop -c "1 .. 3 | % { $_; Start-Sleep 1 }"')
326デフォルトの名無しさん
2020/06/05(金) 21:44:06.19ID:amrr7gLk Start-Process "freacのパス" -ArgumentList @('-e sndfile-wave -d $OutputDir $AacItem.FullName')
単純にこれではダメでした。
単純にこれではダメでした。
327デフォルトの名無しさん
2020/06/05(金) 22:10:21.57ID:Trob9zBU そりゃもちろんこうしないと
$args = '-e sndfile-wave -d {0} {1}' -f $OutputDir, $AacItem.FullName
Start-Process "freacのパス" -ArgumentList @($args)
$args = '-e sndfile-wave -d {0} {1}' -f $OutputDir, $AacItem.FullName
Start-Process "freacのパス" -ArgumentList @($args)
328デフォルトの名無しさん
2020/06/05(金) 22:12:15.54ID:Trob9zBU ってこれ >>320 に空白考慮版があるね
329デフォルトの名無しさん
2020/06/05(金) 22:17:17.85ID:Trob9zBU と思ったけど >>320 は必要ないcmd(?)経由に失敗してる?
330デフォルトの名無しさん
2020/06/05(金) 23:21:02.62ID:C2qeZTUp331デフォルトの名無しさん
2020/06/05(金) 23:41:51.74ID:e4Todh9J332デフォルトの名無しさん
2020/06/05(金) 23:44:42.07ID:C2qeZTUp ありがとうございます。
理解できてない。無知をさらけ出してしまいました。
理解できてない。無知をさらけ出してしまいました。
333デフォルトの名無しさん
2020/06/06(土) 00:12:58.72ID:7YMZq5d4 >>312
@、つまり丸囲みの1 は、CP932 だけの環境依存文字だろ。
UTF-8 で使えるのかどうか、不明
ひょっとして、ファイル名に、半角英数字以外を使っているのか?
ファイル名・ユーザー名みたいなシステムに、半角英数字以外を使ったら、ダメ!
@、つまり丸囲みの1 は、CP932 だけの環境依存文字だろ。
UTF-8 で使えるのかどうか、不明
ひょっとして、ファイル名に、半角英数字以外を使っているのか?
ファイル名・ユーザー名みたいなシステムに、半角英数字以外を使ったら、ダメ!
334326
2020/06/06(土) 00:36:27.86ID:YeDbVwYY >>372
すみません、それも結果は同じでした。
ここまで色々出していただいた記述例を全て試しても結果は同じで、cmdのウインドウは一瞬出るがfreacは何もせず終了という状態です。
プログラムに触るのが初めてというレベルの初心者で、ここで教えてもらったことを丸写しするくらいしかできないですか、
このままこの話題続けても大丈夫ですか? 大分長いこと占領していて申し訳ないのですが。
すみません、それも結果は同じでした。
ここまで色々出していただいた記述例を全て試しても結果は同じで、cmdのウインドウは一瞬出るがfreacは何もせず終了という状態です。
プログラムに触るのが初めてというレベルの初心者で、ここで教えてもらったことを丸写しするくらいしかできないですか、
このままこの話題続けても大丈夫ですか? 大分長いこと占領していて申し訳ないのですが。
335デフォルトの名無しさん
2020/06/06(土) 01:43:36.18ID:7YMZq5d4 Powershell で文字コードを変更する(clip.exe へのリダイレクトもね)
https://www.vwnet.jp/Windows/PowerShell/CharCode.htm
「powershell 文字コード 変換」で検索!
本当は、込み入った処理は、Ruby でやって、
Powershell・コマンドプロンプトは、 起動部分だけの単純なものにすべき!
こういうシェルで、ややこしいプログラミングは無理
https://www.vwnet.jp/Windows/PowerShell/CharCode.htm
「powershell 文字コード 変換」で検索!
本当は、込み入った処理は、Ruby でやって、
Powershell・コマンドプロンプトは、 起動部分だけの単純なものにすべき!
こういうシェルで、ややこしいプログラミングは無理
336デフォルトの名無しさん
2020/06/06(土) 07:05:00.74ID:+ifRGkAL337デフォルトの名無しさん
2020/06/06(土) 07:07:30.54ID:3KBpE/OI >>334
ようするに
$OutputDir = どこそこ
foreach ($InputItem in $Args) {
というループの中に
$AacItemList = Get-ChildItem 以下略
foreach ($AacItem in $AacItemList) {
というループがあって
& $fawclPath $AacItem.FullName
を書き換えて >>318 のようにしたいって理解であってますか?
なら $args を書き換えて使っちゃだめですし、
Start-Process も -Wait を付けた方が良さそうなんで
Start-Process 'freacのパス' -ArgumentList @('-e sndfile-wave -d "{0}" "{1}"' -f $OutputDir, $AacItem.FullName) -Wait
じゃないかな
ようするに
$OutputDir = どこそこ
foreach ($InputItem in $Args) {
というループの中に
$AacItemList = Get-ChildItem 以下略
foreach ($AacItem in $AacItemList) {
というループがあって
& $fawclPath $AacItem.FullName
を書き換えて >>318 のようにしたいって理解であってますか?
なら $args を書き換えて使っちゃだめですし、
Start-Process も -Wait を付けた方が良さそうなんで
Start-Process 'freacのパス' -ArgumentList @('-e sndfile-wave -d "{0}" "{1}"' -f $OutputDir, $AacItem.FullName) -Wait
じゃないかな
338デフォルトの名無しさん
2020/06/06(土) 07:08:59.48ID:3KBpE/OI339デフォルトの名無しさん
2020/06/06(土) 09:15:40.96ID:hmicP46W PowerShellで多重ループが許されるのは小学生までだよね
340319
2020/06/06(土) 09:23:51.93ID:2MzuylRm >>323
こちらでも freac を入手して試したところ、>>319 のとおりで動作してます。
私は以下のようにして実行してみました。freac は ZIP で配布されていたものです。
※5ちゃんのNGワードに引っかかりまくって全く書き込みが出来ないため、コードは全て以下の Pastebin に記載しています
https://pastebin.com/M5hD1HXj
# パラメータ
# 例1
実際に試したところ、freac は ※ 経由でなくても動作しますね。
# 例2
【切り分け】
Start-Process で外部の CLI コマンドを実行した場合、終了後にウィンドウが
閉じられるので切り分けが難しくなります。
そこで、「-NoNewWindow」オプションを付けて実行してみてください。
freac (又は※) が出力するエラーが、PowerShell のコンソールに表示されるはずです。
# 例3
# 例4
【-f について】
{0} と -f に関してはご指摘のとおりです。
こちらでも freac を入手して試したところ、>>319 のとおりで動作してます。
私は以下のようにして実行してみました。freac は ZIP で配布されていたものです。
※5ちゃんのNGワードに引っかかりまくって全く書き込みが出来ないため、コードは全て以下の Pastebin に記載しています
https://pastebin.com/M5hD1HXj
# パラメータ
# 例1
実際に試したところ、freac は ※ 経由でなくても動作しますね。
# 例2
【切り分け】
Start-Process で外部の CLI コマンドを実行した場合、終了後にウィンドウが
閉じられるので切り分けが難しくなります。
そこで、「-NoNewWindow」オプションを付けて実行してみてください。
freac (又は※) が出力するエラーが、PowerShell のコンソールに表示されるはずです。
# 例3
# 例4
【-f について】
{0} と -f に関してはご指摘のとおりです。
341デフォルトの名無しさん
2020/06/06(土) 10:08:38.99ID:B/uunGh7 >>333
横レスだが、
> @、つまり丸囲みの1 は、CP932 だけの環境依存文字だろ。
> UTF-8 で使えるのかどうか、不明
UTF-8というか、Unicodeには、一般的に使われている全ての
文字コードの全ての文字が含まれている。だから、Unicodeと呼ばれる。
> ひょっとして、ファイル名に、半角英数字以外を使っているのか?
> ファイル名・ユーザー名みたいなシステムに、半角英数字以外を使ったら、ダメ!
それはNEETの発想だ。職場の共有ファイル、取引先とやりとりする
ファイル等、一般社会では、ガチガチにファイル名のルールが規定
されていて自分勝手に決められない場合が多いのだよ。
横レスだが、
> @、つまり丸囲みの1 は、CP932 だけの環境依存文字だろ。
> UTF-8 で使えるのかどうか、不明
UTF-8というか、Unicodeには、一般的に使われている全ての
文字コードの全ての文字が含まれている。だから、Unicodeと呼ばれる。
> ひょっとして、ファイル名に、半角英数字以外を使っているのか?
> ファイル名・ユーザー名みたいなシステムに、半角英数字以外を使ったら、ダメ!
それはNEETの発想だ。職場の共有ファイル、取引先とやりとりする
ファイル等、一般社会では、ガチガチにファイル名のルールが規定
されていて自分勝手に決められない場合が多いのだよ。
342デフォルトの名無しさん
2020/06/06(土) 10:17:39.94ID:3KBpE/OI >>340
端末設定を変えられて文字化けするから Start-Process させるんでしょ
-NoNewWindow で端末共有させたらエラーメッセージも化けてるんじゃ……
Start-Process のパラメーターを画面出力して Start-Process せずに exit
出力されたパラメーターが正しいか確認……かな
それをスレに貼ってもらえれば即解決な気がする
端末設定を変えられて文字化けするから Start-Process させるんでしょ
-NoNewWindow で端末共有させたらエラーメッセージも化けてるんじゃ……
Start-Process のパラメーターを画面出力して Start-Process せずに exit
出力されたパラメーターが正しいか確認……かな
それをスレに貼ってもらえれば即解決な気がする
343319
2020/06/06(土) 10:55:21.17ID:2MzuylRm >>323
すみません、これまでの Start-Process の例では「-Wait」オプションが抜けていました。
そのうえで、>>342 の指摘も考慮して以下の通り3パターンでテストしてみました。
https://pastebin.com/yG2WUtPP
test1.ps1
Start-Process を使用するバージョン(-NoNewWindow 無し)
test2.ps1
Start-Process を使用するバージョン(-NoNewWindow 有り)
test3.ps1
オリジナルに近いバージョン(外部コマンドを「&」で実行)'
結果は以下の通りです。
https://i.imgur.com/b2tNZgy.png
test1.ps1、test2.ps1 が動作するのは想定どおりなのですが、test3.ps1 でも文字化けしてないんですよね・・・。
これまで「外部コマンドを Start-Process で別ウィンドウで実行すれば文字化けしない」という前提で
話を進めてきましたが、まったく関係なかったかも知れません。
すみません、これまでの Start-Process の例では「-Wait」オプションが抜けていました。
そのうえで、>>342 の指摘も考慮して以下の通り3パターンでテストしてみました。
https://pastebin.com/yG2WUtPP
test1.ps1
Start-Process を使用するバージョン(-NoNewWindow 無し)
test2.ps1
Start-Process を使用するバージョン(-NoNewWindow 有り)
test3.ps1
オリジナルに近いバージョン(外部コマンドを「&」で実行)'
結果は以下の通りです。
https://i.imgur.com/b2tNZgy.png
test1.ps1、test2.ps1 が動作するのは想定どおりなのですが、test3.ps1 でも文字化けしてないんですよね・・・。
これまで「外部コマンドを Start-Process で別ウィンドウで実行すれば文字化けしない」という前提で
話を進めてきましたが、まったく関係なかったかも知れません。
344デフォルトの名無しさん
2020/06/06(土) 11:30:16.97ID:7wZTkIMZ 外部コマンドの出力をpowershell側で触ったら文字化けするって話してるなら
最初にコンソール出力時のエンコーディング設定変えて
$defaultEncoding,[Console]::OutputEncoding = [Console]::OutputEncoding,[Text.Encodi ng]::UTF8
最後に戻してやればいいんじゃない
[console]::OutputEncoding = $defaultEncoding
最初にコンソール出力時のエンコーディング設定変えて
$defaultEncoding,[Console]::OutputEncoding = [Console]::OutputEncoding,[Text.Encodi ng]::UTF8
最後に戻してやればいいんじゃない
[console]::OutputEncoding = $defaultEncoding
345デフォルトの名無しさん
2020/06/06(土) 13:53:01.40ID:3KBpE/OI ちょっと話が脇にそれるんだけど……
あれ?
>>311 を読んで「表示済みの文字まで化ける」謎現象だと思ってたけど
「正常表示できてた文字を、新しく出力すると化ける」だけなの?
化けるのがコンソールアプリの出力だけで、PowerShellのその後の出力は正常なら
端末の受け入れるエンコーディングが変更されただけかも
出力関係のエンコーディングは
(a) コンソールアプリの出力を PowerShell がパイプなり代入なりで受け取る場合のエンコーディング (PowerShellが持ってる)
(b) 端末が受け入れるエンコーディング (端末が持ってる)
があって、PowerShell自身は勝手に(b)に合わせて出力するから化けない
コンソールアプリの出力は、PowerShellに食われる時は、(a)なら正常、違えば化ける
食われず直接端末に出力する時は、(b)なら正常、違えば化ける
コンソールアプリに(b)だけ変更されたのなら(a)に再設定すればいい
[console]::OutputEncoding を設定すると(a)と(b)の両方が設定される
(a)は [console]::OutputEncoding だから
[console]::OutputEncoding = [console]::OutputEncoding
すれば十分な気がする
あれ?
>>311 を読んで「表示済みの文字まで化ける」謎現象だと思ってたけど
「正常表示できてた文字を、新しく出力すると化ける」だけなの?
化けるのがコンソールアプリの出力だけで、PowerShellのその後の出力は正常なら
端末の受け入れるエンコーディングが変更されただけかも
出力関係のエンコーディングは
(a) コンソールアプリの出力を PowerShell がパイプなり代入なりで受け取る場合のエンコーディング (PowerShellが持ってる)
(b) 端末が受け入れるエンコーディング (端末が持ってる)
があって、PowerShell自身は勝手に(b)に合わせて出力するから化けない
コンソールアプリの出力は、PowerShellに食われる時は、(a)なら正常、違えば化ける
食われず直接端末に出力する時は、(b)なら正常、違えば化ける
コンソールアプリに(b)だけ変更されたのなら(a)に再設定すればいい
[console]::OutputEncoding を設定すると(a)と(b)の両方が設定される
(a)は [console]::OutputEncoding だから
[console]::OutputEncoding = [console]::OutputEncoding
すれば十分な気がする
346326
2020/06/06(土) 13:53:57.50ID:YeDbVwYY 色々ありがとうございます。
まず結論ですが、>>344さんの方法で文字化けは一応治りました。
ただ、最初の行に
$defaultEncoding,[Console]::OutputEncoding = [Console]::OutputEncoding,[Text.Encodi ng]::UTF8
を記述すると
[console]::OutputEncoding = $defaultEncoding
が実行されるまで日本語が全て文字化けします。
なのでfreacが実行される行の上下をこれで挟むのが一応の解決方法でしょうか。
他の方々の書き込みですが、まずStart-Processに-waitをを付ける方法では完全に動作が停止して次の処理に進みませんでした。
>>340さんの例3、4を試してみると、File Not Foundになります。
原因が気になるところではありますが、本末転倒なので>>344さんの方法でとりあえず解決したことにします。ありがとうございました。
まず結論ですが、>>344さんの方法で文字化けは一応治りました。
ただ、最初の行に
$defaultEncoding,[Console]::OutputEncoding = [Console]::OutputEncoding,[Text.Encodi ng]::UTF8
を記述すると
[console]::OutputEncoding = $defaultEncoding
が実行されるまで日本語が全て文字化けします。
なのでfreacが実行される行の上下をこれで挟むのが一応の解決方法でしょうか。
他の方々の書き込みですが、まずStart-Processに-waitをを付ける方法では完全に動作が停止して次の処理に進みませんでした。
>>340さんの例3、4を試してみると、File Not Foundになります。
原因が気になるところではありますが、本末転倒なので>>344さんの方法でとりあえず解決したことにします。ありがとうございました。
347デフォルトの名無しさん
2020/06/06(土) 16:15:55.11ID:3KBpE/OI [console]::OutputEncodingの退避・復元で解決できるなら
退避なんかせずに freac(?) の実行直後に
[console]::OutputEncoding = [console]::OutputEncoding
入れるだけでいい気がするけど、もういいや
退避なんかせずに freac(?) の実行直後に
[console]::OutputEncoding = [console]::OutputEncoding
入れるだけでいい気がするけど、もういいや
348デフォルトの名無しさん
2020/06/06(土) 17:37:53.88ID:7YMZq5d4 書き込み禁止ワードは、何かのコマンドだろ
cmd.@exe, ls @-l
外人のアプリだから、アプリ内部で、文字コードをASCII に決め打ちしてるのかも。
でも、そのアプリは、起動したPowerShellが親だとすると、子プロセスになるから、
子プロセス内で環境を変えたとしても、親プロセスに伝播しないだろ
親プロセスで環境を指定したら、子プロセスにその環境は引き継がれるけど
それかそのアプリは、文字コードをバイナリにしてるとかで、
データを受け取る方がテキストで受け取ると、文字化けするとか
cmd.@exe, ls @-l
外人のアプリだから、アプリ内部で、文字コードをASCII に決め打ちしてるのかも。
でも、そのアプリは、起動したPowerShellが親だとすると、子プロセスになるから、
子プロセス内で環境を変えたとしても、親プロセスに伝播しないだろ
親プロセスで環境を指定したら、子プロセスにその環境は引き継がれるけど
それかそのアプリは、文字コードをバイナリにしてるとかで、
データを受け取る方がテキストで受け取ると、文字化けするとか
349デフォルトの名無しさん
2020/06/06(土) 18:47:57.73ID:2MzuylRm350デフォルトの名無しさん
2020/06/09(火) 16:01:29.47ID:DriXa/wG rem ff.cmd
@echo off
setlocal
cmd /k "pwsh -File ".\firefox-shutdown.ps1""
# firefox-shutdown.ps1
Start-Sleep -Seconds 10;
Get-Command;
Start-Sleep -Seconds 3;
Get-Process firefox* | Stop-Process;
@echo off
setlocal
cmd /k "pwsh -File ".\firefox-shutdown.ps1""
# firefox-shutdown.ps1
Start-Sleep -Seconds 10;
Get-Command;
Start-Sleep -Seconds 3;
Get-Process firefox* | Stop-Process;
351デフォルトの名無しさん
2020/06/09(火) 16:26:23.01ID:DriXa/wG Start-Sleep -Seconds 10;
mspaint "010371104.gif";
Start-Sleep -Seconds 3;
Get-Process firefox* | Stop-Process;
mspaint "010371104.gif";
Start-Sleep -Seconds 3;
Get-Process firefox* | Stop-Process;
352300
2020/06/11(木) 17:55:09.10ID:fJWIdGby 教えてください。
ADユーザーの最新ログオン日時を取得したいです。
記述としては、
$Now = Get-Date -Format 'yyyyMMdd_hhmmss'
$logPath = Join-Path -Path ([Environment]::GetFolderPath("Desktop")) -ChildPath ('{0}.csv' -f $Now )
$users = Get-ADUser -Filter * -SearchBase " OU=ユーザー,DC=test,DC=local "
foreach ($user in $users) {
Write-Host ('{0} : ' -f $user.SamAccountName) -NoNewline
$grps = (Get-ADPrincipalGroupMembership -identity $user).name
$line = '"{0}",' -f $user.SamAccountName
$line = $line + ('"{0}",' -f $user.Enabled)
$line = $line + ('"{0}",' -f $user.LastLogon)
と思いましたが、最終ログオン日時を取得するのは
LastLogonであっているでしょうか?
また、最終ログイン日時の後にフルネームを取得したいときは、
$Now = Get-Date -Format 'yyyyMMdd_hhmmss'
$logPath = Join-Path -Path ([Environment]::GetFolderPath("Desktop")) -ChildPath ('{0}.csv' -f $Now )
$users = Get-ADUser -Filter * -SearchBase " OU=ユーザー,DC=test,DC=local "
foreach ($user in $users) {
Write-Host ('{0} : ' -f $user.SamAccountName) -NoNewline
$grps = (Get-ADPrincipalGroupMembership -identity $user).name
$line = '"{0}",' -f $user.SamAccountName
$line = $line + ('"{0}",' -f $user.Enabled)
$line = $line + ('"{0}",' -f $user.LastLogon)
$line = $line + ('"{0}",' -f $user.Fullname)
となるでしょうか?
ADユーザーの最新ログオン日時を取得したいです。
記述としては、
$Now = Get-Date -Format 'yyyyMMdd_hhmmss'
$logPath = Join-Path -Path ([Environment]::GetFolderPath("Desktop")) -ChildPath ('{0}.csv' -f $Now )
$users = Get-ADUser -Filter * -SearchBase " OU=ユーザー,DC=test,DC=local "
foreach ($user in $users) {
Write-Host ('{0} : ' -f $user.SamAccountName) -NoNewline
$grps = (Get-ADPrincipalGroupMembership -identity $user).name
$line = '"{0}",' -f $user.SamAccountName
$line = $line + ('"{0}",' -f $user.Enabled)
$line = $line + ('"{0}",' -f $user.LastLogon)
と思いましたが、最終ログオン日時を取得するのは
LastLogonであっているでしょうか?
また、最終ログイン日時の後にフルネームを取得したいときは、
$Now = Get-Date -Format 'yyyyMMdd_hhmmss'
$logPath = Join-Path -Path ([Environment]::GetFolderPath("Desktop")) -ChildPath ('{0}.csv' -f $Now )
$users = Get-ADUser -Filter * -SearchBase " OU=ユーザー,DC=test,DC=local "
foreach ($user in $users) {
Write-Host ('{0} : ' -f $user.SamAccountName) -NoNewline
$grps = (Get-ADPrincipalGroupMembership -identity $user).name
$line = '"{0}",' -f $user.SamAccountName
$line = $line + ('"{0}",' -f $user.Enabled)
$line = $line + ('"{0}",' -f $user.LastLogon)
$line = $line + ('"{0}",' -f $user.Fullname)
となるでしょうか?
353デフォルトの名無しさん
2020/06/12(金) 09:35:33.43ID:IRe5SA+Y354デフォルトの名無しさん
2020/06/12(金) 10:07:01.73ID:tUTXhBxn >>352
Get-ADUser は、デフォルトでは一部のプロパティしか取得しません。"LastLogon" が必要な場合は -Properties で指定する必要があります。
$users = Get-ADUser -Filter * -SearchBase "OU=ユーザー,DC=test,DC=local"
↓
$users = Get-ADUser -Filter * -SearchBase "OU=ユーザー,DC=test,DC=local" -Properties 'LastLogon'
さらに、LastLogon で取得される日時データはシリアル化されたものですのでヒューマンリーダブルに変換する必要があります。
$line = $line + ('"{0}",' -f $user.LastLogon)
↓
$date = [DateTime]::FromFileTime($user.LastLogon)
$line = $line + ('"{0}",' -f $date.ToString("yyyy/MM/dd HH:mm:ss"))
「フルネーム」ですが、プロパティとしては Name が該当するものになります。
$line = $line + ('"{0}",' -f $user.Fullname)
↓
$line = $line + ('"{0}",' -f $user.Name)
Get-ADUser は、デフォルトでは一部のプロパティしか取得しません。"LastLogon" が必要な場合は -Properties で指定する必要があります。
$users = Get-ADUser -Filter * -SearchBase "OU=ユーザー,DC=test,DC=local"
↓
$users = Get-ADUser -Filter * -SearchBase "OU=ユーザー,DC=test,DC=local" -Properties 'LastLogon'
さらに、LastLogon で取得される日時データはシリアル化されたものですのでヒューマンリーダブルに変換する必要があります。
$line = $line + ('"{0}",' -f $user.LastLogon)
↓
$date = [DateTime]::FromFileTime($user.LastLogon)
$line = $line + ('"{0}",' -f $date.ToString("yyyy/MM/dd HH:mm:ss"))
「フルネーム」ですが、プロパティとしては Name が該当するものになります。
$line = $line + ('"{0}",' -f $user.Fullname)
↓
$line = $line + ('"{0}",' -f $user.Name)
355354
2020/06/12(金) 10:07:36.18ID:tUTXhBxn まとめるとこうです(ファイル書き出しの部分は省略)。
$users = Get-ADUser -Filter * -SearchBase "OU=ユーザー,DC=test,DC=local" -Properties 'LastLogon'
foreach ($user in $users) {
Write-Host ('{0} : ' -f $user.SamAccountName) -NoNewline
$grps = (Get-ADPrincipalGroupMembership -identity $user).name
$line = '"{0}",' -f $user.SamAccountName
$line = $line + ('"{0}",' -f $user.Enabled)
$line = $line + ('"{0}",' -f $user.Name)
$date = [DateTime]::FromFileTime($user.LastLogon)
$line = $line + ('"{0}",' -f $date.ToString("yyyy/MM/dd HH:mm:ss"))
Write-Host $line
}
$users = Get-ADUser -Filter * -SearchBase "OU=ユーザー,DC=test,DC=local" -Properties 'LastLogon'
foreach ($user in $users) {
Write-Host ('{0} : ' -f $user.SamAccountName) -NoNewline
$grps = (Get-ADPrincipalGroupMembership -identity $user).name
$line = '"{0}",' -f $user.SamAccountName
$line = $line + ('"{0}",' -f $user.Enabled)
$line = $line + ('"{0}",' -f $user.Name)
$date = [DateTime]::FromFileTime($user.LastLogon)
$line = $line + ('"{0}",' -f $date.ToString("yyyy/MM/dd HH:mm:ss"))
Write-Host $line
}
356354
2020/06/12(金) 10:09:03.73ID:tUTXhBxn ただし、私自身も 10 年くらい前に AD の情報から LastLogon を取得することを検証したのですが、以下の理由から断念しました。
・LastLogon のデータは各ドメコンが個別に保持しているデータなので、ドメコンが複数ある場合は各ドメコンごとに値が異なる
(各クライアントが認証要求を行ったドメコンでしか更新されず、各ドメコン間で同期されない)
・ユーザが PC でログオンしたタイミング以外でも、LastLogon は更新される (ログオフや長時間離席していた場合など)
正確なログオン日時が取りたい場合は、各クライアント上で取得する必要があります。イベントログを見れば分かります。
私は結局、ファイルサーバのテキストファイルにログオン日時とユーザ名を書き込むログオンスクリプトを作成したと記憶しています。
・LastLogon のデータは各ドメコンが個別に保持しているデータなので、ドメコンが複数ある場合は各ドメコンごとに値が異なる
(各クライアントが認証要求を行ったドメコンでしか更新されず、各ドメコン間で同期されない)
・ユーザが PC でログオンしたタイミング以外でも、LastLogon は更新される (ログオフや長時間離席していた場合など)
正確なログオン日時が取りたい場合は、各クライアント上で取得する必要があります。イベントログを見れば分かります。
私は結局、ファイルサーバのテキストファイルにログオン日時とユーザ名を書き込むログオンスクリプトを作成したと記憶しています。
357354
2020/06/12(金) 10:22:05.71ID:tUTXhBxn 追伸。
>・LastLogon のデータは各ドメコンが個別に保持しているデータなので、ドメコンが複数ある場合は各ドメコンごとに値が異なる
全てのドメコンから値を取得して、最も値の大きいものを採用する、というやり方も出来ます。
それでも、LastLogon がログオン操作以外でも更新されてしまうことには変わりませんので、確実に実行するならやはりログオンスクリプトをおすすめします。
>・LastLogon のデータは各ドメコンが個別に保持しているデータなので、ドメコンが複数ある場合は各ドメコンごとに値が異なる
全てのドメコンから値を取得して、最も値の大きいものを採用する、というやり方も出来ます。
それでも、LastLogon がログオン操作以外でも更新されてしまうことには変わりませんので、確実に実行するならやはりログオンスクリプトをおすすめします。
358デフォルトの名無しさん
2020/06/12(金) 16:10:21.89ID:6Yfh5mGy Power Shellってアプリケーション作れんですか?
359デフォルトの名無しさん
2020/06/12(金) 18:18:25.00ID:Jkz+gOtE アプリケーションって何?
360デフォルトの名無しさん
2020/06/12(金) 18:44:27.27ID:/dqGhWwV361デフォルトの名無しさん
2020/06/12(金) 18:45:58.91ID:gCbNSmDh window表示するイベントドリブンなexeのことじゃないかな
362デフォルトの名無しさん
2020/06/12(金) 18:55:49.90ID:tr06rVi2 もうそれ最初からC#でやれば良くね?っていう
363デフォルトの名無しさん
2020/06/12(金) 19:42:03.65ID:sTuFS1ZK 大部分C#で書いてパワシェで書きやすい部分だけデリゲートでインジェクションするパターンなら多用しとるわ
364デフォルトの名無しさん
2020/06/12(金) 20:21:21.09ID:6LTYSgwt ただのコマンドプロンプトだと思ってた
スゲーワケわからん
スゲーワケわからん
365デフォルトの名無しさん
2020/06/12(金) 20:53:03.96ID:tSkvENox オブジェクト指向シェル言語だからな
366300
2020/06/14(日) 00:11:44.27ID:JXZUsp2d >>354
ありがとうございます!
検証環境で無事出力確認できました!
しかし最終ログイン日時の取得は難しいんですね。
今回はそれほど精密な値は求められないので良かったですが、
ドメコンには注意なんですね。
ありがとうございます!
検証環境で無事出力確認できました!
しかし最終ログイン日時の取得は難しいんですね。
今回はそれほど精密な値は求められないので良かったですが、
ドメコンには注意なんですね。
367デフォルトの名無しさん
2020/06/15(月) 19:20:43.36ID:KO8t20+1 ドメコンにリアルタイム性は期待できないと思ったがやっぱそうだよな
368デフォルトの名無しさん
2020/06/16(火) 08:27:08.93ID:flP7FZNr LastLogin を各DCから拾って最新値を取り出すスクリプトあったよ
https://gallery.technet.microsoft.com/scriptcenter/Get-Last-Logon-for-Users-c8e3eab2
https://gallery.technet.microsoft.com/scriptcenter/Get-Last-Logon-for-Users-c8e3eab2
369デフォルトの名無しさん
2020/06/16(火) 11:32:29.65ID:r0rBA9XG コマンドプロンプトでecho a b cを実行すると出力結果は
a b c
PowerShellでecho a b cを実行すると
a
b
c
なのはなんで?
エラーにもならずにbやcはどう扱われてるの?
a b c
PowerShellでecho a b cを実行すると
a
b
c
なのはなんで?
エラーにもならずにbやcはどう扱われてるの?
370デフォルトの名無しさん
2020/06/16(火) 11:55:26.03ID:dJYiaODe echo a b c
とかやってみれば、以下にcmdがクソかよくわかると思うよ。
とかやってみれば、以下にcmdがクソかよくわかると思うよ。
371デフォルトの名無しさん
2020/06/16(火) 11:56:36.32ID:dJYiaODe あ、間のスペースも消えてなくなるのか。
echo___a_____b____c
_をスペースに。
echo___a_____b____c
_をスペースに。
372デフォルトの名無しさん
2020/06/16(火) 12:32:39.69ID:0Yfa1k+l いやいやいや
引数なんだから当然だろ
あとは出力で改行するかどうかだけじゃん
引数なんだから当然だろ
あとは出力で改行するかどうかだけじゃん
373デフォルトの名無しさん
2020/06/16(火) 12:44:08.30ID:zfRgO9so echo "a b c"
" " で囲えば、a b c
と表示される
" " で囲えば、a b c
と表示される
374デフォルトの名無しさん
2020/06/16(火) 12:53:01.50ID:r0rBA9XG 聞きたいのはそういう類じゃないんだな
echo (=Write-Output) のSyntaxが
Write-Output [-InputObject] <PSObject> [-NoEnumerate] [<CommonParameters>]
だからa が-InputObjectの<PSObject>になるのはわかる
bやcはどういう理屈で処理されるの?
echo (=Write-Output) のSyntaxが
Write-Output [-InputObject] <PSObject> [-NoEnumerate] [<CommonParameters>]
だからa が-InputObjectの<PSObject>になるのはわかる
bやcはどういう理屈で処理されるの?
375デフォルトの名無しさん
2020/06/16(火) 14:16:42.05ID:PL2rwu//376デフォルトの名無しさん
2020/06/16(火) 14:40:34.28ID:p9YvTGLE まあ調べた374がpowershellの引数展開についてまとめて分かりやすく報告してくれるでしょ
377デフォルトの名無しさん
2020/06/16(火) 14:48:49.11ID:C/0BZ8DU MSの説明では、正確には
[-InputObject] <PSObject[]>
となってる
[-InputObject] <PSObject[]>
となってる
378デフォルトの名無しさん
2020/06/16(火) 16:42:16.77ID:r0rBA9XG del a b cはちゃんとエラーになる
さっぱりわからん😩
さっぱりわからん😩
379デフォルトの名無しさん
2020/06/16(火) 17:12:01.69ID:MVe0R048 Write-Outputの-InputObjectパラメータにはValueFromRemainingArguments属性がついてるから
その場合はパラメータ名が明示されてないものはすべてInputObjectにバインドされるんよ
確認はしずらいけど以下で確認できる
(Get-Command Write-Output).ParameterSets[0].Parameters | where name -eq InputObject
まああんまりこの属性ついてるのはないからecho とかWrite-Hostあたりはこうなってるくらいの認識でいいよ
PowerShell7だとJoin-Pathもこの属性がついてる
その場合はパラメータ名が明示されてないものはすべてInputObjectにバインドされるんよ
確認はしずらいけど以下で確認できる
(Get-Command Write-Output).ParameterSets[0].Parameters | where name -eq InputObject
まああんまりこの属性ついてるのはないからecho とかWrite-Hostあたりはこうなってるくらいの認識でいいよ
PowerShell7だとJoin-Pathもこの属性がついてる
380デフォルトの名無しさん
2020/06/16(火) 17:24:04.82ID:8ZMUuPb8 echoの引数がUNIXとかだとアレだよ
381デフォルトの名無しさん
2020/06/16(火) 17:25:39.53ID:MVe0R048 >>379
訂正:パラメータ名が明示されてないものでポジショナルバインディングもできないもの
訂正:パラメータ名が明示されてないものでポジショナルバインディングもできないもの
382デフォルトの名無しさん
2020/06/16(火) 17:45:58.38ID:r0rBA9XG なるほど
ありがとう
ありがとう
383デフォルトの名無しさん
2020/06/16(火) 19:16:29.09ID:bkoiHKSB PowerShellの起動がなんか凄いモタつくんだけどおまかん?
Windows10Home PS7.01
スクリプト書いて渡しても、
何も出ない黒い画面がしばらく出て怖がられたり、何個も起動されたりするし
Windows10Home PS7.01
スクリプト書いて渡しても、
何も出ない黒い画面がしばらく出て怖がられたり、何個も起動されたりするし
384デフォルトの名無しさん
2020/06/16(火) 21:23:47.76ID:aR46ypRq >>251,312
右クリックじゃなくてCtrl+Vではどう?
右クリックじゃなくてCtrl+Vではどう?
385デフォルトの名無しさん
2020/06/16(火) 22:43:53.36ID:Tk9CpyzQ cmd -L
9875 shinjyuku Tokyo Japan
の1列目を1行で変数に格納したいのですが、方法がわかりません。
$work=(cmd -L | Select-String "shinjyuku" )
$id=$work -split " "
Write-Output $work[1]
これを1行で書ける方法を教えてください。
よろしくお願いいたします。
9875 shinjyuku Tokyo Japan
の1列目を1行で変数に格納したいのですが、方法がわかりません。
$work=(cmd -L | Select-String "shinjyuku" )
$id=$work -split " "
Write-Output $work[1]
これを1行で書ける方法を教えてください。
よろしくお願いいたします。
386デフォルトの名無しさん
2020/06/16(火) 23:40:23.19ID:n71ojSL1 cmd -Lが何なのか判らないのでcmd /c echoの例で
(cmd /c echo 9875 shinjyuku Tokyo Japan | %{ $_ -split " " })[0]
(cmd /c echo 9875 shinjyuku Tokyo Japan | %{ $_ -split " " })[0]
387デフォルトの名無しさん
2020/06/16(火) 23:41:31.04ID:n71ojSL1 忘れてた頭に$id=付けてね
388デフォルトの名無しさん
2020/06/17(水) 07:40:39.83ID:0yXiYm7U >>386
ありがとうございます
特に隠すようなコマンドでもなかったのですが、
インターネット速度の自動計測スクリプトを作ってみようとしてます
.>\speedtest.exe -L | select-string 'OPEN Project \(via 20G SINET\)'
15047 OPEN Project (via 20G SINET) Tokyo Japan
> $i=(.\speedtest.exe -L | select-string 'OPEN Project \(via 20G SINET\)' | %{$_ -split ' '}[0])
> Write-Output $i[1]
15047
ありがとうございます
特に隠すようなコマンドでもなかったのですが、
インターネット速度の自動計測スクリプトを作ってみようとしてます
.>\speedtest.exe -L | select-string 'OPEN Project \(via 20G SINET\)'
15047 OPEN Project (via 20G SINET) Tokyo Japan
> $i=(.\speedtest.exe -L | select-string 'OPEN Project \(via 20G SINET\)' | %{$_ -split ' '}[0])
> Write-Output $i[1]
15047
389デフォルトの名無しさん
2020/06/17(水) 07:50:00.92ID:PujUJ59z cmd .exeに-Lオプションがあるのかと思った人は俺以外にもたくさんいるはず
390デフォルトの名無しさん
2020/06/17(水) 08:00:55.98ID:H0Dcbe9T VSCode で、PowerShell の拡張機能を入れると、構文チェックで、
Write-Host を、Write-Output か、Write-Verbose に変えろって警告される
PowerShell/PSScriptAnalyzer
https://github.com/PowerShell/PSScriptAnalyzer/blob/master/RuleDocumentation/AvoidUsingWriteHost.md
Write-Host を、Write-Output か、Write-Verbose に変えろって警告される
PowerShell/PSScriptAnalyzer
https://github.com/PowerShell/PSScriptAnalyzer/blob/master/RuleDocumentation/AvoidUsingWriteHost.md
391デフォルトの名無しさん
2020/06/17(水) 08:04:57.13ID:H0Dcbe9T392デフォルトの名無しさん
2020/06/17(水) 10:09:26.78ID:U7B7s7qz >>388
(.\speedtest.exe -L | select-string 'OPEN Project \(via 20G SINET\)' | %{$_ -split ' '}[0])[1]
(.\speedtest.exe -L | select-string 'OPEN Project \(via 20G SINET\)' | %{$_ -split ' '}[0])[1]
393392
2020/06/17(水) 10:13:28.30ID:U7B7s7qz394392
2020/06/17(水) 10:21:19.19ID:U7B7s7qz >>388
タスクスケジューラで回すことを考えてるのかも知れませんが、単に
.\speedtest.exe -s 6766
とか
.\speedtest.exe -s 15047
といった感じにしないのはなぜですか?
speedtest.exe -L を実行する意図がよく分かりません。
タスクスケジューラで回すことを考えてるのかも知れませんが、単に
.\speedtest.exe -s 6766
とか
.\speedtest.exe -s 15047
といった感じにしないのはなぜですか?
speedtest.exe -L を実行する意図がよく分かりません。
395392
2020/06/17(水) 10:29:32.27ID:U7B7s7qz >>388
連投ごめんなさい、speedtest.exe は出力形式を CSV とか JSON とか色々
選べますので、ヒューマンリーダブルのものを加工するよりもそっちのほうが
簡単だと思います。
実行例:近隣サーバの列挙
PS > .\speedtest.exe -L -f csv
"ID","Name","Location","Country","Host"
"24333","Rakuten Mobile , Inc","Tokyo","Japan","ookla.mbspeed.net"
"15047","OPEN Project (via 20G SINET)","Tokyo","Japan","speed.open.ad.jp"
"28910","fdcservers.net","Tokyo","Japan","lg-tok.fdcservers.net"
〜以下略〜
実行例:サーバを指定した計測
PS > .\speedtest.exe -s 15047 -f csv
"OPEN Project (via 20G SINET) - Tokyo","15047","4.43","0.605","0","72540509","45781634","871440390","582254568","https://www.speedtest.net/result/c/e998102d-d04a-4258-9aae-6dd3afbbf323"
連投ごめんなさい、speedtest.exe は出力形式を CSV とか JSON とか色々
選べますので、ヒューマンリーダブルのものを加工するよりもそっちのほうが
簡単だと思います。
実行例:近隣サーバの列挙
PS > .\speedtest.exe -L -f csv
"ID","Name","Location","Country","Host"
"24333","Rakuten Mobile , Inc","Tokyo","Japan","ookla.mbspeed.net"
"15047","OPEN Project (via 20G SINET)","Tokyo","Japan","speed.open.ad.jp"
"28910","fdcservers.net","Tokyo","Japan","lg-tok.fdcservers.net"
〜以下略〜
実行例:サーバを指定した計測
PS > .\speedtest.exe -s 15047 -f csv
"OPEN Project (via 20G SINET) - Tokyo","15047","4.43","0.605","0","72540509","45781634","871440390","582254568","https://www.speedtest.net/result/c/e998102d-d04a-4258-9aae-6dd3afbbf323"
396デフォルトの名無しさん
2020/06/17(水) 15:45:25.40ID:UcA8Gcsf ジョブをパイプの途中で使いたいと考えています
1 .. 3 | % { $_; sleep 1 } | & { process { ">$_" }}
これは1秒間隔で結果が出ます
Start-Job { 1 .. 3 | % { $_; sleep 1} } | Receive-Job -wait
これも1秒間隔で結果が出ます
1 .. 3 | % { $_; sleep 1 } | Start-Job { process { ">$_" }} | Receive-Job -wait
これは結果がまとめて出ます
1秒間隔で結果を得るにはどうすれば良いのでしょうか
# パイプラインで入出力がsjisのコマンドとutf8のコマンドを通すのが最終目的です
# データ生成 | sjis入出力 | utf8入出力 みたいなイメージ
# パイプラインでエンコーディングを混在させるのに$OutputEncodingの方は
# スコープで分ければすみますが、[console]::OutputEncodingはスコープ無関係
# なのでジョブで分けようかと
1 .. 3 | % { $_; sleep 1 } | & { process { ">$_" }}
これは1秒間隔で結果が出ます
Start-Job { 1 .. 3 | % { $_; sleep 1} } | Receive-Job -wait
これも1秒間隔で結果が出ます
1 .. 3 | % { $_; sleep 1 } | Start-Job { process { ">$_" }} | Receive-Job -wait
これは結果がまとめて出ます
1秒間隔で結果を得るにはどうすれば良いのでしょうか
# パイプラインで入出力がsjisのコマンドとutf8のコマンドを通すのが最終目的です
# データ生成 | sjis入出力 | utf8入出力 みたいなイメージ
# パイプラインでエンコーディングを混在させるのに$OutputEncodingの方は
# スコープで分ければすみますが、[console]::OutputEncodingはスコープ無関係
# なのでジョブで分けようかと
397デフォルトの名無しさん
2020/06/17(水) 16:28:19.33ID:pLBooGKC なんでワンライナーでやる必要があるのかね、こういうの
保守とか考えないのかね
保守とか考えないのかね
398デフォルトの名無しさん
2020/06/17(水) 16:55:10.36ID:/58stVp5 パイプの弊害か
399デフォルトの名無しさん
2020/06/17(水) 17:44:32.75ID:UcA8Gcsf400デフォルトの名無しさん
2020/06/17(水) 23:59:11.03ID:H0Dcbe9T >>396
>1 .. 3 | % { $_; sleep 1 } | Start-Job { process { ">$_" }} | Receive-Job -wait
1 .. 3 | % { $_; sleep 1 }
この部分を、Start-Job の中に入れたら?
>1 .. 3 | % { $_; sleep 1 } | Start-Job { process { ">$_" }} | Receive-Job -wait
1 .. 3 | % { $_; sleep 1 }
この部分を、Start-Job の中に入れたら?
401デフォルトの名無しさん
2020/06/18(木) 05:52:46.25ID:7bz/apiR $ary_names = @('太郎','次郎','三郎','四朗','五郎')
write-output $ary_name[@] #bashの記法
太郎,次郎,三郎,四朗,五郎
的なことをしたい。※区切り文字はなんでも可。
現状、配列に文字列をくっつけると1行で出るので
write-output ("a"+$aaa).trim("a")
という強引な方法をとっております。もっとPowershell的にスマートな方法があれば
お教えくださいませ。
write-output $ary_name[@] #bashの記法
太郎,次郎,三郎,四朗,五郎
的なことをしたい。※区切り文字はなんでも可。
現状、配列に文字列をくっつけると1行で出るので
write-output ("a"+$aaa).trim("a")
という強引な方法をとっております。もっとPowershell的にスマートな方法があれば
お教えくださいませ。
402デフォルトの名無しさん
2020/06/18(木) 06:58:53.37ID:3wPjj0xg $ary_names -join ','
403デフォルトの名無しさん
2020/06/18(木) 07:18:11.97ID:7bz/apiR >>402
ありがとうございます!
ありがとうございます!
404デフォルトの名無しさん
2020/06/18(木) 09:01:24.17ID:hwvpLd3O405デフォルトの名無しさん
2020/06/19(金) 06:41:17.41ID:RNyMoV2a $s=[datetime]::Now; 1 .. 5 | ForEach-Object { Start-Sleep 1; ">{0}" -f $_ } | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds}
2秒間隔、トータル10秒という結果に困惑している
2秒間隔、トータル10秒という結果に困惑している
406デフォルトの名無しさん
2020/06/19(金) 07:30:31.94ID:JIIBGf6G >>405
二重ループを期待してたってこと?
二重ループを期待してたってこと?
407405
2020/06/19(金) 08:42:12.76ID:RNyMoV2a 最初は2秒、それから1秒間隔でトータル6秒だと思ってた
1秒待ちをStart-Sleepでなく別のプロセスで待たせても変わらなかった
1秒待ちをStart-Sleepでなく別のプロセスで待たせても変わらなかった
408デフォルトの名無しさん
2020/06/19(金) 08:51:47.96ID:GhHOGZr1 パイプつなぎはいわゆるgenerator(PowerShellでの呼び方は知らない)になるってことかな?
409デフォルトの名無しさん
2020/06/19(金) 08:52:39.06ID:JIIBGf6G 1に対して最初のfor-eachの中身処理した後に次のfor-eachの中身処理。
2に対して...
3に対して...
4に対して...
5に対して...
ふたつのfor-eachの中身がどういう順に処理されてるか確認できるように表示を工夫してみたら?
2に対して...
3に対して...
4に対して...
5に対して...
ふたつのfor-eachの中身がどういう順に処理されてるか確認できるように表示を工夫してみたら?
410405
2020/06/19(金) 09:08:23.61ID:RNyMoV2a そこはなんとなくイメージできたんでもういい
パイプラインの各段を別のプロセスにすると6秒で終了する
同じように6秒で終了すると思ってたら違ったんで戸惑ったというお話
パイプラインの各段を別のプロセスにすると6秒で終了する
同じように6秒で終了すると思ってたら違ったんで戸惑ったというお話
411405
2020/06/19(金) 11:12:17.79ID:RNyMoV2a $s=[datetime]::Now; 1 .. 5 | Start-ThreadJob { process { Start-Sleep 1; ">${0}" -f $_ }} | Receive-Job -Wait -AutoRemoveJob | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds}
別スレッドを指定したらトータル6秒になった
一人研究発表会になっちまったな。すまぬ。
別スレッドを指定したらトータル6秒になった
一人研究発表会になっちまったな。すまぬ。
412405
2020/06/19(金) 11:40:12.67ID:RNyMoV2a よく見たら結果がおかしい。お手上げだ。諦めた。
413デフォルトの名無しさん
2020/06/19(金) 17:20:54.32ID:qQd5c1Zr >>397
おまえはpythonでもつかってろ
おまえはpythonでもつかってろ
414デフォルトの名無しさん
2020/06/19(金) 18:23:41.02ID:OOcqKGQK ラクダが笑ってんぞ
415405
2020/06/19(金) 21:01:31.39ID:RNyMoV2a できたーーーー
$s=[datetime]::Now; 1 .. 5 | ForEach-Object { Start-Sleep 1; ">{0}" -f $_ } | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds}
にちょい足しして
$s=[datetime]::Now; 1 .. 5 | ForEach-Object -Parallel { Start-Sleep 1; ">{0}" -f $_ } -ThrottleLimit 1 | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds}
にしたらStart-ThreadJobを使った時より遅いけど簡単に予想してた結果になった
お騒がせしました
$s=[datetime]::Now; 1 .. 5 | ForEach-Object { Start-Sleep 1; ">{0}" -f $_ } | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds}
にちょい足しして
$s=[datetime]::Now; 1 .. 5 | ForEach-Object -Parallel { Start-Sleep 1; ">{0}" -f $_ } -ThrottleLimit 1 | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds}
にしたらStart-ThreadJobを使った時より遅いけど簡単に予想してた結果になった
お騒がせしました
416405
2020/06/19(金) 21:15:58.78ID:RNyMoV2a こ、今度こそできたー
$s=[datetime]::Now; 1 .. 5 | Start-ThreadJob { $input | ForEach-Object {Start-Sleep 1; ">{0}" -f $_ }} | Receive-Job -Wait -AutoRemoveJob | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds}
やっぱりこれが最終版ということにしたい
お邪魔しました
$s=[datetime]::Now; 1 .. 5 | Start-ThreadJob { $input | ForEach-Object {Start-Sleep 1; ">{0}" -f $_ }} | Receive-Job -Wait -AutoRemoveJob | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds}
やっぱりこれが最終版ということにしたい
お邪魔しました
417デフォルトの名無しさん
2020/06/20(土) 00:50:50.12ID:na6pkPqz はいつぎ
418デフォルトの名無しさん
2020/06/20(土) 08:11:14.95ID:wKnheY+E Powershellを使いこなすにはcomを知らなければならないと聞いたのですが、
comについてはどうやって学ぶのがオススメですか?
ググラビリティの悪い単語なので、
思うように検索できません
Excellの機能を使ってあれこれしたいです
comについてはどうやって学ぶのがオススメですか?
ググラビリティの悪い単語なので、
思うように検索できません
Excellの機能を使ってあれこれしたいです
419デフォルトの名無しさん
2020/06/20(土) 09:03:13.32ID:5oXecify COM の使い方
https://docs.microsoft.com/ja-jp/previous-versions/direct-x/cc351700(v=msdn.10)
https://docs.microsoft.com/ja-jp/previous-versions/direct-x/cc351700(v=msdn.10)
420デフォルトの名無しさん
2020/06/20(土) 11:29:31.09ID:XppcwtFP Powershellを使い始めました
皆さん、こんなの全部覚えてるんですか?
どうやって覚えました?
ファイル開いて書き込むだけで
こんなにもたくさん覚えないといけないって
大変だったんじゃないですか?
$output_file = "C:\bin\hoge.txt"
$sw = New-Object System.IO.StreamWriter($output_file, $false, [Text.Encoding]::GetEncoding("UTF-8"))
$sw.WriteLine("aaa")
$sw.WriteLine("あああ")
$sw.Close()
$sw.WriteLine("あああ")
$sw.Close()
この辺はまだ、覚えられるのですが、
New-Object System.IO.StreamWriter←InputOutputを、ストリームにライトするんだろうな
$output_file, $false, ←ファイル名と、追記、上書を指定するんだろうな。
[Text.Encoding]:: ←なんで[]包むんだ、:: ←このダブルのコロンは何だ、
GetEncoding("UTF-8")) ←何でファイル作ってるのにGetなんだ、
単純に
$mojiko-do="UTF-8"で
New-Object System.IO.StreamWriter($output_file, $false,$mojiko-do)じゃないんだと、
覚えることや、なぜこうなってるんだに少々ビビってます。
皆さんが、どうやってこんなに複雑で面倒なものを覚えたか、コツがあったら教えてください。
皆さん、こんなの全部覚えてるんですか?
どうやって覚えました?
ファイル開いて書き込むだけで
こんなにもたくさん覚えないといけないって
大変だったんじゃないですか?
$output_file = "C:\bin\hoge.txt"
$sw = New-Object System.IO.StreamWriter($output_file, $false, [Text.Encoding]::GetEncoding("UTF-8"))
$sw.WriteLine("aaa")
$sw.WriteLine("あああ")
$sw.Close()
$sw.WriteLine("あああ")
$sw.Close()
この辺はまだ、覚えられるのですが、
New-Object System.IO.StreamWriter←InputOutputを、ストリームにライトするんだろうな
$output_file, $false, ←ファイル名と、追記、上書を指定するんだろうな。
[Text.Encoding]:: ←なんで[]包むんだ、:: ←このダブルのコロンは何だ、
GetEncoding("UTF-8")) ←何でファイル作ってるのにGetなんだ、
単純に
$mojiko-do="UTF-8"で
New-Object System.IO.StreamWriter($output_file, $false,$mojiko-do)じゃないんだと、
覚えることや、なぜこうなってるんだに少々ビビってます。
皆さんが、どうやってこんなに複雑で面倒なものを覚えたか、コツがあったら教えてください。
421デフォルトの名無しさん
2020/06/20(土) 11:33:23.00ID:XppcwtFP ほかにも、メソッド、プロパティ?クラス?で書き方がものすごいたくさんあるようで、めまいがします。
覚えれば仕事が楽になることは分かっているので、頑張りたいところなんですが
あまりの複雑さに、皆さんがどうやって覚えたのか、コツがあればぜひともお教えください。
覚えれば仕事が楽になることは分かっているので、頑張りたいところなんですが
あまりの複雑さに、皆さんがどうやって覚えたのか、コツがあればぜひともお教えください。
422デフォルトの名無しさん
2020/06/20(土) 11:46:07.33ID:6HpZ1NhN 良くも悪くも.NETが前提だから
先にC#を覚えるのがコツかな
先にC#を覚えるのがコツかな
423デフォルトの名無しさん
2020/06/20(土) 12:28:41.13ID:sltMp+ny コード量が多いってことと覚えなきゃいけない知識量は必ずしも一致しないからな
Perlみたいに省略できまくるワンライナーのほうがスパゲティったときわけ分からなくなる
Perlみたいに省略できまくるワンライナーのほうがスパゲティったときわけ分からなくなる
424デフォルトの名無しさん
2020/06/20(土) 12:29:17.17ID:dcvMDCGE とにかく書いて動かす
やってみる、作ってみる
国語力、英語力は少しつけようとする
やってみる、作ってみる
国語力、英語力は少しつけようとする
425デフォルトの名無しさん
2020/06/20(土) 12:31:14.10ID:E6EedD+K .NETなんて前提にしなくてもマルチプラットフォームで使える文法を身につけるのが先
426デフォルトの名無しさん
2020/06/20(土) 13:13:11.69ID:w0A+CU3q427デフォルトの名無しさん
2020/06/20(土) 13:13:46.53ID:F3e6GYXo 正直言ってPowerShellは覚える必要ない
スクリプトファイルを作って使うならC#を使うのと大差ない
それならC#を覚えて使う方がいい
コマンドラインシェルとして使うなら.NETやらCOMやら取り込む使い方は
何かあった時にシェルが巻きぞえになって、シェルを殺すしかなくなる
そうならない程度に言語自体の機能だけで使うなら、とりたて覚えるほどでもない
スクリプトファイルを作って使うならC#を使うのと大差ない
それならC#を覚えて使う方がいい
コマンドラインシェルとして使うなら.NETやらCOMやら取り込む使い方は
何かあった時にシェルが巻きぞえになって、シェルを殺すしかなくなる
そうならない程度に言語自体の機能だけで使うなら、とりたて覚えるほどでもない
428デフォルトの名無しさん
2020/06/20(土) 13:42:16.03ID:dcvMDCGE 本番環境その場で場当たり的にコマンド打つのはあり得ないしな
まあすごくユルい会社なら知らんが
まあすごくユルい会社なら知らんが
429デフォルトの名無しさん
2020/06/20(土) 13:50:27.59ID:zwBEwaPL >>420
その書き方は.NETライブラリを使っているのでPowershellの初歩の枠を越えてる
追記するだけならこう
$output_file = "C:\bin\hoge.txt"
"aaa" | Out-File $output_file -Append -Encoding UTF8
"あああ" | Out-File $output_file -Append -Encoding UTF8
こうしてもいい
"aaa", "あああ" | Out-File $output_file -Append -Encoding UTF8
UTF16でいいならこれ
"aaa", "あああ" >> $output_file
Powershell 5以前には欠陥があって、BOMなしUTF8を新規作成する簡単な手段がなかった
だからStreamWriterを持ち出すようなサンプルが普及していて、初歩のはずなのに難しいと感じる要因になってる
その書き方は.NETライブラリを使っているのでPowershellの初歩の枠を越えてる
追記するだけならこう
$output_file = "C:\bin\hoge.txt"
"aaa" | Out-File $output_file -Append -Encoding UTF8
"あああ" | Out-File $output_file -Append -Encoding UTF8
こうしてもいい
"aaa", "あああ" | Out-File $output_file -Append -Encoding UTF8
UTF16でいいならこれ
"aaa", "あああ" >> $output_file
Powershell 5以前には欠陥があって、BOMなしUTF8を新規作成する簡単な手段がなかった
だからStreamWriterを持ち出すようなサンプルが普及していて、初歩のはずなのに難しいと感じる要因になってる
430デフォルトの名無しさん
2020/06/20(土) 14:13:22.51ID:Xz+FX1Oy 必要はないけど覚えたら便利
431デフォルトの名無しさん
2020/06/20(土) 14:35:58.75ID:YZMPfrl8 最初から暗記する必要はなくて、機能を一覧表にしておいて
必要に応じてそれを参照、コピペすればいい
出現頻度の高いものは自然と覚える
いずれにしても手打ちするのは時間の無駄なので
コピペ推奨
必要に応じてそれを参照、コピペすればいい
出現頻度の高いものは自然と覚える
いずれにしても手打ちするのは時間の無駄なので
コピペ推奨
432デフォルトの名無しさん
2020/06/20(土) 16:51:19.56ID:KBDfWM5t 習得してない人達のアドバイスは聞く必要がない
あっだからできないんだっていう見本にはなるけど
あっだからできないんだっていう見本にはなるけど
433デフォルトの名無しさん
2020/06/20(土) 16:58:42.46ID:py+iqQxS 俺以外のアドバイスは聞く必要がない
434デフォルトの名無しさん
2020/06/20(土) 17:35:07.43ID:6sC7z1nS >>420
>コツがあったら教えてください。
PowerShell に限った話じゃないけど、学校の授業みたいに「勉強ありき」で
努力するよりも、「これをやるためには PowerShell を使うしか無い」という
状況に追い込まれると覚えやすいですね。
あと、積極的に英語のフォーラムなどから情報を得るようにしたほうが良いと思います。
やはり、日本語と英語では情報量が雲泥の差ですので。
Google 翻訳を使えば何とかなります。
>コツがあったら教えてください。
PowerShell に限った話じゃないけど、学校の授業みたいに「勉強ありき」で
努力するよりも、「これをやるためには PowerShell を使うしか無い」という
状況に追い込まれると覚えやすいですね。
あと、積極的に英語のフォーラムなどから情報を得るようにしたほうが良いと思います。
やはり、日本語と英語では情報量が雲泥の差ですので。
Google 翻訳を使えば何とかなります。
435デフォルトの名無しさん
2020/06/20(土) 20:10:35.90ID:WPfafdOl436デフォルトの名無しさん
2020/06/20(土) 23:24:31.04ID:tXS4Zxv6 PowerShell(PS)で、ビジネスロジック・複雑なものを書いたら、ダメ!
基本的に、CSV・JSON などは、Ruby で書いて、
起動部分だけを、コマンドプロンプト・PS・VBS などで作る
基本的に、CSV・JSON などは、Ruby で書いて、
起動部分だけを、コマンドプロンプト・PS・VBS などで作る
437デフォルトの名無しさん
2020/06/20(土) 23:38:30.06ID:sltMp+ny Pythonにしてくれ頼む
438デフォルトの名無しさん
2020/06/21(日) 08:39:56.92ID:PKUYu7rs >>435
>そんな状況は、普通は無い。
仕事で MS のエンタープライズ系製品を扱ってると、嫌というほど
そういう状況に遭遇しますね。
Windows Server, Exchange, SQL Server, Office 365 あたりの
設計、構築、運用に携わってれば日常茶飯事です。
そういう仕事に携わるようになってから PowerShell を覚えた、って人が
多いと思ったけど、そうでもないのかな?プログラム板だから違うのかな?
>そんな状況は、普通は無い。
仕事で MS のエンタープライズ系製品を扱ってると、嫌というほど
そういう状況に遭遇しますね。
Windows Server, Exchange, SQL Server, Office 365 あたりの
設計、構築、運用に携わってれば日常茶飯事です。
そういう仕事に携わるようになってから PowerShell を覚えた、って人が
多いと思ったけど、そうでもないのかな?プログラム板だから違うのかな?
439デフォルトの名無しさん
2020/06/22(月) 18:21:34.75ID:njZ7JPCW >>0438
君は正常。
君は正常。
440デフォルトの名無しさん
2020/06/24(水) 07:34:20.49ID:9MFoHisW コマンドプロンプトでバッチを作るとちょっとした自動化に便利というのを最近知って調べたら
今はPowerShellCoreが現行とたどり着いたが
やっぱり移行するしないで揉めてる
今はPowerShellCoreが現行とたどり着いたが
やっぱり移行するしないで揉めてる
441436
2020/06/24(水) 08:08:25.26ID:rM4tv+8j さすがに、バッチでプログラミングしてはいけない!
可読性が低すぎる
Ruby スクリプトなどを起動するだけにしておくべき
可読性が低すぎる
Ruby スクリプトなどを起動するだけにしておくべき
442デフォルトの名無しさん
2020/06/24(水) 08:40:10.38ID:L+v/qVAN >>440
用途・要件次第。
業務利用という前提だけど、自分だったらこういうポリシーで緩やかに移行する。
・既存の cmd バッチや WSF、VBS → 基本的には移行(移植)しない
※例外:改修が必要になった場合は個別対応
・新規 → 基本的には PowerShell で作るべき
※例外:極々単純なもの、自分だけが使い捨てするもの
用途・要件次第。
業務利用という前提だけど、自分だったらこういうポリシーで緩やかに移行する。
・既存の cmd バッチや WSF、VBS → 基本的には移行(移植)しない
※例外:改修が必要になった場合は個別対応
・新規 → 基本的には PowerShell で作るべき
※例外:極々単純なもの、自分だけが使い捨てするもの
443デフォルトの名無しさん
2020/06/24(水) 08:44:24.27ID:/txx2vwO 可読性w
可読性に煩いやつ程低レベルだよね
三項演算子とか
可読性に煩いやつ程低レベルだよね
三項演算子とか
444デフォルトの名無しさん
2020/06/24(水) 09:05:28.99ID:W7e3ICMc >>441
お前はRuby禁止のスレでRubyでは〜Rubyでは〜とやるのをやめろ。ノイズにしかならない糞レスはスレの可読性を下げるだけだ。
お前はRuby禁止のスレでRubyでは〜Rubyでは〜とやるのをやめろ。ノイズにしかならない糞レスはスレの可読性を下げるだけだ。
445デフォルトの名無しさん
2020/06/24(水) 09:51:09.11ID:LpqCs0qI 440で思い出したけど、powershell coreって今どうなってるんや
自分は実行環境としては5.1をメインで使ってるけど、みんなどこら辺なんや
自分は実行環境としては5.1をメインで使ってるけど、みんなどこら辺なんや
446デフォルトの名無しさん
2020/06/24(水) 10:09:13.32ID:wIzfCOgT win10プレインストールしか使っとらんわ
というかツール勝手に入れられない客先環境で戦うためのツールって認識
というかツール勝手に入れられない客先環境で戦うためのツールって認識
447デフォルトの名無しさん
2020/06/24(水) 10:48:39.06ID:oYgVDO6A >>446
> ツール勝手に入れられない客先環境で戦うためのツール
ほんそれ。
いまメインでやってる案件だと、お客さんから貸与されてる作業用 PC があって、
お客さんの環境にはそのマシンしか繋げられない。もちろん、世に数多とある便利ツールを
好き勝手に入れることは出来ない。
でも PowerCLI などの PowerShell モジュールのインストールは純正管理ツール扱いで
許可されてるので、構築とか保守作業では PowerShell スクリプトを使いまくってる。
いちいちマウスでカッチンカッチンやってたら、日が暮れちゃうからね・・・。
> ツール勝手に入れられない客先環境で戦うためのツール
ほんそれ。
いまメインでやってる案件だと、お客さんから貸与されてる作業用 PC があって、
お客さんの環境にはそのマシンしか繋げられない。もちろん、世に数多とある便利ツールを
好き勝手に入れることは出来ない。
でも PowerCLI などの PowerShell モジュールのインストールは純正管理ツール扱いで
許可されてるので、構築とか保守作業では PowerShell スクリプトを使いまくってる。
いちいちマウスでカッチンカッチンやってたら、日が暮れちゃうからね・・・。
448デフォルトの名無しさん
2020/06/24(水) 12:17:32.10ID:9MFoHisW449デフォルトの名無しさん
2020/06/24(水) 21:01:47.98ID:jVaXlMW4 scriptblock[] を受け取って、scriptblockをそれぞれスレッドで動かして
パイプでつないで実行するfunctionを書きたいんだがうまく書けない
ようするに
$s = [datetime]::Now
1 .. 10 |
% { sleep 1; ">$_" } |
% { sleep 1; ">$_" } |
% { sleep 1; ">{0} {1} " -f $_, ([datetime]::Now - $s).TotalSeconds }
を実行すると
>>>1 3.1179897
>>>2 6.1354357
>>>3 9.1403334
>>>4 12.1434852
と3秒間隔で結果が出るんで
$s = [datetime]::Now
threadedpipe @( { 1 .. 10 },
{ % { sleep 1; ">$_" } },
{ % { sleep 1; ">$_" } },
{ % { sleep 1; ">{0} {1} " -f $_, ([datetime]::Now - $using:s).TotalSeconds }})
みたいに書いて、最初が3秒目で1秒間隔で結果出力したい
いろいろ試して諦めたんだが、そもそもPowerShellではこういうfunctionは書けないの?
パイプでつないで実行するfunctionを書きたいんだがうまく書けない
ようするに
$s = [datetime]::Now
1 .. 10 |
% { sleep 1; ">$_" } |
% { sleep 1; ">$_" } |
% { sleep 1; ">{0} {1} " -f $_, ([datetime]::Now - $s).TotalSeconds }
を実行すると
>>>1 3.1179897
>>>2 6.1354357
>>>3 9.1403334
>>>4 12.1434852
と3秒間隔で結果が出るんで
$s = [datetime]::Now
threadedpipe @( { 1 .. 10 },
{ % { sleep 1; ">$_" } },
{ % { sleep 1; ">$_" } },
{ % { sleep 1; ">{0} {1} " -f $_, ([datetime]::Now - $using:s).TotalSeconds }})
みたいに書いて、最初が3秒目で1秒間隔で結果出力したい
いろいろ試して諦めたんだが、そもそもPowerShellではこういうfunctionは書けないの?
450デフォルトの名無しさん
2020/06/24(水) 22:06:24.12ID:VGKuFIs7 powershellのコマンドはプロセス作らないから無理じゃね
マルチスレッドをそんなお手軽に制御できたら夢みたいだけど
マルチスレッドをそんなお手軽に制御できたら夢みたいだけど
451デフォルトの名無しさん
2020/06/25(木) 00:26:33.50ID:GAspYPHa あれでもForeach-object あたりにparallelこなかったっけ
452デフォルトの名無しさん
2020/06/25(木) 00:40:28.26ID:BtDpxRK3 並列に動かすってことは普通にやれば1秒間隔じゃなくてほぼ同時に出力されることになる
どういう意図なのかはわからないけど無理やりやるんなら入力側で一秒ずつ待ってやるか
$sw = [Diagnostics.Stopwatch]::StartNew()
1..10
| % { ">$_"; sleep 1 }
| % -pa { sleep 1; ">$_" }
| % -pa { sleep 1; ">$_" }
| % { "{0} {1:F2} " -f $_, $sw.Elapsed.TotalSeconds }
もしくは出力側で一秒ずつ待ってやるか
1..10
| % -pa { sleep 1; ">$_" }
| % -pa { sleep 1; ">$_" }
| % { sleep 1; "{0} {1:F2} " -f $_, $sw.Elapsed.TotalSeconds }
どういう意図なのかはわからないけど無理やりやるんなら入力側で一秒ずつ待ってやるか
$sw = [Diagnostics.Stopwatch]::StartNew()
1..10
| % { ">$_"; sleep 1 }
| % -pa { sleep 1; ">$_" }
| % -pa { sleep 1; ">$_" }
| % { "{0} {1:F2} " -f $_, $sw.Elapsed.TotalSeconds }
もしくは出力側で一秒ずつ待ってやるか
1..10
| % -pa { sleep 1; ">$_" }
| % -pa { sleep 1; ">$_" }
| % { sleep 1; "{0} {1:F2} " -f $_, $sw.Elapsed.TotalSeconds }
453デフォルトの名無しさん
2020/06/25(木) 00:44:41.05ID:LTqYJW83 シェルスクリプトみたいに各プロセスが並列的に流れてくるテキストを処理して…
みたいのをやりたいのかなと推測してる
みたいのをやりたいのかなと推測してる
454デフォルトの名無しさん
2020/06/25(木) 08:46:34.24ID:L3VdfOGw そうそうそういうこと
イメージとしては https://ja.wikipedia.org/wiki/命令パイプライン
パイプラインのステージごとに1スレッド起動して全データで使いまわしたい
4ステージのパイプラインなら4スレッドで動かす
ForEach-Object の -Parallel はデータごとにスレッドを起動するから別物
スレッドプールで使いまわすにしてもちょっと違う
ちなみに sleep させてるけど時間がかかる処理の代用ね
イメージとしては https://ja.wikipedia.org/wiki/命令パイプライン
パイプラインのステージごとに1スレッド起動して全データで使いまわしたい
4ステージのパイプラインなら4スレッドで動かす
ForEach-Object の -Parallel はデータごとにスレッドを起動するから別物
スレッドプールで使いまわすにしてもちょっと違う
ちなみに sleep させてるけど時間がかかる処理の代用ね
455デフォルトの名無しさん
2020/06/25(木) 08:53:56.13ID:L3VdfOGw こっちの方がイメージが近いかも
https://ja.wikipedia.org/wiki/パイプ_(コンピュータ)
https://ja.wikipedia.org/wiki/パイプ_(コンピュータ)
456デフォルトの名無しさん
2020/06/25(木) 09:37:48.10ID:piKX+XZq 普通にワンライナー諦めれば次の作業にすすめるんじゃない?
457デフォルトの名無しさん
2020/06/25(木) 09:50:30.28ID:L3VdfOGw ワンライナーなんか関係ないんだけど
原理は >>416 にあるから、それを簡単に実現できるように
function threadedpipe { param([scriptblock[]] $sbs)
を書きたいと言ってる
原理は >>416 にあるから、それを簡単に実現できるように
function threadedpipe { param([scriptblock[]] $sbs)
を書きたいと言ってる
458デフォルトの名無しさん
2020/06/25(木) 09:56:30.77ID:1+fg5ofc あぁまたこいつだったか
459デフォルトの名無しさん
2020/06/25(木) 10:49:27.00ID:dZiolc11 >パイプラインのステージごとに1スレッド起動して全データで使いまわしたい
これが根本的に間違ってるだろ。
パイプで連結するってことは、前後(依存)関係があるってことで、それぞれをスレッド分割したところで全く意味がない。
これが根本的に間違ってるだろ。
パイプで連結するってことは、前後(依存)関係があるってことで、それぞれをスレッド分割したところで全く意味がない。
460デフォルトの名無しさん
2020/06/25(木) 11:16:02.92ID:L3VdfOGw 何言ってんの?
パイプラインってものをわかってない
これスクリプトファイルにして試してみ
function recvdata { foreach ($i in 1 .. 10) { sleep 1; $i }}
filter mul10 { sleep 1; $_ * 10 }
filter add1 { sleep 1; $_ + 1 }
filter fmtresult { "{0} {1}" -f $_, ([datetime]::Now - $script:s).TotalSeconds }
"スレッドなし"
$s = [datetime]::Now
recvdata | mul10 | add1 | fmtresult
"ステージごとに別スレッド"
$s = [datetime]::Now
Start-ThreadJob {
filter add1 { sleep 1; $_ + 1 }
Start-ThreadJob {
filter mul10 { sleep 1; $_ * 10 }
Start-ThreadJob {
function recvdata { foreach ($i in 1 .. 10) { sleep 1; $i }}
recvdata
} | Receive-Job -Wait -AutoRemoveJob | mul10
} | Receive-Job -Wait -AutoRemoveJob | add1
} | Receive-Job -Wait -AutoRemoveJob | fmtresult
パイプラインってものをわかってない
これスクリプトファイルにして試してみ
function recvdata { foreach ($i in 1 .. 10) { sleep 1; $i }}
filter mul10 { sleep 1; $_ * 10 }
filter add1 { sleep 1; $_ + 1 }
filter fmtresult { "{0} {1}" -f $_, ([datetime]::Now - $script:s).TotalSeconds }
"スレッドなし"
$s = [datetime]::Now
recvdata | mul10 | add1 | fmtresult
"ステージごとに別スレッド"
$s = [datetime]::Now
Start-ThreadJob {
filter add1 { sleep 1; $_ + 1 }
Start-ThreadJob {
filter mul10 { sleep 1; $_ * 10 }
Start-ThreadJob {
function recvdata { foreach ($i in 1 .. 10) { sleep 1; $i }}
recvdata
} | Receive-Job -Wait -AutoRemoveJob | mul10
} | Receive-Job -Wait -AutoRemoveJob | add1
} | Receive-Job -Wait -AutoRemoveJob | fmtresult
461デフォルトの名無しさん
2020/06/25(木) 11:35:16.74ID:emOdy//g きたない
462デフォルトの名無しさん
2020/06/25(木) 11:41:54.06ID:L3VdfOGw んだからfunction threadedpipeを作って見やすくしたいっつってんだろ
463デフォルトの名無しさん
2020/06/25(木) 12:35:03.44ID:WfI766VN そこじゃないだろ
464デフォルトの名無しさん
2020/06/25(木) 13:13:44.27ID:sZY/v5D+465デフォルトの名無しさん
2020/06/25(木) 16:37:26.69ID:MV6c2Qez なにけんけんしてんの?
466デフォルトの名無しさん
2020/06/25(木) 20:19:35.75ID:hxSOAVLp467デフォルトの名無しさん
2020/06/25(木) 21:11:04.72ID:L3VdfOGw いまだにこんな見当違いを目にしてびっくり
試せるように >>460 を書いたのに試してないのかな
Start-ThreadJobが使えない環境なら、代わりにStart-Jobを使っても動くぞ
スレッドとジョブの起動速度差で少し遅いけどちゃんと動くから試してみろよ
というわけで、動作することはちゃんと確認できてる
俺が聞いたのは、>>460 みたいにごちゃごちゃ書くのが面倒だから
threadedpipe @({recvdata}, {mul10}, {add1}, {fmtresult})
のように書けるような function threadedpipe が作れるかどうかなの
まあ制約付きで一応できたんだけど
試せるように >>460 を書いたのに試してないのかな
Start-ThreadJobが使えない環境なら、代わりにStart-Jobを使っても動くぞ
スレッドとジョブの起動速度差で少し遅いけどちゃんと動くから試してみろよ
というわけで、動作することはちゃんと確認できてる
俺が聞いたのは、>>460 みたいにごちゃごちゃ書くのが面倒だから
threadedpipe @({recvdata}, {mul10}, {add1}, {fmtresult})
のように書けるような function threadedpipe が作れるかどうかなの
まあ制約付きで一応できたんだけど
468420
2020/06/25(木) 23:05:56.80ID:ZIjS4UcO とりとめもなく、推敲もなく適当に書き散らかしてごめんなさい
レスありがとうございます
理解して、Powershell組むのはかなり困難そうなので
Myコピペライブラリでも作って、理解しないでも組めるような
体制を作っていこうと思います
ありがとうございました。
ちなみにファイル作成は >>で用は足りました
レスありがとうございます
理解して、Powershell組むのはかなり困難そうなので
Myコピペライブラリでも作って、理解しないでも組めるような
体制を作っていこうと思います
ありがとうございました。
ちなみにファイル作成は >>で用は足りました
469デフォルトの名無しさん
2020/06/25(木) 23:48:32.33ID:GAspYPHa きたないコードで目的も意味不明
まさに自慰
まさに自慰
470デフォルトの名無しさん
2020/06/26(金) 01:13:06.63ID:UcUHbC3j 質問者より明らかにレベル低いのにイチャモンだけは一流だな
だまってろよお前は
だまってろよお前は
471デフォルトの名無しさん
2020/06/26(金) 05:47:21.88ID:ZKLfm8jC472デフォルトの名無しさん
2020/06/26(金) 06:30:47.02ID:uqHA56uo >>470
お前もだなw
お前もだなw
473デフォルトの名無しさん
2020/06/26(金) 07:02:56.31ID:rwBI62Tc ここがどうだとかじゃなくて、
汚いとかって言い方傷つくだろうが
汚いとかって言い方傷つくだろうが
474デフォルトの名無しさん
2020/06/26(金) 10:47:41.63ID:lJi08xny >>449
こんな感じ?
ただ動くだけのサンプル。エラー処理とかオブジェクトの後始末とか何もしていない。
function Invoke-ThreadedPipeline([ScriptBlock[]] $ScriptBlock) {
$p = $ScriptBlock | % {
$p = [RunspaceFactory]::CreateRunspace().CreatePipeline()
$p.Commands.AddScript($_)
$p.Runspace.Open(); $p.InvokeAsync()
$p
}
while ($p = @($p | ? {-not $_.Output.EndOfPipeline})) {
$i = [Threading.WaitHandle]::WaitAny(($p | % {$_.Output.WaitHandle}))
$o = $p[$i].Output.Read($p[$i].Output.Count)
if ($i -lt $p.Length - 1) {
$null = $p[$i + 1].Input.Write($o, $true)
if ($p[$i].Output.EndOfPipeline) {$p[$i + 1].Input.Close()}
}
else {
$o
}
}
}
$o = Get-Date
Invoke-ThreadedPipeline (
{1..10},
{process {Start-Sleep 1; ">$_"}},
{process {Start-Sleep 1; ">$_"}},
{process {Start-Sleep 1; ">$_"}}
) | % {'{0} : {1}' -f $_, (New-TimeSpan $o).TotalSeconds}
こんな感じ?
ただ動くだけのサンプル。エラー処理とかオブジェクトの後始末とか何もしていない。
function Invoke-ThreadedPipeline([ScriptBlock[]] $ScriptBlock) {
$p = $ScriptBlock | % {
$p = [RunspaceFactory]::CreateRunspace().CreatePipeline()
$p.Commands.AddScript($_)
$p.Runspace.Open(); $p.InvokeAsync()
$p
}
while ($p = @($p | ? {-not $_.Output.EndOfPipeline})) {
$i = [Threading.WaitHandle]::WaitAny(($p | % {$_.Output.WaitHandle}))
$o = $p[$i].Output.Read($p[$i].Output.Count)
if ($i -lt $p.Length - 1) {
$null = $p[$i + 1].Input.Write($o, $true)
if ($p[$i].Output.EndOfPipeline) {$p[$i + 1].Input.Close()}
}
else {
$o
}
}
}
$o = Get-Date
Invoke-ThreadedPipeline (
{1..10},
{process {Start-Sleep 1; ">$_"}},
{process {Start-Sleep 1; ">$_"}},
{process {Start-Sleep 1; ">$_"}}
) | % {'{0} : {1}' -f $_, (New-TimeSpan $o).TotalSeconds}
475474
2020/06/26(金) 10:49:06.76ID:lJi08xny スクリプトブロックのバインドとか、スコープとか、面倒な問題は見ないふり。
そもそも、PowerShell のスコープはスレッドセーフにはできていないので、
問題に対処するのは、ほとんど不可能なのかも。
そもそも、PowerShell のスコープはスレッドセーフにはできていないので、
問題に対処するのは、ほとんど不可能なのかも。
476デフォルトの名無しさん
2020/06/26(金) 12:23:31.85ID:hzH3p+iw IT掲示板群 ttp://x0000.net/forum.aspx?id=15
学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン(画像有り)
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0
PS malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip
学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン(画像有り)
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0
PS malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip
477デフォルトの名無しさん
2020/07/05(日) 04:12:29.94ID:sb7IOZLx 教えてください。
powershell.exeに
"powershell.exe"が見つかりません。名前を正しく入力したかどうかを確認してから、やり直してください。
ってダイアログが出て怒られるのだが、
これってどういうことですか?
powershell.exeに
"powershell.exe"が見つかりません。名前を正しく入力したかどうかを確認してから、やり直してください。
ってダイアログが出て怒られるのだが、
これってどういうことですか?
478デフォルトの名無しさん
2020/07/05(日) 08:19:48.13ID:EbIp5fqD479デフォルトの名無しさん
2020/07/05(日) 09:06:15.18ID:sb7IOZLx そうですねすみません。
Python3.6、Bazel 2.0.0、MSYS2、Visual C++ Build Tools 2019、WMF5.1、
CUDA toolkit 10.1、cuDNN 7.6を入れて、Tensorflow 2.2をビルド。
x64 Native Tools Command Prompt for VS 2019から、bazel buildでビルド中に、
「powershell.exeが見つかりません。〜」のダイアログが出る。ダイアログの左上はpowershell.exe。
放置すると最大4個出てビルトが一時停止するが、ダイアログの「OK」で閉じると再開する。しばらくすると、また出る。
PCは、
OS:Windows7pro sp1 x64
CPU:Core2Quad Q9550
GPU:Geforce GTX1650super
MEM:8G
Python3.6、Bazel 2.0.0、MSYS2、Visual C++ Build Tools 2019、WMF5.1、
CUDA toolkit 10.1、cuDNN 7.6を入れて、Tensorflow 2.2をビルド。
x64 Native Tools Command Prompt for VS 2019から、bazel buildでビルド中に、
「powershell.exeが見つかりません。〜」のダイアログが出る。ダイアログの左上はpowershell.exe。
放置すると最大4個出てビルトが一時停止するが、ダイアログの「OK」で閉じると再開する。しばらくすると、また出る。
PCは、
OS:Windows7pro sp1 x64
CPU:Core2Quad Q9550
GPU:Geforce GTX1650super
MEM:8G
480デフォルトの名無しさん
2020/07/05(日) 09:07:58.29ID:sb7IOZLx です。
何か気が付くところがあれば教えてください。
何か気が付くところがあれば教えてください。
481デフォルトの名無しさん
2020/07/06(月) 15:26:47.18ID:ENMHKR++ powershell.exeが見つからない。
だからこそ、poweshell.exeが見つからなくてはと思っている。
だからこそ、poweshell.exeが見つからなくてはと思っている。
482デフォルトの名無しさん
2020/07/06(月) 16:00:54.38ID:AV85qEaL はいすべった
483デフォルトの名無しさん
2020/07/06(月) 19:14:17.53ID:mGwQnOrU PATHが通ってないんじゃないの
サポート切れのWindows7を使い続けてて大丈夫か
サポート切れのWindows7を使い続けてて大丈夫か
484デフォルトの名無しさん
2020/07/06(月) 19:34:12.08ID:BdiDJNUx 建前上esuあるから必要な部署はそれ当てて使ってるよ
485デフォルトの名無しさん
2020/07/06(月) 20:54:49.43ID:zdAH+P0d win7だって(自分で削除しなけりゃ)普通にpathは通っているはずだけど
まあ確かめてみることだね
まあ確かめてみることだね
486デフォルトの名無しさん
2020/07/06(月) 20:56:13.29ID:0H1iFJXS ダイアログが出てる時にタスクの中にpowershell.exeがいませんでした。
誰が出しているのか追いかけてみます。
お騒がせしました。
誰が出しているのか追いかけてみます。
お騒がせしました。
487デフォルトの名無しさん
2020/07/06(月) 21:05:43.69ID:fLXZOc4N 32bit版 or 64bit版を探しにいってるんじゃないの?
488デフォルトの名無しさん
2020/07/07(火) 12:27:32.25ID:Csl+eNq2 Windows 10 なら、コマンドプロンプトで、
where powershell
と入力すると、
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
where powershell
と入力すると、
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
489デフォルトの名無しさん
2020/07/07(火) 21:09:26.46ID:IcFS4Epu whereは10だけじゃなくて7にも標準搭載されてる
98や2000ならリソースキットに含まれてる
98や2000ならリソースキットに含まれてる
490デフォルトの名無しさん
2020/07/11(土) 09:02:38.89ID:n9XGFFVi NuGetパッケージ使いたい時ってどうすれば使えんの
例えばSeleniumを使いたい場合C#なら
dotnet add package Selenium.WebDriver
これで使えるようになるけどPSの場合はどうすれば
例えばSeleniumを使いたい場合C#なら
dotnet add package Selenium.WebDriver
これで使えるようになるけどPSの場合はどうすれば
491デフォルトの名無しさん
2020/07/11(土) 21:53:51.85ID:I6xaQmI+ Make using NuGet packages installed with Install-Package easier to use - make Add-Type support NuGet packages
https://github.com/PowerShell/PowerShell/issues/6724
https://github.com/PowerShell/PowerShell/issues/6724
492デフォルトの名無しさん
2020/07/17(金) 09:19:06.55ID:6MuP2T5H493デフォルトの名無しさん
2020/07/24(金) 01:22:35.38ID:r0N61jeX 明治の「 おいしい牛乳 」ってあるけど
「 おいしい 」って自分で付けちゃうなんて
強気というかふてぶてしいよな?
「 PowerShell 」からも同じにおいがするぜ
「 おいしい 」って自分で付けちゃうなんて
強気というかふてぶてしいよな?
「 PowerShell 」からも同じにおいがするぜ
494デフォルトの名無しさん
2020/07/24(金) 01:48:02.23ID:UQ3TOH2s Apple & IBM「…」
495デフォルトの名無しさん
2020/07/24(金) 10:09:22.31ID:860vhoVN Powerこそ力
496デフォルトの名無しさん
2020/07/24(金) 10:37:13.71ID:56CkEgqB shellこそ貝殻!
497デフォルトの名無しさん
2020/07/24(金) 14:36:37.83ID:jOZb/2Gr 💪🐚
498デフォルトの名無しさん
2020/07/24(金) 14:40:35.13ID:30uJqngI powerpoint
力点?
力点?
499デフォルトの名無しさん
2020/08/05(水) 12:02:30.42ID:gYncIR+S500デフォルトの名無しさん
2020/08/13(木) 17:41:10.43ID:e4hfVbk2 ある値で、とあるファイルをgrep検索かけて
grepで引っかかったら 変数に0、grepで引っかからなかったら変数に1
ということをしたいのですが、どんな方法で実現できますでしょうか。
linux でいうとこういうものです
# cat hoge.txt | grep abc ←知りたいのはここ相当のもの
# echo $?
0 ←abcが引っかかった
#
# cat hoge.txt | grep abc ←知りたいのはここ相当のもの
# echo $?
1 ←abcが引っかからなかった
#
よろしくお願いいたします。
grepで引っかかったら 変数に0、grepで引っかからなかったら変数に1
ということをしたいのですが、どんな方法で実現できますでしょうか。
linux でいうとこういうものです
# cat hoge.txt | grep abc ←知りたいのはここ相当のもの
# echo $?
0 ←abcが引っかかった
#
# cat hoge.txt | grep abc ←知りたいのはここ相当のもの
# echo $?
1 ←abcが引っかからなかった
#
よろしくお願いいたします。
501デフォルトの名無しさん
2020/08/13(木) 18:00:29.06ID:3scCogHG $r = gc hoge.txt | sls abc
if ($r -ne $null) {
# 引っかかった & $rにはslsの結果
} else {
# 引っかからない
}
if ($r -ne $null) {
# 引っかかった & $rにはslsの結果
} else {
# 引っかからない
}
502デフォルトの名無しさん
2020/08/13(木) 18:07:53.30ID:e4hfVbk2 >>501
ありがとうございます!ばっちりです。
追加で申し訳ないんですけど、これを変数をgrep対象にして
戻り値を取得する事ってできますでしょうか?
> Write-Output $hoge
aaa ←こんな感じで複数行はいってる変数
bbb
ccc
ddd
eee
ffff
ありがとうございます!ばっちりです。
追加で申し訳ないんですけど、これを変数をgrep対象にして
戻り値を取得する事ってできますでしょうか?
> Write-Output $hoge
aaa ←こんな感じで複数行はいってる変数
bbb
ccc
ddd
eee
ffff
503デフォルトの名無しさん
2020/08/13(木) 18:56:58.07ID:3scCogHG $hoge | sls abcでいいんじゃね
504デフォルトの名無しさん
2020/08/13(木) 19:18:09.12ID:rGVB7rFL (cat hoge.txt) -as [string] -cmatch "abc"
とか?
TrueFalseになっちゃうけど
とか?
TrueFalseになっちゃうけど
505デフォルトの名無しさん
2020/08/13(木) 20:45:21.78ID:hEr1UF+A ふつーはifに直接つっこむ
if (Select-String abc hoge.txt -CaseSensitive -Quiet) {
if ($hoge | Select-String abc -CaseSensitive -Quiet) {
if (Select-String abc hoge.txt -CaseSensitive -Quiet) {
if ($hoge | Select-String abc -CaseSensitive -Quiet) {
506デフォルトの名無しさん
2020/08/13(木) 21:13:55.51ID:takIe+yE507デフォルトの名無しさん
2020/08/13(木) 22:02:49.13ID:hEr1UF+A 巨大ファイルを全部なめたいの?
508デフォルトの名無しさん
2020/08/14(金) 05:21:16.78ID:SCMnTycc 漏れは、Windows 10, WSL, Ubuntu 18.04 を入れているから、
grep は、Linux 側でやるか、Ruby などを使う
Windows側のPowerShell などでは、やらない。
複雑なスクリプトは、Linux側のRubyでやる
grep は、Linux 側でやるか、Ruby などを使う
Windows側のPowerShell などでは、やらない。
複雑なスクリプトは、Linux側のRubyでやる
509デフォルトの名無しさん
2020/08/14(金) 07:16:55.02ID:fFUBtJk9510デフォルトの名無しさん
2020/08/14(金) 08:15:51.24ID:beR79RQl 推奨 NG ワード:
Ruby
漏れ
Ruby
漏れ
511デフォルトの名無しさん
2020/08/14(金) 23:17:26.92ID:SCMnTycc >>502
Linux のgrep なら、
AND 検索、パイプで
grep -i 単語1 ./* | grep -i 単語2
OR 検索、-e で
grep -i -e 単語1 -e 単語2 ./*
途中で改行しても、同じ
grep -i "単語1
単語2" ./*
Linux のgrep なら、
AND 検索、パイプで
grep -i 単語1 ./* | grep -i 単語2
OR 検索、-e で
grep -i -e 単語1 -e 単語2 ./*
途中で改行しても、同じ
grep -i "単語1
単語2" ./*
512デフォルトの名無しさん
2020/08/15(土) 16:13:38.92ID:qyy6aN9C >>509
-eqの配列フィルタのことだと思うけどgcやslsは$nullを含む配列は返さないから問題ない
-eqの配列フィルタのことだと思うけどgcやslsは$nullを含む配列は返さないから問題ない
513デフォルトの名無しさん
2020/08/24(月) 20:47:25.66ID:VQq4kdHe514デフォルトの名無しさん
2020/08/25(火) 20:56:27.18ID:+ct4ya2Y GitHubのPreviewとどう違うのかと思ったら、アイコンが違うな
なんか気持ち悪い色になってる
なんか気持ち悪い色になってる
515デフォルトの名無しさん
2020/08/25(火) 22:59:28.31ID:SeBJUZXv powershellスクリプトで高DPI対応をしたいのですが、可能でしょうか?
やりたい事は高DPI環境で画面キャプチャを取ることですが、
スケーリングに応じて実際の解像度より小さい値が画面サイズとして返ってきてしまいます。
SetProcessDPIAware()を最初に呼んでも効果がありませんでした。
普通のアプリのようにEXEにmanifestファイルを埋め込むこともできないので無理でしょうか?
やりたい事は高DPI環境で画面キャプチャを取ることですが、
スケーリングに応じて実際の解像度より小さい値が画面サイズとして返ってきてしまいます。
SetProcessDPIAware()を最初に呼んでも効果がありませんでした。
普通のアプリのようにEXEにmanifestファイルを埋め込むこともできないので無理でしょうか?
516デフォルトの名無しさん
2020/08/29(土) 13:02:51.79ID:z6uRv8YY 使ってるエクセルアドインのアプデが不定期に入るんだけど、
その時はエクセルを閉じなきゃいけないので、エクセルVBAでアプデ処理できない
なのでVBSでセンドキーしてたんだけど、APIなら画面ロック状態でもOKと
でも素のVBSでAPIを使うには、エクセルを呼び出すと(エクセル4マクロ)
お、パワーシェルはAPIが使えるスクリプトか、やっと使う時が来た
ググると MessageBox のサンプルはあるものの、肝心の FindWindow と PostMessage のサンプルがない
MessageBox なんかどんなバッチで使うんだと
適当に書いてみたら、しれっとウィンドウハンドル0で沈黙
ググったら、管理権限がどうとかいう話もあり、それ以上は調べてないけどハマり警戒で断念
その話がほんとだとすると、サードパーティー製のアドインを起動してる標準ユーザーに管理権限を持たせるわけにいかない(スパイ警戒)
お、ワードにもVBAあるじゃんかで普通に解決w
VBA最強w
バッチはVBAとDOSが安定
ドキュメントを持たないVBAのみのスクリプト、「VBAS」をリリースした方が良かったんじゃないかね
(パスワードの暗号化だけパワーシェル使ってるが)
もっと言うと、VBAでドットネットコンポーネントを呼べるようにするとか(呼べる?)
んでパワーシェルはわざわざ長い名前のドットネットコンポーネントを呼び出してセンドキーのサンプルばかり
センドキーならVBAでもVBSでもいいじゃんていう
名前も短いし
その時はエクセルを閉じなきゃいけないので、エクセルVBAでアプデ処理できない
なのでVBSでセンドキーしてたんだけど、APIなら画面ロック状態でもOKと
でも素のVBSでAPIを使うには、エクセルを呼び出すと(エクセル4マクロ)
お、パワーシェルはAPIが使えるスクリプトか、やっと使う時が来た
ググると MessageBox のサンプルはあるものの、肝心の FindWindow と PostMessage のサンプルがない
MessageBox なんかどんなバッチで使うんだと
適当に書いてみたら、しれっとウィンドウハンドル0で沈黙
ググったら、管理権限がどうとかいう話もあり、それ以上は調べてないけどハマり警戒で断念
その話がほんとだとすると、サードパーティー製のアドインを起動してる標準ユーザーに管理権限を持たせるわけにいかない(スパイ警戒)
お、ワードにもVBAあるじゃんかで普通に解決w
VBA最強w
バッチはVBAとDOSが安定
ドキュメントを持たないVBAのみのスクリプト、「VBAS」をリリースした方が良かったんじゃないかね
(パスワードの暗号化だけパワーシェル使ってるが)
もっと言うと、VBAでドットネットコンポーネントを呼べるようにするとか(呼べる?)
んでパワーシェルはわざわざ長い名前のドットネットコンポーネントを呼び出してセンドキーのサンプルばかり
センドキーならVBAでもVBSでもいいじゃんていう
名前も短いし
517デフォルトの名無しさん
2020/08/29(土) 13:37:55.53ID:z6uRv8YY 関係ないけどアクセス権て、最重要が情報漏洩、つまり読み取り権限であって、インストール権限なんかどうでもいいんだよな
ソフトなんか他社製だし秘密でもなんでもない
壊れても、再インストールするだけ
ソフトなんか他社製だし秘密でもなんでもない
壊れても、再インストールするだけ
518デフォルトの名無しさん
2020/08/29(土) 13:53:57.66ID:z6uRv8YY ていうか WindowsUpdate や OfficeUpdate がまさにその考え方だよね
最新化は自動であるべきで権限は不要
Officeのアドインもそうあるべき
初回だけ許可が必要で、アプデは自動
最新化は自動であるべきで権限は不要
Officeのアドインもそうあるべき
初回だけ許可が必要で、アプデは自動
519デフォルトの名無しさん
2020/08/29(土) 16:26:04.73ID:BYm68LqT ID:z6uRv8YY
スレ住民に言いたいこと・聞きたいことがあるのであれば、もう少し簡潔に書いてもらえませんか?
あと、2〜3行ならともかく >>516 ぐらいのボリュームで書くなら、読点だけじゃなく句点も省略しないほうが良いですよね。正直、読みづらい。
申し訳ないのですが、斜め読みすら断念しました。
スレ住民に言いたいこと・聞きたいことがあるのであれば、もう少し簡潔に書いてもらえませんか?
あと、2〜3行ならともかく >>516 ぐらいのボリュームで書くなら、読点だけじゃなく句点も省略しないほうが良いですよね。正直、読みづらい。
申し訳ないのですが、斜め読みすら断念しました。
520デフォルトの名無しさん
2020/08/29(土) 17:29:18.45ID:uW7NzDft521デフォルトの名無しさん
2020/08/29(土) 21:29:35.58ID:2f/XylsB スタートメニューを右クリックしたら、
一般ユーザー用・管理者用の、2種類のPowerShell がある
コードも管理者用では、ExecutionPolicy だったか忘れたけど、特別な書き方がある
一般ユーザー用・管理者用の、2種類のPowerShell がある
コードも管理者用では、ExecutionPolicy だったか忘れたけど、特別な書き方がある
522デフォルトの名無しさん
2020/08/30(日) 10:18:34.85ID:j2JU6h3h >>520
セキュリティの基本が分かってないのはマイクロソフト
マイクロソフトはメーカーだからシステムを守ることをセキュリティと勘違いしてる
守るべきはユーザーの持つ秘密情報
プログラムが改変されようとも、最終的にそのユーザーコンテキストで読めてはいけないデータにアクセスできなければよい
プログラムは壊れても再インストールできるが、情報漏洩は回復できない
セキュリティの基本が分かってないのはマイクロソフト
マイクロソフトはメーカーだからシステムを守ることをセキュリティと勘違いしてる
守るべきはユーザーの持つ秘密情報
プログラムが改変されようとも、最終的にそのユーザーコンテキストで読めてはいけないデータにアクセスできなければよい
プログラムは壊れても再インストールできるが、情報漏洩は回復できない
523デフォルトの名無しさん
2020/08/30(日) 10:21:08.45ID:j2JU6h3h 相変わらず、無内容の人格攻撃文化
腐ってんね
腐ってんね
524デフォルトの名無しさん
2020/08/30(日) 11:22:28.54ID:roK+ZKVb525デフォルトの名無しさん
2020/08/30(日) 11:25:22.99ID:6EFwsuE9 >>523
自分の無理解を棚上げしてスレ違いでむやみにあちこち叩くの辞めた方が良いよ
人に教えを請う立場の書き込みにはとても見えない
PSスクリプトの実行に必要なのは監理者権限ではなく適切な実行ポリシーの設定
これだけ教えてあげたんだからもうここには書き込まず一人で調べてね
自分の無理解を棚上げしてスレ違いでむやみにあちこち叩くの辞めた方が良いよ
人に教えを請う立場の書き込みにはとても見えない
PSスクリプトの実行に必要なのは監理者権限ではなく適切な実行ポリシーの設定
これだけ教えてあげたんだからもうここには書き込まず一人で調べてね
526デフォルトの名無しさん
2020/08/30(日) 13:47:22.04ID:e/T9q/5N 昔からマイクロソフトをdisって一人前面する技術者は一定数いた
527デフォルトの名無しさん
2020/08/30(日) 14:37:48.96ID:Y6JzX6tf 「Microsoftのバグ」との戦い
https://xtech.nikkei.com/it/article/COLUMN/20080819/312956/
https://xtech.nikkei.com/it/article/COLUMN/20080819/312956/
528デフォルトの名無しさん
2020/08/30(日) 15:57:42.01ID:PraMtyj1 >>526
M$とか書く奴おるねw
M$とか書く奴おるねw
529デフォルトの名無しさん
2020/08/30(日) 17:34:08.47ID:6ShNfOXb >>521
管理者権限じゃないと実行出来ないコマンドを使う時用くらいの認識しかなかったわ
管理者権限じゃないと実行出来ないコマンドを使う時用くらいの認識しかなかったわ
530デフォルトの名無しさん
2020/08/30(日) 21:51:36.19ID:g5q4aE3p Microsoftは「製品の問題点」と「仕様」を最初に明確にするので、それも批判されてたよね。
Linuxの場合、サポートを提供するベンダーで「バグと仕様を明確にできる」のはRedhatくらい。
その他のベンダーは明確にすることが出来ない。
Kernel作ってるのは他人だから。
「仕様として今後も維持される動作」か「バグとして修正される動作」か即座に知ることが出来るのは、待たずに作業を続けられるので、とても良いことのように感じるけど、実際は批判が多い。
Linuxの場合、サポートを提供するベンダーで「バグと仕様を明確にできる」のはRedhatくらい。
その他のベンダーは明確にすることが出来ない。
Kernel作ってるのは他人だから。
「仕様として今後も維持される動作」か「バグとして修正される動作」か即座に知ることが出来るのは、待たずに作業を続けられるので、とても良いことのように感じるけど、実際は批判が多い。
531デフォルトの名無しさん
2020/08/31(月) 01:56:18.43ID:Sr2UUXBk ついに公務員の副業が解禁される時代が到来した
https://hybridstyle.net/side-job065/
フリーランス市場規模が20兆円を突破 -副業は8兆円-
https://hybridstyle.net/work-style020/
時代は週休3日制へ【週休3日制導入企業まとめ】
https://hybridstyle.net/work-style016/
会社員の副業が急増、副業フリーランス4年で3倍、経済規模は約8兆円??副業収入は平均74万円
https://www.businessinsider.jp/post-165077#cxrecs_s
本業のストレス解消、副業で月70万、転職のお試し…会社に内緒で副業する人たちの本音
https://www.businessinsider.jp/post-176835#cxrecs_s
どんな仕事でいくら稼いでいる? 副業をしている13人に聞いたそのリアル
https://www.businessinsider.jp/post-180772#cxrecs_s
会社が個人を縛り付ける時代は終わった。これからは、個人が仕事を求めて、チャンネルのように会社を切り替えていく。
https://www.wantedly.com/companies/newpeace/post_articles/65530
誰も教えてくれなかった「フリーランスは厳しい」ではなく「甘い」という真実。
https://www.wantedly.com/companies/newpeace/post_articles/54124
【特集】年収1000万円以上「フリーランスの流儀」vol.2
https://tabi-labo.com/286733/journey-six-figure-freelance-nathan
「排出物ゼロ、廃棄物ゼロ、貧困ゼロ」究極のエコ・リゾートがフィリピンに
https://tabi-labo.com/284193/nautilus-eco-resort
仕事は9割外注すれば売り上げが爆増する
https://headlines.yahoo.co.jp/article?a=20190416-00028392-president-bus_all
https://hybridstyle.net/side-job065/
フリーランス市場規模が20兆円を突破 -副業は8兆円-
https://hybridstyle.net/work-style020/
時代は週休3日制へ【週休3日制導入企業まとめ】
https://hybridstyle.net/work-style016/
会社員の副業が急増、副業フリーランス4年で3倍、経済規模は約8兆円??副業収入は平均74万円
https://www.businessinsider.jp/post-165077#cxrecs_s
本業のストレス解消、副業で月70万、転職のお試し…会社に内緒で副業する人たちの本音
https://www.businessinsider.jp/post-176835#cxrecs_s
どんな仕事でいくら稼いでいる? 副業をしている13人に聞いたそのリアル
https://www.businessinsider.jp/post-180772#cxrecs_s
会社が個人を縛り付ける時代は終わった。これからは、個人が仕事を求めて、チャンネルのように会社を切り替えていく。
https://www.wantedly.com/companies/newpeace/post_articles/65530
誰も教えてくれなかった「フリーランスは厳しい」ではなく「甘い」という真実。
https://www.wantedly.com/companies/newpeace/post_articles/54124
【特集】年収1000万円以上「フリーランスの流儀」vol.2
https://tabi-labo.com/286733/journey-six-figure-freelance-nathan
「排出物ゼロ、廃棄物ゼロ、貧困ゼロ」究極のエコ・リゾートがフィリピンに
https://tabi-labo.com/284193/nautilus-eco-resort
仕事は9割外注すれば売り上げが爆増する
https://headlines.yahoo.co.jp/article?a=20190416-00028392-president-bus_all
532デフォルトの名無しさん
2020/09/01(火) 22:23:09.69ID:cXm81OcM533デフォルトの名無しさん
2020/09/01(火) 22:34:51.67ID:mz7Z6faK >>532
「MS は基本がなってない!MS よりも、俺のほうが正しいぞ!」
の次は
「俺は教えを請う立場じゃない」
ですか。Ruby厨に次次ぐ逸材が登場ですね。
で、あなた様はどんなバックグラウンドを持つお方で、これまでどんなことを成してきた方なのですか?
「MS は基本がなってない!MS よりも、俺のほうが正しいぞ!」
の次は
「俺は教えを請う立場じゃない」
ですか。Ruby厨に次次ぐ逸材が登場ですね。
で、あなた様はどんなバックグラウンドを持つお方で、これまでどんなことを成してきた方なのですか?
534デフォルトの名無しさん
2020/09/01(火) 22:57:48.88ID:XzhpNrm1 >>532
そんなのここじゃなくてTwitterにでも書いてろよ
そんなのここじゃなくてTwitterにでも書いてろよ
535デフォルトの名無しさん
2020/09/01(火) 23:15:36.13ID:cXm81OcM >>524
ところで
建物でいうと、プログラムは家電等の快適装備
ユーザー情報は金庫
A.家電の設置
B.金庫の開錠
どっちがセキュリティレベル上かね?
どうも(MSというより)メーカーは、Aを最高権限と考えてる様子
(コンピューターでは物理的に、金庫機能も家電の1つに過ぎないからだろうけど)
ボタンをユーザーが押したからなんなのか
コンビニの年齢確認と同じで、何を確認したのか
ダイアログでベンダーを確認したか?
リアルな名称のダイアログなんか簡単に作れる(続く)
ところで
建物でいうと、プログラムは家電等の快適装備
ユーザー情報は金庫
A.家電の設置
B.金庫の開錠
どっちがセキュリティレベル上かね?
どうも(MSというより)メーカーは、Aを最高権限と考えてる様子
(コンピューターでは物理的に、金庫機能も家電の1つに過ぎないからだろうけど)
ボタンをユーザーが押したからなんなのか
コンビニの年齢確認と同じで、何を確認したのか
ダイアログでベンダーを確認したか?
リアルな名称のダイアログなんか簡単に作れる(続く)
536デフォルトの名無しさん
2020/09/01(火) 23:15:52.09ID:cXm81OcM >>524
(続き)
たとえ本物でも、ベンダーに悪意がないことをどうやって確認するのか
まして国が株価操縦してるモラル破壊な社会、大企業だからって信用できない
そこで
A.保護ユーザー(管理者)
B.実行ユーザー(標準)
こう分け、Bでベンダーソフトを実行すれば、Aの機密情報を読めない
と思いきや、アプデ時に昇格ボタンを押してしまうと、なんでも読める権限で実行される
ボタンをユーザーが押そうがバッチで押そうが同じ
全くセキュリティになってない
ならば、あえてBを管理者にし、B自身のコンテキストでアプデさせる
Aのフォルダから「Administrators」を外しておけば、
インストール権限がありながら、Aの機密情報を読めない、はず
(この時、所有権や偽装でUACが反応しない状態なら、
その特権からも「Administrators」を外し、かわりにAを設定しておく)
(続き)
たとえ本物でも、ベンダーに悪意がないことをどうやって確認するのか
まして国が株価操縦してるモラル破壊な社会、大企業だからって信用できない
そこで
A.保護ユーザー(管理者)
B.実行ユーザー(標準)
こう分け、Bでベンダーソフトを実行すれば、Aの機密情報を読めない
と思いきや、アプデ時に昇格ボタンを押してしまうと、なんでも読める権限で実行される
ボタンをユーザーが押そうがバッチで押そうが同じ
全くセキュリティになってない
ならば、あえてBを管理者にし、B自身のコンテキストでアプデさせる
Aのフォルダから「Administrators」を外しておけば、
インストール権限がありながら、Aの機密情報を読めない、はず
(この時、所有権や偽装でUACが反応しない状態なら、
その特権からも「Administrators」を外し、かわりにAを設定しておく)
537デフォルトの名無しさん
2020/09/01(火) 23:16:32.08ID:cXm81OcM >>524
くしくも偶然一部を書いてたが
http://mevius.5ch.net/test/read.cgi/tech/1451927425/876-877
さらに言うと、複数の権限があり、ケルベロスによってサーバー機能による高速取込までユーザーコンテキストを通したシステム
ユーザー問合せに即時対応するため、操作ログも一元管理される
操作ログは全ユーザーに追加権限だけがあり、閲覧はシステム権限が必要
アクセス権はテーブル自身にあり、どのようなルートからも突破不可能
行政手続に係る深いプライバシーを大量に扱うので、情報漏洩が命取りになる企業
しかし、そういう別件逮捕のようなことを、「人格攻撃」と言う
別件が議論に関係してはならない
それにプライバシー侵害は「誹謗中傷」の要件の一つ
@嘘(無根拠な憶測)、Aプライバシーの侵害、B人格攻撃、「誹謗中傷」の3要件を全部兼ね備えるというw
で、お前は何をしたのか
こっちは人格攻撃気質じゃないので、当然興味ないが
くしくも偶然一部を書いてたが
http://mevius.5ch.net/test/read.cgi/tech/1451927425/876-877
さらに言うと、複数の権限があり、ケルベロスによってサーバー機能による高速取込までユーザーコンテキストを通したシステム
ユーザー問合せに即時対応するため、操作ログも一元管理される
操作ログは全ユーザーに追加権限だけがあり、閲覧はシステム権限が必要
アクセス権はテーブル自身にあり、どのようなルートからも突破不可能
行政手続に係る深いプライバシーを大量に扱うので、情報漏洩が命取りになる企業
しかし、そういう別件逮捕のようなことを、「人格攻撃」と言う
別件が議論に関係してはならない
それにプライバシー侵害は「誹謗中傷」の要件の一つ
@嘘(無根拠な憶測)、Aプライバシーの侵害、B人格攻撃、「誹謗中傷」の3要件を全部兼ね備えるというw
で、お前は何をしたのか
こっちは人格攻撃気質じゃないので、当然興味ないが
538デフォルトの名無しさん
2020/09/01(火) 23:29:07.92ID:XzhpNrm1539デフォルトの名無しさん
2020/09/04(金) 06:56:56.59ID:BT/SeEq8 客先も何も自社もポリシー変更できないからバッチは実行できないわ
簡単なファイル操作とかも.batでやることになってる
Powershellに移行できない
簡単なファイル操作とかも.batでやることになってる
Powershellに移行できない
540デフォルトの名無しさん
2020/09/04(金) 08:30:44.47ID:PFscGLUJ ps1をポリシー付きで呼び出す1行バッチを書けばいいんじゃない?
冗長だけどbatをメンテするのに比べたらずっといいと思う
冗長だけどbatをメンテするのに比べたらずっといいと思う
541デフォルトの名無しさん
2020/09/04(金) 09:00:17.63ID:nHf7diD2 CurrentUserすら許さずbatはOKって
客先はともかく自社でそれは謎
客先はともかく自社でそれは謎
542デフォルトの名無しさん
2020/09/04(金) 10:38:48.17ID:HOWqt3vZ543デフォルトの名無しさん
2020/09/04(金) 10:55:49.00ID:9bn0no2k Powershellってマイクロソフト提供のスクリプトですら証明書の期限切れがあるからちょっと不安になる
544デフォルトの名無しさん
2020/09/04(金) 11:00:10.92ID:Z5LzkW/+ >>543
無期限の証明書作れる方がヤバいでしょ
無期限の証明書作れる方がヤバいでしょ
545デフォルトの名無しさん
2020/09/04(金) 17:55:32.72ID:pFNwt9H1 まぁそれはそうなんだけど10年後にいきなり動かなくなると軽くパニックになるのは容易に想像できる
って言うか何件か証明書切れを経験すると不安になるのも理解できる
って言うか何件か証明書切れを経験すると不安になるのも理解できる
546デフォルトの名無しさん
2020/09/04(金) 21:29:53.57ID:GUj1t4WA MSの怖いところはいつサポートを切られても文句が言えないんだよな
よくそんなもん使うよ
よくそんなもん使うよ
547デフォルトの名無しさん
2020/09/04(金) 22:08:14.36ID:r9WlhdFA vbsなんてもうサポートされてないけどドメインのログオンスクリプトでいまだに大活躍ですよ
548デフォルトの名無しさん
2020/09/04(金) 22:37:22.42ID:2uatcP4v >>546
いつ切られるかなんて話ならApple製品の方が問答無用
いつ切られるかなんて話ならApple製品の方が問答無用
549デフォルトの名無しさん
2020/09/04(金) 22:48:13.98ID:HXgxD56a MSほど後方互換性に配慮する企業はない
550デフォルトの名無しさん
2020/09/04(金) 22:50:13.00ID:yQcUkcYq >>546
Googleって知ってる?
Googleって知ってる?
551デフォルトの名無しさん
2020/09/04(金) 23:13:47.33ID:pFNwt9H1 サポートガーとか言い出したらすべてのソフトメーカーも同じだしMSはサポート期間を明示してる分マシな方
552デフォルトの名無しさん
2020/09/05(土) 00:41:16.91ID:/H4NwAXT オープンソースじゃないから的なやつでしょどうせ
553デフォルトの名無しさん
2020/09/05(土) 01:11:02.97ID:F930ZZ+s しかもMSは予告したサポート期間切れたようなのでも
なんだかんだズルズルと最低限のサポートはしよるしな
なんだかんだズルズルと最低限のサポートはしよるしな
554デフォルトの名無しさん
2020/09/05(土) 09:05:47.68ID:Z+0szYX9 オープンソースでも、誰もメンテしなくなったらサポート切れたと同じになるけどな
555デフォルトの名無しさん
2020/09/05(土) 09:29:26.09ID:5bXKo+C7 >>549
Win10 で未だに VB6 が公式にサポートされているのは驚異的だわな
Win10 で未だに VB6 が公式にサポートされているのは驚異的だわな
556デフォルトの名無しさん
2020/09/05(土) 14:23:09.94ID:NgOfEUV/ VB6のサポートって切れたんではないの?
でも実際にWin10でもそれなりに動くってことは
相当配慮してるんだろうね
でも実際にWin10でもそれなりに動くってことは
相当配慮してるんだろうね
557デフォルトの名無しさん
2020/09/05(土) 14:38:02.26ID:poolRPMo >>556
> VB6のサポートって切れたんではないの?
IDEの話と混同してないか?
Microsoft は、Windows Vista、Windows Server 2008 (R2 を含む)、Windows 7、Windows Server 2012、Windows Server 2012 R2、Windows Server 2016、Windows 8.x、および Windows 10 上で実行される既存の Visual Basic 6.0 アプリケーションをサポートすることにコミットしています。
https://docs.microsoft.com/ja-jp/lifecycle/faq/developer-tools#what-lifecycle-policy-does-visual-basic-60-follow
> VB6のサポートって切れたんではないの?
IDEの話と混同してないか?
Microsoft は、Windows Vista、Windows Server 2008 (R2 を含む)、Windows 7、Windows Server 2012、Windows Server 2012 R2、Windows Server 2016、Windows 8.x、および Windows 10 上で実行される既存の Visual Basic 6.0 アプリケーションをサポートすることにコミットしています。
https://docs.microsoft.com/ja-jp/lifecycle/faq/developer-tools#what-lifecycle-policy-does-visual-basic-60-follow
558デフォルトの名無しさん
2020/09/05(土) 14:41:51.18ID:5bXKo+C7559556
2020/09/06(日) 12:44:28.70ID:K+uwWPzG560デフォルトの名無しさん
2020/09/06(日) 21:35:48.31ID:zycnfOVF PowerShell Core6.xはサポート終了したけどね
https://docs.microsoft.com/ja-jp/powershell/scripting/powershell-support-lifecycle#powershell-releases-end-of-life
https://docs.microsoft.com/ja-jp/powershell/scripting/powershell-support-lifecycle#powershell-releases-end-of-life
561デフォルトの名無しさん
2020/09/07(月) 10:29:11.62ID:LrNxLO4b 教えてください!
数学関数よく使うので、[math]打たなくていい方法ありませんか?
pythonだと
from hoge import *みたいなやつです。
usingの使い方はよく分かりませんでした…
数学関数よく使うので、[math]打たなくていい方法ありませんか?
pythonだと
from hoge import *みたいなやつです。
usingの使い方はよく分かりませんでした…
562デフォルトの名無しさん
2020/09/08(火) 13:39:15.42ID:Czt9vV5Q RubyってNGした方がいいの?
563デフォルトの名無しさん
2020/09/08(火) 14:06:08.38ID:4U/U3HlV うん
564デフォルトの名無しさん
2020/09/08(火) 21:32:03.60ID:gglleEZ2565デフォルトの名無しさん
2020/09/09(水) 14:10:00.30ID:dcbbv6DU >>564
ありがとうございます!
ありがとうございます!
566デフォルトの名無しさん
2020/09/09(水) 17:56:46.99ID:COY4N7BF >$m = [System.Math];
これって$mに何を代入してることになるの?
これって$mに何を代入してることになるの?
567デフォルトの名無しさん
2020/09/09(水) 21:07:17.97ID:Mz5kQg8j System.Mathを表すTypeクラスのインスタンス
C#のtypeof(System.Math)に相当する
C#のtypeof(System.Math)に相当する
568デフォルトの名無しさん
2020/09/09(水) 23:13:42.66ID:COY4N7BF569デフォルトの名無しさん
2020/09/10(木) 18:44:59.29ID:tjN1C/3z Typeクラスのインスタンスが特定のクラスとして振る舞うのか。
オブジェクト志向のメタ構造というか自己言及的というか、
頭の悪い俺はクラクラしてくる。
オブジェクト志向のメタ構造というか自己言及的というか、
頭の悪い俺はクラクラしてくる。
570デフォルトの名無しさん
2020/09/10(木) 21:10:45.59ID:Cm2gzsSs "".GetType()::IsNullOrEmpty("foo") なんてものもちゃんと動く
わざわざこんな書き方するメリットは知らん
わざわざこんな書き方するメリットは知らん
571デフォルトの名無しさん
2020/09/11(金) 22:50:14.76ID:7Cy3Hp6X Type型クラスがクラスとして振る舞うんじゃない
静的メンバ演算子(::)がRuntimeType型の値と文字列値を取って、静的メンバを返す
だから
$parent = [System.Math];
$child = "E";
$parent::$child;
はちゃんと評価される
静的メンバ演算子(::)がRuntimeType型の値と文字列値を取って、静的メンバを返す
だから
$parent = [System.Math];
$child = "E";
$parent::$child;
はちゃんと評価される
572デフォルトの名無しさん
2020/09/13(日) 12:34:16.51ID:pT8kzvft whileの条件式がうまく動かないので教えてください。
Test-NetConnectionでサーバのポートが開いているかチェックして
開いていなかったら、開くまで待つ処理をしたいのですが、
なぜかWhileループに入ってくれません。
条件を$result -ne "True"にすればうまく動くのですが、なぜFalseの条件だと動かないのでしょうか
あとTest-NetConnectionでポート開いていないときにWARNINGメッセージが表示されるのですが
これって表示抑止できませんか?
コード
$ProgressPreference="SilentlyContinue"
$ErrorActionPreference = "silentlycontinue"
$server = "127.0.0.1"
$result = Test-NetConnection $server -port 22 -InformationLevel Quiet
while ($result -eq "False") {
Write-Output "OFF"
$result = Test-NetConnection $server -port 22 -InformationLevel Quiet
}
write-host "kaishi"
Test-NetConnectionでサーバのポートが開いているかチェックして
開いていなかったら、開くまで待つ処理をしたいのですが、
なぜかWhileループに入ってくれません。
条件を$result -ne "True"にすればうまく動くのですが、なぜFalseの条件だと動かないのでしょうか
あとTest-NetConnectionでポート開いていないときにWARNINGメッセージが表示されるのですが
これって表示抑止できませんか?
コード
$ProgressPreference="SilentlyContinue"
$ErrorActionPreference = "silentlycontinue"
$server = "127.0.0.1"
$result = Test-NetConnection $server -port 22 -InformationLevel Quiet
while ($result -eq "False") {
Write-Output "OFF"
$result = Test-NetConnection $server -port 22 -InformationLevel Quiet
}
write-host "kaishi"
573デフォルトの名無しさん
2020/09/13(日) 12:53:42.29ID:NB1HNIe8 Booleanと文字列を比較してるからかなぁ
while ($result -eq $false) {
にするとか
while ($result.ToString() -eq "False") {
にするとか
while ($result -eq $false) {
にするとか
while ($result.ToString() -eq "False") {
にするとか
574デフォルトの名無しさん
2020/09/13(日) 12:59:04.71ID:gjBM/R2S >>572
$result -eq $false
$result -eq $false
575デフォルトの名無しさん
2020/09/13(日) 13:03:07.97ID:pT8kzvft while ($result -eq $false) {
でうまく動きましたー!ありがとうございました
trueは文字列比較で動くのにfalseはダメなのは不思議です。
でうまく動きましたー!ありがとうございました
trueは文字列比較で動くのにfalseはダメなのは不思議です。
576デフォルトの名無しさん
2020/09/13(日) 13:10:32.29ID:NB1HNIe8 trueの場合には-neにしてたから、動いてる様に見えただけなんじゃね?
577デフォルトの名無しさん
2020/09/13(日) 16:28:25.02ID:Bx4nil+B while (!$result)でよくね
578デフォルトの名無しさん
2020/09/13(日) 18:29:23.50ID:NpK7vu/k 当世風だなw
579デフォルトの名無しさん
2020/09/13(日) 22:52:54.65ID:XEIeaeUL /1GBとかやると容量計算が捗るのを今日知った
580デフォルトの名無しさん
2020/09/13(日) 23:32:26.16ID:NpK7vu/k581デフォルトの名無しさん
2020/09/14(月) 08:38:10.64ID:Cd/NVq2C get-childitem C:\Windows | select fullname,@{N="length";E={$_.length/1KB}}
583デフォルトの名無しさん
2020/09/14(月) 21:11:25.52ID:zNRePcSL ドキュメントにも載ってる公式機能よ
https://docs.microsoft.com/ja-jp/previous-versions/dd315291(v=technet.10)#-property-object
https://docs.microsoft.com/ja-jp/previous-versions/dd315291(v=technet.10)#%E4%BE%8B-4
https://docs.microsoft.com/ja-jp/previous-versions/dd315291(v=technet.10)#-property-object
https://docs.microsoft.com/ja-jp/previous-versions/dd315291(v=technet.10)#%E4%BE%8B-4
584デフォルトの名無しさん
2020/09/14(月) 22:36:01.27ID:O60yV8/t おみそれしました。参考にしまつ (=゚ω゚)ノ
585デフォルトの名無しさん
2020/09/15(火) 17:44:30.49ID:vvfuKi+i 会社のパソコンでvscodeでのスクリプト作成
しようとしているのですが
下記問題に当たって苦しんでいます。
助言ください
1.vscodeのextentionのインストールができない。
→会社ネットワークは認証付きプロキシ環境なのでその設定が必要ぽいが設定してもダメ、とりあえずファイルを個別にインストールして対処
2.powershellデバッグしようとすると、初めて使うモジュールの分析をしています。と表示されて進まない
対象モジュールはpackagemanegement.psm1 1.4.7
これもプロキシの問題でインストールに苦労しました。
しようとしているのですが
下記問題に当たって苦しんでいます。
助言ください
1.vscodeのextentionのインストールができない。
→会社ネットワークは認証付きプロキシ環境なのでその設定が必要ぽいが設定してもダメ、とりあえずファイルを個別にインストールして対処
2.powershellデバッグしようとすると、初めて使うモジュールの分析をしています。と表示されて進まない
対象モジュールはpackagemanegement.psm1 1.4.7
これもプロキシの問題でインストールに苦労しました。
586デフォルトの名無しさん
2020/09/15(火) 17:51:28.05ID:7Yffzl/8 >>585
認証付きプロキシでも普通に使えてるけど…って思ったらいくつもissue上がってるし、こっちの環境でも「XHR failed」ってエラーになるな
認証付きプロキシでも普通に使えてるけど…って思ったらいくつもissue上がってるし、こっちの環境でも「XHR failed」ってエラーになるな
587デフォルトの名無しさん
2020/09/24(木) 09:55:49.02ID:R8JuKz31 >>262
selectに -expandpropatye みたいなのを足せば何とかなるかも…
selectに -expandpropatye みたいなのを足せば何とかなるかも…
588デフォルトの名無しさん
2020/09/25(金) 01:41:03.68ID:hFZS0B6G ヒアドキュメントの変数使う時に変数を前方参照(後方参照?)したいんですが、
できませんかね
# スクリプトの頭の方で参照したい
$heredoc
# ヒアドキュメントはスクリプトの後ろにまとめたい
$heredoc = @`
abc
`@
できませんかね
# スクリプトの頭の方で参照したい
$heredoc
# ヒアドキュメントはスクリプトの後ろにまとめたい
$heredoc = @`
abc
`@
589デフォルトの名無しさん
2020/09/25(金) 01:55:05.65ID:mGml3uVc Ruby でも、出来ない
590デフォルトの名無しさん
2020/09/25(金) 04:02:41.97ID:pAwXdRR4 >>588
それって静的変数みたいなものですかね?考え方は
それって静的変数みたいなものですかね?考え方は
591デフォルトの名無しさん
2020/09/25(金) 22:07:41.04ID:hFZS0B6G UNIX系のシェルの仕様見ても前方参照できるようなことは書いてなありませんでした
だめっぽいですね
一旦ファイルとして後ろまで読むみたいなアクロパティックな方法しかなさそう
だめっぽいですね
一旦ファイルとして後ろまで読むみたいなアクロパティックな方法しかなさそう
592デフォルトの名無しさん
2020/09/25(金) 22:15:02.42ID:5mEzuFCz 自分自身をファイルオープンして末尾を読み出すとか。
昔、自分自身を解凍するシェルスクリプトがUNIX系アプリのインストーラとしてよく使われてたよね
昔、自分自身を解凍するシェルスクリプトがUNIX系アプリのインストーラとしてよく使われてたよね
593デフォルトの名無しさん
2020/09/25(金) 22:17:06.26ID:5mEzuFCz おっと書かれていたか
594デフォルトの名無しさん
2020/09/25(金) 23:45:08.08ID:BU0fUt+3 処理をスクリプトブロックや関数の中に入れてもいいなら
$f = {
echo $heredoc
}
$heredoc = @`
abc
`@
. $f
$f = {
echo $heredoc
}
$heredoc = @`
abc
`@
. $f
595デフォルトの名無しさん
2020/09/26(土) 22:07:47.79ID:BjfAYIo4 わけがわからん現象にでくわした
シンボリックリンク作成権限を付けたユーザーなんだけど
New-Item -Type Directory -Name dir
New-Item -Type SymbolicLink -Name sym -Target dir
これを管理者で実行すると SYMLINKD になるんだけど
管理者にならずに実行すると SYMLINK になるのはどういうこと?
シンボリックリンク作成権限を付けたユーザーなんだけど
New-Item -Type Directory -Name dir
New-Item -Type SymbolicLink -Name sym -Target dir
これを管理者で実行すると SYMLINKD になるんだけど
管理者にならずに実行すると SYMLINK になるのはどういうこと?
596デフォルトの名無しさん
2020/09/27(日) 09:30:31.69ID:HvAokpg1 chcp 65001
をやっても画面のユニコード文字列が文字化けするのはなんで?
をやっても画面のユニコード文字列が文字化けするのはなんで?
597デフォルトの名無しさん
2020/09/27(日) 11:16:54.85ID:4AaMSaam598デフォルトの名無しさん
2020/09/27(日) 11:18:33.39ID:4AaMSaam599デフォルトの名無しさん
2020/09/27(日) 12:01:00.23ID:45wzgCn0 Windows Terminalは絵文字とかもちゃんと表示できるらしい、使ってないけど
600デフォルトの名無しさん
2020/09/27(日) 16:37:33.79ID:zpUujZFe 管理者にならずに New-Item でフォルダーへのシンボリックリンクを張ると
SYMLINKD でなく SYMLINK ができるという >>595 なんだが
PowerShell を C:\Users\ユーザー で起動した場合だけ起こるっぽい
Windows PowerShell では起きないし、起動フォルダーを変えても起きない
なんだこれ?
SYMLINKD でなく SYMLINK ができるという >>595 なんだが
PowerShell を C:\Users\ユーザー で起動した場合だけ起こるっぽい
Windows PowerShell では起きないし、起動フォルダーを変えても起きない
なんだこれ?
601デフォルトの名無しさん
2020/09/27(日) 18:25:49.52ID:4AaMSaam >>600
うちの環境 (Win10 2004) だと以下の通り。いずれもシンボリックリンク作成権限を与えた一般ユーザ。
PowerShell 5.0
開始ディレクトリに関わらず、再現せず
PowerShell 7.0.3
開始ディレクトリに関わらず、再現する
よく分からんね。
うちの環境 (Win10 2004) だと以下の通り。いずれもシンボリックリンク作成権限を与えた一般ユーザ。
PowerShell 5.0
開始ディレクトリに関わらず、再現せず
PowerShell 7.0.3
開始ディレクトリに関わらず、再現する
よく分からんね。
602デフォルトの名無しさん
2020/09/27(日) 21:02:03.10ID:qVXRXcgH 昔からpsのアクセス権周辺の実装は怪しいと思ってる
専用コマンド呼ぶなり.NET呼ぶなりした方がいいよ
専用コマンド呼ぶなり.NET呼ぶなりした方がいいよ
603デフォルトの名無しさん
2020/09/27(日) 22:00:17.33ID:zpUujZFe なぜうち(Win10 1909 18363.1082)では起動フォルダーで挙動が変わるんだろう
C:\Users\ユーザー で起動した PowerShell 7.0.3 だと、どこで New-Item しても発生する
その PowerShell で、さらに PowerShell を起動すると
C:\Users\ユーザー で起動した場合は、どこで New-Item しても発生する
別のフォルダーで起動した場合は、どこで New-Item しても問題ない
こうなる理由が予想もできない
C:\Users\ユーザー で起動した PowerShell 7.0.3 だと、どこで New-Item しても発生する
その PowerShell で、さらに PowerShell を起動すると
C:\Users\ユーザー で起動した場合は、どこで New-Item しても発生する
別のフォルダーで起動した場合は、どこで New-Item しても問題ない
こうなる理由が予想もできない
604デフォルトの名無しさん
2020/09/27(日) 23:03:00.71ID:zpUujZFe あーごめん
管理者でも C:\Users\ユーザー で起動したら発生した
管理者になるかどうかは関係なかった
理由はさっぱりだが……
管理者でも C:\Users\ユーザー で起動したら発生した
管理者になるかどうかは関係なかった
理由はさっぱりだが……
605デフォルトの名無しさん
2020/09/28(月) 10:27:40.26ID:6RK1A/yN606デフォルトの名無しさん
2020/09/28(月) 20:33:13.25ID:1OU6a08X 試した
1 〇 (でも張りたいのは相対パスのリンク)
2 ×
3 〇
[Environment]::CurrentDirectory を基準にターゲットのフルパスを求めて
フォルダーだったら SYMLINKD 、それ以外は SYMLINK を作ってるっぽい
# >>603 を書く時 C:\Users\ユーザー では試してなかった……。
カレントディレクトリを移動しても [Environment]::CurrentDirectory は変わらない
となると悪いのは
カレントディレクトリを返さない [Environment]::CurrentDirectory ?
それとも [Environment]::CurrentDirectory を参照する New-Item ?
1 〇 (でも張りたいのは相対パスのリンク)
2 ×
3 〇
[Environment]::CurrentDirectory を基準にターゲットのフルパスを求めて
フォルダーだったら SYMLINKD 、それ以外は SYMLINK を作ってるっぽい
# >>603 を書く時 C:\Users\ユーザー では試してなかった……。
カレントディレクトリを移動しても [Environment]::CurrentDirectory は変わらない
となると悪いのは
カレントディレクトリを返さない [Environment]::CurrentDirectory ?
それとも [Environment]::CurrentDirectory を参照する New-Item ?
607デフォルトの名無しさん
2020/09/29(火) 11:44:19.44ID:xkYzZNyK >>606
ごめん。ソースの履歴を見たら、v7.0.3 のときは、2. の方法は無意味だったみたい。
v7.0.3 の実装は、>>606 さんの想像のとおり。
そもそも、ターゲットの相対パスを解決するときの基準は、カレントのパスではなくて、
シンボリックリンクそのもののパスだよね。
なので、プロセスのカレントディレクトリ([Environment]::CurrentDirectory)の代わりに、
PowerShell のカレントロケーション($PWD)を基準にしたとしても、やっぱりバグる。
New-Item -Type Symbolic -Name Foo\Bar -Target .\Zot みたいなケースとか。
でね。最新のソースには、相対パスのターゲットのための修正が施されているのだけれど、
これが、「.\」か「./」で始まるパスのときは、基準にカレントロケーションを使う、
という中途半端かつ誤ったもので...。
ごめん。ソースの履歴を見たら、v7.0.3 のときは、2. の方法は無意味だったみたい。
v7.0.3 の実装は、>>606 さんの想像のとおり。
そもそも、ターゲットの相対パスを解決するときの基準は、カレントのパスではなくて、
シンボリックリンクそのもののパスだよね。
なので、プロセスのカレントディレクトリ([Environment]::CurrentDirectory)の代わりに、
PowerShell のカレントロケーション($PWD)を基準にしたとしても、やっぱりバグる。
New-Item -Type Symbolic -Name Foo\Bar -Target .\Zot みたいなケースとか。
でね。最新のソースには、相対パスのターゲットのための修正が施されているのだけれど、
これが、「.\」か「./」で始まるパスのときは、基準にカレントロケーションを使う、
という中途半端かつ誤ったもので...。
608デフォルトの名無しさん
2020/09/29(火) 20:49:56.27ID:J7wCjMtV 常に リンクのフルパス → ターゲットのフルパス とたどるだけなのに……w
早く修正されますように
早く修正されますように
609デフォルトの名無しさん
2020/09/30(水) 08:50:32.18ID:6kAerFE6 [Environment]::CurrentDirectoryや[IO.Directory]::GetCurrentDirectory()の罠
他のモジュールも同じ問題を抱えてないか心配になる
他のモジュールも同じ問題を抱えてないか心配になる
610デフォルトの名無しさん
2020/10/01(木) 10:19:36.95ID:tnCBqate New-Itemはハードリンクもバグってる
こっちはWindows以外のOSでも問題になるはず
New-Item -Type Directory -Name linktest
New-Item -Name linktest\target
New-Item -type HardLink -Name linktest\hardlink -Target linktest\target
に対して、こんなメッセージでエラーになってしまう
New-Item: Could not find item linktest\target.
興味深いのは
New-Item -Type HardLink -Name linktest\hardlink -Target target
と間違えてみると
New-Item: Cannot find path 'カレントディレクトリ\target' because it does not exist.
ちゃんと正しいエラーメッセージが返る
不思議だ
こっちはWindows以外のOSでも問題になるはず
New-Item -Type Directory -Name linktest
New-Item -Name linktest\target
New-Item -type HardLink -Name linktest\hardlink -Target linktest\target
に対して、こんなメッセージでエラーになってしまう
New-Item: Could not find item linktest\target.
興味深いのは
New-Item -Type HardLink -Name linktest\hardlink -Target target
と間違えてみると
New-Item: Cannot find path 'カレントディレクトリ\target' because it does not exist.
ちゃんと正しいエラーメッセージが返る
不思議だ
611デフォルトの名無しさん
2020/10/01(木) 21:05:38.94ID:NSqrZd61 >>610
>New-Item -type HardLink -Name linktest\hardlink -Target linktest\target
5.1と7.0.3で試したけどエラーにならなかったぞ
>New-Item -type HardLink -Name linktest\hardlink -Target linktest\target
5.1と7.0.3で試したけどエラーにならなかったぞ
612デフォルトの名無しさん
2020/10/01(木) 21:26:37.01ID:tnCBqate これでどう? (長すぎて切れるかも)
$origCurDir = [System.Environment]::CurrentDirectory
New-Item -ItemType Directory -Path linktest
Push-Location linktest
New-Item -ItemType Directory -Path dir
Push-Location dir # linktest/dir
New-Item -ItemType Directory -Path subdir
Set-Content -Path file -Value "hello"
New-Item -ItemType HardLink -Path hardlink_1 -Value file
New-Item -ItemType SymbolicLink -Path symlink_1 -Value subdir
Pop-Location # linktest
New-Item -ItemType HardLink -Path dir/hardlink_2 -Value dir/file
New-Item -ItemType SymbolicLink -Path dir/symlink_2 -Value subdir
Push-Location dir # linktest/dir
[System.Environment]::CurrentDirectory = $PWD
New-Item -ItemType HardLink -Path hardlink_3 -Value file
New-Item -ItemType SymbolicLink -Path symlink_3 -Value subdir
Pop-Location # linktest
[System.Environment]::CurrentDirectory = $PWD
New-Item -ItemType HardLink -Path dir/hardlink_4 -Value dir/file
New-Item -ItemType SymbolicLink -Path dir/symlink_4 -Value subdir
Pop-Location
[System.Environment]::CurrentDirectory = $origCurDir
Get-ChildItem -Path linktest/dir | Sort-Object -Property CreationTime | Format-Table Attributes,LinkType,Target,Length,Name
$origCurDir = [System.Environment]::CurrentDirectory
New-Item -ItemType Directory -Path linktest
Push-Location linktest
New-Item -ItemType Directory -Path dir
Push-Location dir # linktest/dir
New-Item -ItemType Directory -Path subdir
Set-Content -Path file -Value "hello"
New-Item -ItemType HardLink -Path hardlink_1 -Value file
New-Item -ItemType SymbolicLink -Path symlink_1 -Value subdir
Pop-Location # linktest
New-Item -ItemType HardLink -Path dir/hardlink_2 -Value dir/file
New-Item -ItemType SymbolicLink -Path dir/symlink_2 -Value subdir
Push-Location dir # linktest/dir
[System.Environment]::CurrentDirectory = $PWD
New-Item -ItemType HardLink -Path hardlink_3 -Value file
New-Item -ItemType SymbolicLink -Path symlink_3 -Value subdir
Pop-Location # linktest
[System.Environment]::CurrentDirectory = $PWD
New-Item -ItemType HardLink -Path dir/hardlink_4 -Value dir/file
New-Item -ItemType SymbolicLink -Path dir/symlink_4 -Value subdir
Pop-Location
[System.Environment]::CurrentDirectory = $origCurDir
Get-ChildItem -Path linktest/dir | Sort-Object -Property CreationTime | Format-Table Attributes,LinkType,Target,Length,Name
613デフォルトの名無しさん
2020/10/02(金) 13:25:40.85ID:1QpEVKY8 mklink一行でええじゃん
614デフォルトの名無しさん
2020/10/02(金) 13:57:48.64ID:w3BWfVBY >>613
これを思い出した
********
アメリカのNASAは、宇宙飛行士を最初に宇宙に送り込んだとき、
無重力状態ではボールペンで文字を書くことができないのを発見した。
これではボールペンを持って行っても役に立たない!
NASAの科学者たちはこの問題に立ち向かうべく、10年の歳月と120億ドルの開発費をかけて研究を重ねた。
その結果ついに、無重力でも上下逆にしても水の中でも氷点下でも摂氏300度でも、
どんな状況下でもどんな表面にでも書けるボールペンを開発した!!
一方、ソ連は鉛筆を使った。
これを思い出した
********
アメリカのNASAは、宇宙飛行士を最初に宇宙に送り込んだとき、
無重力状態ではボールペンで文字を書くことができないのを発見した。
これではボールペンを持って行っても役に立たない!
NASAの科学者たちはこの問題に立ち向かうべく、10年の歳月と120億ドルの開発費をかけて研究を重ねた。
その結果ついに、無重力でも上下逆にしても水の中でも氷点下でも摂氏300度でも、
どんな状況下でもどんな表面にでも書けるボールペンを開発した!!
一方、ソ連は鉛筆を使った。
615デフォルトの名無しさん
2020/10/02(金) 14:35:00.30ID:Ck+HovvX リンクを張ることが目的なのではない
PowerShellの不具合を見つけることが目的なのだ
PowerShellの不具合を見つけることが目的なのだ
616デフォルトの名無しさん
2020/10/02(金) 21:34:24.75ID:ljpWPhwK 誰か英語ができる人 >>612 のテストを添えて「New-Itemでのhardlink/symlink作成に
[Environment]::CurrentDirectoryが影響する」ってタイトルでイシューを立てて欲しい
[Environment]::CurrentDirectoryが影響する」ってタイトルでイシューを立てて欲しい
617デフォルトの名無しさん
2020/10/03(土) 01:55:55.82ID:0vVVHGK+ 昔はよくConnectに投稿したりしたんだけどねぇ
618デフォルトの名無しさん
2020/10/03(土) 10:45:42.05ID:68v91MPk よろしくお願いします
619デフォルトの名無しさん
2020/10/03(土) 22:48:38.93ID:7NrhvCrT バージョン上がって使いやすくなってきたねpowershell
Shellより扱いやすいからmacにもインスコしたわ
コンソールに貼り付けて実行した時に右クリックの貼り付けとctlvの貼り付けで動きが違うのは何で?
Shellより扱いやすいからmacにもインスコしたわ
コンソールに貼り付けて実行した時に右クリックの貼り付けとctlvの貼り付けで動きが違うのは何で?
620デフォルトの名無しさん
2020/10/04(日) 17:12:39.48ID:Pj4o9N0c621デフォルトの名無しさん
2020/10/07(水) 01:28:53.25ID:OLUeUK9d あるファイルを消そうとしたら「このファイルは開かれているため〜」と表示されて消せなかった。
こういう場合、自分はリソースモニターでファイルを開いているアプリを探すんだけど
最近入った現場では管理者以外はリソースモニターを使えないように設定されていて困った。
それで質問なのですが、powershellのコマンドでファイルを開いているアプリを探す方法はあるのでしょうか?
こういう場合、自分はリソースモニターでファイルを開いているアプリを探すんだけど
最近入った現場では管理者以外はリソースモニターを使えないように設定されていて困った。
それで質問なのですが、powershellのコマンドでファイルを開いているアプリを探す方法はあるのでしょうか?
622デフォルトの名無しさん
2020/10/07(水) 02:03:23.70ID:HMBCuleJ624デフォルトの名無しさん
2020/10/08(木) 19:15:35.07ID:zkqa7tbj 試せば判るけど >>622 はプロセスがロードしてるDLLとかのモジュールしか得られないよ
開いてるファイルはプロセスに紐付いてるハンドル取得して一個一個チェックするしかないよ
実装はpowershellじゃかなり大変だからhandle.exeっていうMSが公開してるツール使ったらいいよ
開いてるファイルはプロセスに紐付いてるハンドル取得して一個一個チェックするしかないよ
実装はpowershellじゃかなり大変だからhandle.exeっていうMSが公開してるツール使ったらいいよ
625デフォルトの名無しさん
2020/10/14(水) 06:30:09.66ID:JjVHZHwh セキュリティガチガチでネットにも繋がらないうちの現場じゃ無理だな
626デフォルトの名無しさん
2020/10/14(水) 11:09:36.08ID:s64A8YK8 うちの会社は「キッコーマン」のHPが見れません、”コーマン”がフィルターに引っかかるのですw
627デフォルトの名無しさん
2020/10/15(木) 21:32:35.73ID:vPm9QJ4K openfiles コマンドでファイルを開いているプロセスを調べる 【 Windows】
http://tooljp.com/windows/doc/Server2008/openfiles/openfiles.html
Openfiles
https://web.archive.org/web/20120424081342/http://technet.microsoft.com/ja-jp/library/cc772842(v=ws.10).aspx
http://tooljp.com/windows/doc/Server2008/openfiles/openfiles.html
Openfiles
https://web.archive.org/web/20120424081342/http://technet.microsoft.com/ja-jp/library/cc772842(v=ws.10).aspx
628デフォルトの名無しさん
2020/10/17(土) 17:51:59.12ID:2b9DYeQb 職場で「さすがパワーシェラー!」って言われたんだけど
パワーシェルを使う人のことをそう呼ぶものなの?
パワーシェルを使う人のことをそう呼ぶものなの?
629デフォルトの名無しさん
2020/10/17(土) 17:57:10.05ID:Ske6VIT2 聞いたことないな
むしろ馬鹿にされてる気分
むしろ馬鹿にされてる気分
630デフォルトの名無しさん
2020/10/17(土) 23:05:50.24ID:DNKik4OU 洋書で良い本ないですか?
和書だと数冊しか出てないので…
和書だと数冊しか出てないので…
631デフォルトの名無しさん
2020/10/18(日) 21:28:34.46ID:6x+7Jy+N in actionは読んだのかね
あとはCoreのソース読んでくのが手っ取り早い
あとはCoreのソース読んでくのが手っ取り早い
632デフォルトの名無しさん
2020/10/19(月) 22:58:13.20ID:TaaQ8sH/633デフォルトの名無しさん
2020/10/24(土) 21:41:19.65ID:1s91cR1z 多次元配列(ジャグ配列ではなく)を1次元配列に平坦化する高速な方法ありませんか?
データ数は100万個くらいです。
@($a | % {$_})
検索したら↑のカッコいい方法が出てきましたが、
私の環境で6秒ほどかかり速度に不満があります。
データ数は100万個くらいです。
@($a | % {$_})
検索したら↑のカッコいい方法が出てきましたが、
私の環境で6秒ほどかかり速度に不満があります。
634デフォルトの名無しさん
2020/10/24(土) 23:22:07.28ID:ZaC2aARH パイプとForeach-Object自体が遅いからね
データがオンメモリにあるならforeach文のが速い
データがオンメモリにあるならforeach文のが速い
635デフォルトの名無しさん
2020/10/24(土) 23:28:40.40ID:ZaC2aARH あとは万個の繰り返し処理になるわけだからpowershellで書いたら全体的には当然遅い
対策としては繰り返し部分だけC#に渡すとかだね
対策としては繰り返し部分だけC#に渡すとかだね
636デフォルトの名無しさん
2020/10/24(土) 23:45:12.07ID:V4Y88WB8 万個とかエッチ!
637633
2020/10/25(日) 00:13:47.38ID:orpbcY2p foreach文にすると0.8秒まで速くなりました!
とりあえずこの方法でやってみます
$b = foreach($x in $a){$x}
とりあえずこの方法でやってみます
$b = foreach($x in $a){$x}
638デフォルトの名無しさん
2020/10/25(日) 02:13:33.54ID:8PerFZ8f >>636
美人穴が「この商品は累計○万個も売り上げたということです!」とかいうとおっきする
美人穴が「この商品は累計○万個も売り上げたということです!」とかいうとおっきする
639デフォルトの名無しさん
2020/10/25(日) 20:51:17.25ID:Bltg1B/v640デフォルトの名無しさん
2020/10/25(日) 23:05:57.46ID:Ny8q0G3C ジャグラーは定番だ
641デフォルトの名無しさん
2020/10/25(日) 23:57:20.55ID:sGr6+tXm 多次元配列のほうがメモリ上で綺麗に配置されている分、高速化の選択肢が多いかもしれないって発想じゃね
642633
2020/10/26(月) 00:00:33.37ID:R7zaLxag >>639
ExcelファイルからCOM経由で範囲データを取ってくるとobject[,]になるためです
ExcelファイルからCOM経由で範囲データを取ってくるとobject[,]になるためです
643デフォルトの名無しさん
2020/10/26(月) 08:09:54.14ID:mujdTIU3 なんでそれを1次元にするんだろう
644デフォルトの名無しさん
2020/10/26(月) 12:01:58.05ID:bVz9LMJg >>641
実際には多次元配列の方が遅い
実際には多次元配列の方が遅い
645デフォルトの名無しさん
2020/10/26(月) 13:22:10.82ID:l+r11Fp5 >>644
理由は?
理由は?
646デフォルトの名無しさん
2020/10/26(月) 14:41:24.14ID:RInXL5ja PowerShellというか.NETの仕様
.NETには1次元配列の要素にアクセスするための専用命令があるので速い
多次元配列の要素にアクセスするにはプロパティみたいなアクセサメソッドを使わなきゃいけないので遅い
.NETには1次元配列の要素にアクセスするための専用命令があるので速い
多次元配列の要素にアクセスするにはプロパティみたいなアクセサメソッドを使わなきゃいけないので遅い
647デフォルトの名無しさん
2020/10/26(月) 16:19:55.73ID:l+r11Fp5 >>646
多次元だと倍以上遅いと言う根拠あるの?
多次元だと倍以上遅いと言う根拠あるの?
648デフォルトの名無しさん
2020/10/26(月) 16:27:11.02ID:RDi5ol2j めんどくせー奴だな
649デフォルトの名無しさん
2020/10/26(月) 17:00:59.84ID:XYschmPc 体感速度は変わらん
650デフォルトの名無しさん
2020/10/26(月) 17:43:17.64ID:jItJ//Mq >>647
自分で試せば良いんじゃね
自分で試せば良いんじゃね
651デフォルトの名無しさん
2020/10/26(月) 17:46:52.74ID:l+r11Fp5 要は根拠もなしに
> 実際には多次元配列の方が遅い
と妄想をほざいてただけって話かよw
> 実際には多次元配列の方が遅い
と妄想をほざいてただけって話かよw
652デフォルトの名無しさん
2020/10/26(月) 17:56:32.09ID:jItJ//Mq653デフォルトの名無しさん
2020/10/26(月) 17:58:32.50ID:j+tAxxjP >>651
質問に答えず茶化すだけかよw
質問に答えず茶化すだけかよw
654デフォルトの名無しさん
2020/10/26(月) 19:30:32.27ID:l+r11Fp5655デフォルトの名無しさん
2020/10/26(月) 19:43:09.27ID:/01g7c5c >>ID:l+r11Fp5
たくさん構ってもらえて良かったね
たくさん構ってもらえて良かったね
656デフォルトの名無しさん
2020/10/26(月) 20:06:18.23ID:l+r11Fp5 >>655
恥の上塗りかなw
恥の上塗りかなw
657633
2020/10/26(月) 20:09:14.97ID:5qWbLIDu >>643
Excelファイルから取得したデータを更に別の処理に使うのですが、その際に1次元で渡す必要があるためです
Excelファイルから取得したデータを更に別の処理に使うのですが、その際に1次元で渡す必要があるためです
658デフォルトの名無しさん
2020/10/26(月) 20:09:30.70ID:/TCFG/M1 実装としては添え字でメモリの位置を計算して参照するだけだから
一次元でも多次元でも原理的には速さは変わらないぞ
一次元でも多次元でも原理的には速さは変わらないぞ
659デフォルトの名無しさん
2020/10/26(月) 20:13:28.15ID:jItJ//Mq660デフォルトの名無しさん
2020/10/26(月) 20:17:45.03ID:mujdTIU3661デフォルトの名無しさん
2020/10/26(月) 20:28:30.59ID:l+r11Fp5662デフォルトの名無しさん
2020/10/26(月) 20:36:57.75ID:mujdTIU3 あんたはまず「倍以上」の出所を説明しないと
663デフォルトの名無しさん
2020/10/26(月) 21:11:41.27ID:EAm4Av0T664デフォルトの名無しさん
2020/10/26(月) 21:49:29.23ID:AmD6br2D #2次元配列初期化
Measure-Command {
$i = 0; $array = New-Object "object[,]" 1000,1000
for ($x = 0; $x -lt $array.GetLength(0); $x++) {
for ($y = 0; $y -lt $array.GetLength(1); $y++) {
$array[$x,$y] = $i++
}
}
}
#ジャグ配列初期化
Measure-Command {
$i = 0; $array = New-Object "object[]" 1000
for ($x = 0; $x -lt $array.length; $x++) {
$array[$x] = New-Object "object[]" 1000
for ($y = 0; $y -lt $array[$x].length; $y++) {
$array[$x][$y] = $i++
}
}
}
たしかに初期化の段階でジャグ配列のが速いね
Measure-Command {
$i = 0; $array = New-Object "object[,]" 1000,1000
for ($x = 0; $x -lt $array.GetLength(0); $x++) {
for ($y = 0; $y -lt $array.GetLength(1); $y++) {
$array[$x,$y] = $i++
}
}
}
#ジャグ配列初期化
Measure-Command {
$i = 0; $array = New-Object "object[]" 1000
for ($x = 0; $x -lt $array.length; $x++) {
$array[$x] = New-Object "object[]" 1000
for ($y = 0; $y -lt $array[$x].length; $y++) {
$array[$x][$y] = $i++
}
}
}
たしかに初期化の段階でジャグ配列のが速いね
665デフォルトの名無しさん
2020/10/26(月) 22:09:49.38ID:l+r11Fp5666デフォルトの名無しさん
2020/10/26(月) 22:22:45.88ID:5/h2v6nN >>665
PSで例見せてよ
PSで例見せてよ
667デフォルトの名無しさん
2020/10/26(月) 22:37:25.27ID:l+r11Fp5 ILの話にPSとか言われてもw
668デフォルトの名無しさん
2020/10/26(月) 22:48:42.22ID:l+r11Fp5669デフォルトの名無しさん
2020/10/27(火) 01:23:06.66ID:IPa2oLl3 なるほど勉強になります
670デフォルトの名無しさん
2020/10/27(火) 13:37:08.15ID:bD3kPd/D なるほど理解できません
671デフォルトの名無しさん
2020/10/27(火) 15:37:54.18ID:az6RTKF7 処理系の実装に寄るけど、うまくインデックスを張れば
速度的には同等になるはずだけどな
速度的には同等になるはずだけどな
672デフォルトの名無しさん
2020/10/27(火) 19:29:05.55ID:k9DNZwa6 >>671
どういう理論なんだ?
ランダムアクセスだとジャグ配列は次元毎にメモリーアクセスして辿らないとダメだけど多次元配列ならインデックスの計算してその場所にアクセスするだけだから多次元配列の方が速い
シーケンシャルアクセスだとアクセスの多くは最後の次元のアクセスだから毎回インデックスを計算する多次元配列よりジャグ配列の方が速いと思う
まあめっちゃ最適化して多次元配列を1次元配列に展開するようなコードにまで落とせたら多次元配列の方が微妙に速くなるかも
どういう理論なんだ?
ランダムアクセスだとジャグ配列は次元毎にメモリーアクセスして辿らないとダメだけど多次元配列ならインデックスの計算してその場所にアクセスするだけだから多次元配列の方が速い
シーケンシャルアクセスだとアクセスの多くは最後の次元のアクセスだから毎回インデックスを計算する多次元配列よりジャグ配列の方が速いと思う
まあめっちゃ最適化して多次元配列を1次元配列に展開するようなコードにまで落とせたら多次元配列の方が微妙に速くなるかも
673デフォルトの名無しさん
2020/10/27(火) 19:52:31.91ID:Sd8akiyh なんにせよ多次元配列を1次元配列に高速に平坦化する方法分からないんだろ
グダグダスレ引き延ばしておきながらなw
グダグダスレ引き延ばしておきながらなw
674デフォルトの名無しさん
2020/10/27(火) 21:46:07.02ID:UFBDJ7q0 @($a)
Foreach-Objectもforeach分も要らない
Foreach-Objectもforeach分も要らない
675デフォルトの名無しさん
2020/10/27(火) 21:47:10.61ID:UFBDJ7q0 foreach分 → foreach文
676デフォルトの名無しさん
2020/10/27(火) 22:27:25.79ID:6aj92Tm3 >>673
そんな低レベルなことでドヤれるとか羨ましいわw
そんな低レベルなことでドヤれるとか羨ましいわw
677デフォルトの名無しさん
2020/10/28(水) 19:54:09.10ID:RpzUgl/d678633
2020/10/29(木) 21:32:08.09ID:/oXwNFXj679デフォルトの名無しさん
2020/10/29(木) 23:08:28.85ID:u3CTd5OP680デフォルトの名無しさん
2020/10/29(木) 23:35:09.18ID:ebCj94Ij え? これは常識では・・・
681デフォルトの名無しさん
2020/10/30(金) 08:08:54.65ID:xvehW8+X PowerShell使うならほぼ常識、てか知らないと辛いレベル
そもそもPowerShell自体が色々トリッキーな動作するし、特に配列周り
そもそもPowerShell自体が色々トリッキーな動作するし、特に配列周り
682デフォルトの名無しさん
2020/11/02(月) 13:12:42.29ID:cgiVh2xg $a = [Object[,]]::new(3,3); $a.Rank は 2
$b = $a; $b.Rank は 2
$b = & { $a }; $b.Rank だと 1
$b = $a + @(); $b.Rank でも 1
もちろん $b.Length はどれも 9
$b = $a が特例のように思えてきた
どうしてこうなるのかきちんと理屈が知りたい
$b = $a; $b.Rank は 2
$b = & { $a }; $b.Rank だと 1
$b = $a + @(); $b.Rank でも 1
もちろん $b.Length はどれも 9
$b = $a が特例のように思えてきた
どうしてこうなるのかきちんと理屈が知りたい
683デフォルトの名無しさん
2020/11/02(月) 14:39:03.01ID:Q6ZeZ8N8 配列での foreach の使用 (C# プログラミング ガイド)
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/arrays/using-foreach-with-arrays
多次元配列の場合、右端の次元のインデックスが最初に加算されていき、次にその左の次元、またその左、というような方法で各要素がトラバースされます。
int[,] numbers2D = new int[3, 2] { { 9, 99 }, { 3, 33 }, { 5, 55 } };
// Or use the short form:
// int[,] numbers2D = { { 9, 99 }, { 3, 33 }, { 5, 55 } };
foreach (int i in numbers2D)
{
System.Console.Write("{0} ", i);
}
// Output: 9 99 3 33 5 55
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/arrays/using-foreach-with-arrays
多次元配列の場合、右端の次元のインデックスが最初に加算されていき、次にその左の次元、またその左、というような方法で各要素がトラバースされます。
int[,] numbers2D = new int[3, 2] { { 9, 99 }, { 3, 33 }, { 5, 55 } };
// Or use the short form:
// int[,] numbers2D = { { 9, 99 }, { 3, 33 }, { 5, 55 } };
foreach (int i in numbers2D)
{
System.Console.Write("{0} ", i);
}
// Output: 9 99 3 33 5 55
684682
2020/11/02(月) 17:29:09.65ID:cgiVh2xg 明示的な foreach の使用は興味がないなあ
$b = $a も $b = & { $a } も $a を $b に代入するのに
なんで結果が違うのかが知りたい
$b = $a も $b = & { $a } も $a を $b に代入するのに
なんで結果が違うのかが知りたい
685デフォルトの名無しさん
2020/11/02(月) 17:46:27.91ID:O692h/lZ 最初のやつ以外はシンプルな代入じゃなくて演算してるから、演算の結果が一次元配列になっただけじゃないの
686682
2020/11/02(月) 17:50:23.99ID:cgiVh2xg $b = & { $a } も演算?
具体的にどういう演算になるのかわからない
具体的にどういう演算になるのかわからない
687デフォルトの名無しさん
2020/11/02(月) 17:54:46.38ID:Razdsa9H >>682
>$b = & { $a }; $b.Rank だと 1
>$b = $a + @(); $b.Rank でも 1
この2つは$aがそれぞれ評価されて1次元になって$bに代入されてる
$b = & { $a }
の場合$aの前にカンマを入れれば型は保たれる
$b = & { ,$a }
PowerShellの謎仕様
>$b = & { $a }; $b.Rank だと 1
>$b = $a + @(); $b.Rank でも 1
この2つは$aがそれぞれ評価されて1次元になって$bに代入されてる
$b = & { $a }
の場合$aの前にカンマを入れれば型は保たれる
$b = & { ,$a }
PowerShellの謎仕様
688デフォルトの名無しさん
2020/11/02(月) 18:05:40.51ID:Razdsa9H おそらくスクリプトブロックを通過するときと
右辺や左辺に置いて演算するとき
それぞれ1次元に変換されてしまう仕様みたい
右辺や左辺に置いて演算するとき
それぞれ1次元に変換されてしまう仕様みたい
689デフォルトの名無しさん
2020/11/02(月) 18:07:36.92ID:O692h/lZ690682
2020/11/02(月) 18:14:48.39ID:cgiVh2xg じゃあやっぱり単純な代入 $b = $a だけが特別で
それ以外は配列が展開されるってことか
理解した
>>687
& { $a } だと配列 $a が展開される
& { ,$a } にすれば配列の配列 ,$a が展開されて配列 $a がそのまま渡される
それ以外は配列が展開されるってことか
理解した
>>687
& { $a } だと配列 $a が展開される
& { ,$a } にすれば配列の配列 ,$a が展開されて配列 $a がそのまま渡される
691682
2020/11/02(月) 18:50:05.02ID:cgiVh2xg あれ違うな
単純な代入だけでなく Comma operator も特例になるのか
単純な代入だけでなく Comma operator も特例になるのか
692デフォルトの名無しさん
2020/11/02(月) 18:58:29.51ID:WQUINiFK >>691
特例だとか自分勝手な解釈をする癖を直さないと、他人とのコミュニケーションで苦労するぞ(主に周囲の人間の方が...)。
自分が既に頭の中に描いているイメージに合わせて無理に解釈方法を寄せていくのではなくて、本来理解すべき仕様の方に自分の中の理解を修正して近づけていく方がいいぞ。
特例だとか自分勝手な解釈をする癖を直さないと、他人とのコミュニケーションで苦労するぞ(主に周囲の人間の方が...)。
自分が既に頭の中に描いているイメージに合わせて無理に解釈方法を寄せていくのではなくて、本来理解すべき仕様の方に自分の中の理解を修正して近づけていく方がいいぞ。
693デフォルトの名無しさん
2020/11/02(月) 19:13:13.99ID:eTL99CIn ウザっ
694デフォルトの名無しさん
2020/11/02(月) 19:59:31.61ID:D4NZ1UY1 >>692
TPO をわきまえられずトンチンカンな御高説垂れる人も、他人とのコミュニケーションで苦労するぞ(主に周囲の人間の方が...)。
TPO をわきまえられずトンチンカンな御高説垂れる人も、他人とのコミュニケーションで苦労するぞ(主に周囲の人間の方が...)。
695デフォルトの名無しさん
2020/11/02(月) 20:30:51.76ID:Razdsa9H696682
2020/11/02(月) 20:44:58.19ID:cgiVh2xg ,$a は Comma operator で1要素の配列を返すけれど
その時に $a は展開されずに2次元配列のまま
これは単純な代入と同じ扱いだよね
その時に $a は展開されずに2次元配列のまま
これは単純な代入と同じ扱いだよね
697デフォルトの名無しさん
2020/11/02(月) 21:48:13.16ID:Qlwbnxz+ { $a } は { Write-Output $a } の事
Write-Output に配列を渡した時の挙動を考えればいい
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/write-output
By default, Write-Output enumerates through collections provided to the cmdlet.
However, Write-Output can also be used to pass collections down the pipeline as a single object with the NoEnumerate parameter.
Write-Output に配列を渡した時の挙動を考えればいい
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/write-output
By default, Write-Output enumerates through collections provided to the cmdlet.
However, Write-Output can also be used to pass collections down the pipeline as a single object with the NoEnumerate parameter.
698デフォルトの名無しさん
2020/11/02(月) 22:48:01.97ID:O692h/lZ ウザかろうと思って特例云々につっこむのやめたけどやっぱり書くわ
代入は代入でしかなく特例も何もない
いつだって右辺の値をありのままの型と値で代入するだけ
$b=&{$a} というのを代入として認識するからおかしくなる
$b=$a.Rank と書いたら$bは数値になるわけだけど、代入したから数値になった!とは思わないでしょ
あくまで.Rankを評価した結果が数値になって、その数値を$bに代入したに過ぎない
$b=&{$a} も &{$a} の評価結果が一次元配列になる仕様なだけで、代入が何かの法則性に寄与している訳ではないし、一次元配列になるという一貫したルールや思想があるわけでもない
代入は代入でしかなく特例も何もない
いつだって右辺の値をありのままの型と値で代入するだけ
$b=&{$a} というのを代入として認識するからおかしくなる
$b=$a.Rank と書いたら$bは数値になるわけだけど、代入したから数値になった!とは思わないでしょ
あくまで.Rankを評価した結果が数値になって、その数値を$bに代入したに過ぎない
$b=&{$a} も &{$a} の評価結果が一次元配列になる仕様なだけで、代入が何かの法則性に寄与している訳ではないし、一次元配列になるという一貫したルールや思想があるわけでもない
699682
2020/11/03(火) 00:15:03.20ID:Da50zhuo operand を展開してから operator にわたすんじゃなくて
operand をそのままわたして operator が展開したりしなかったりする
たぶん理解した
operand をそのままわたして operator が展開したりしなかったりする
たぶん理解した
700デフォルトの名無しさん
2020/11/03(火) 08:59:33.05ID:HUEo3Cdu701デフォルトの名無しさん
2020/11/04(水) 10:50:57.08ID:ZJcGuVz6702デフォルトの名無しさん
2020/11/04(水) 20:48:58.85ID:0afqdDmu703デフォルトの名無しさん
2020/11/07(土) 21:29:59.64ID:AAgSLehy こんなシェルを書きました。
function get_stop_code {
$hoge=(Get-Content stop_code.txt)
}
while ($true) {
get_stop_code
Write-Output $hoge
}
シェル実行中に、stop_code.txtの中身を書き換えても
get_stop_codeがファイルの中身を拾ってくれません
いろいろ試したら、こうしたらうまくいきました。がすっきりしません。
function get_stop_code {
$hoge=(Get-Content stop_code.txt)
Write-Output $hoge
}
while ($true) {
$stop_code=(get_stop_code)
write-output $stop_code
}
get_stop_codeがファイルの中身を、while ($true)の中でうまく拾ってくれる
書き方を教えてください。
function get_stop_code {
$hoge=(Get-Content stop_code.txt)
}
while ($true) {
get_stop_code
Write-Output $hoge
}
シェル実行中に、stop_code.txtの中身を書き換えても
get_stop_codeがファイルの中身を拾ってくれません
いろいろ試したら、こうしたらうまくいきました。がすっきりしません。
function get_stop_code {
$hoge=(Get-Content stop_code.txt)
Write-Output $hoge
}
while ($true) {
$stop_code=(get_stop_code)
write-output $stop_code
}
get_stop_codeがファイルの中身を、while ($true)の中でうまく拾ってくれる
書き方を教えてください。
704デフォルトの名無しさん
2020/11/08(日) 00:25:05.60ID:gCrk6dnE これって遅延展開系の話なのかな?
705デフォルトの名無しさん
2020/11/08(日) 02:53:16.74ID:mlfH60EQ スコープの話だと思うよ
関数の内側で変数を書き換えてもローカルスコープ内の変数の更新にしかならないので、関数から戻ったら値は書き換わってない
関数を次のように書き換えて明示的にスクリプトスコープの変数を更新してやればいい
function get_stop_code {
$script:hoge=(Get-Content stop_code.txt)
}
PSのスコープって特殊で悩ましい
特にループの初回、ほかの言語みたいに未宣言の変数だぞとエラーになってくれればまだいいんだけど、変数が作られて親からも見えちゃうから混乱する
関数の内側で変数を書き換えてもローカルスコープ内の変数の更新にしかならないので、関数から戻ったら値は書き換わってない
関数を次のように書き換えて明示的にスクリプトスコープの変数を更新してやればいい
function get_stop_code {
$script:hoge=(Get-Content stop_code.txt)
}
PSのスコープって特殊で悩ましい
特にループの初回、ほかの言語みたいに未宣言の変数だぞとエラーになってくれればまだいいんだけど、変数が作られて親からも見えちゃうから混乱する
706デフォルトの名無しさん
2020/11/08(日) 08:09:56.71ID:0BM2Z5Uf おれも一瞬ではなく数分、>>703の問題がわからなかった
とりあえず頭にSet-StrictMode -Version Latestを付けとけばエラーにはなる
とりあえず頭にSet-StrictMode -Version Latestを付けとけばエラーにはなる
707デフォルトの名無しさん
2020/11/08(日) 10:11:33.41ID:vf10kFcr708デフォルトの名無しさん
2020/11/08(日) 12:20:50.04ID:mlfH60EQ そんな感じ
関数はローカルスコープを作る
whileの方はその外側にあたるから親スコープになる
ちなみにPSではwhileブロックはローカルスコープを作らないのでスクリプト全体のスコープと同じ
関数はローカルスコープを作る
whileの方はその外側にあたるから親スコープになる
ちなみにPSではwhileブロックはローカルスコープを作らないのでスクリプト全体のスコープと同じ
709デフォルトの名無しさん
2020/11/08(日) 14:40:55.27ID:vf10kFcr710デフォルトの名無しさん
2020/11/08(日) 21:23:36.42ID:TgcNdU0w about_Scopes
https://docs.microsoft.com/ja-jp/previous-versions/windows/powershell-scripting/hh847849(v=wps.640)
https://docs.microsoft.com/ja-jp/previous-versions/windows/powershell-scripting/hh847849(v=wps.640)
711デフォルトの名無しさん
2020/11/09(月) 11:42:35.91ID:tOFQB4no ダイナミックスコーン
712デフォルトの名無しさん
2020/11/09(月) 13:18:24.63ID:hpK1fX+1713デフォルトの名無しさん
2020/11/09(月) 13:43:05.15ID:6e3D9VGJ シェルスクリプトはシェルスクリプトであってシェルではない
714デフォルトの名無しさん
2020/11/09(月) 18:13:48.88ID:XoDGsHQu 今どきファミリーベーシックに例えても人に通じないぜーっ!!
715デフォルトの名無しさん
2020/11/09(月) 18:47:25.54ID:8i+JRxOJ べーしっ君はもっと通じないだろw
716デフォルトの名無しさん
2020/11/09(月) 21:56:26.60ID:zTstc6LM ショットシェルだったら散弾のことでちょっとかっこいいぐらいなのに…
http://hb-plaza.com/wp/wp-content/uploads/2013/12/00buck001.jpg
http://hb-plaza.com/wp/wp-content/uploads/2013/12/00buck001.jpg
717デフォルトの名無しさん
2020/11/09(月) 22:20:12.83ID:7qqOuQ5J ちょっと知れるね
718デフォルトの名無しさん
2020/11/09(月) 22:31:51.42ID:NYGqo7nG ポンタポイントが付くか楽天ポイントが付くかの違いで基本的には一緒だよ
719デフォルトの名無しさん
2020/11/10(火) 02:41:01.00ID:TotITmpP スクリプトスコープ以外にも、関数スコープがあるのは便利。
C, Ruby と同じ
関数スコープが無い言語は、プログラミングが異常に難しい
C, Ruby と同じ
関数スコープが無い言語は、プログラミングが異常に難しい
720デフォルトの名無しさん
2020/11/10(火) 04:19:48.53ID:UHXHz0W1 その程度の事で「異常に」難しいんじゃ向いてないんじゃない?
多少面倒臭いなと思う事はあっても
多少面倒臭いなと思う事はあっても
721デフォルトの名無しさん
2020/11/10(火) 04:24:34.34ID:/n5BB76T 再帰呼び出しで・・・
722デフォルトの名無しさん
2020/11/10(火) 09:42:32.98ID:v1zmG+Gm むしろローカル変数の恩恵に理解を示し、グローバル変数を強制されたら不安だと思う感性の方が普段たくさんプログラミングしてるんだろうなと感じる
変数iを使ったループの中でさらに別の変数iを使った関数を呼ぶと無限ループのバグになる
代わりにjにしようとか考えてると早晩行き詰まるので「i_関数名」みたいな変数名を常に使うことを思い付く
関数名は短くしたいと考えるようになって可読性がまずいことに
短いスクリプトしか書かない用途の言語ならいいけど、そうでないなら品質の低いコードを招く言語になるだろうな
変数iを使ったループの中でさらに別の変数iを使った関数を呼ぶと無限ループのバグになる
代わりにjにしようとか考えてると早晩行き詰まるので「i_関数名」みたいな変数名を常に使うことを思い付く
関数名は短くしたいと考えるようになって可読性がまずいことに
短いスクリプトしか書かない用途の言語ならいいけど、そうでないなら品質の低いコードを招く言語になるだろうな
723デフォルトの名無しさん
2020/11/10(火) 13:37:25.83ID:xsn7mmhw ローカルとグローバルの話はまあややこしいな
724デフォルトの名無しさん
2020/11/10(火) 13:43:57.86ID:xsn7mmhw 自分のいる世界の常識が他の場所で通用するかどうか
それを生きていて初めて見せられた例がプログラミングのローカルとグローバルだった
なんていうPCヲタも少なくないだろうなあw
ブロック過ぎたらまっさらに戻る言語なら
関数が動かないと思ったらちゃんと戻り値にして出さないとなあ
報告連絡相談 と同じ
それを生きていて初めて見せられた例がプログラミングのローカルとグローバルだった
なんていうPCヲタも少なくないだろうなあw
ブロック過ぎたらまっさらに戻る言語なら
関数が動かないと思ったらちゃんと戻り値にして出さないとなあ
報告連絡相談 と同じ
725デフォルトの名無しさん
2020/11/12(木) 08:30:03.86ID:HWijez2q Announcing PowerShell 7.1
https://devblogs.microsoft.com/powershell/announcing-powershell-7-1/
https://devblogs.microsoft.com/powershell/announcing-powershell-7-1/
726デフォルトの名無しさん
2020/11/13(金) 01:15:46.84ID:TgKG6lgf プログラム経験ほぼゼロの初心者です。
プログラムのコマンドラインの引数に変数を使うと上手く動作しません。
ttps://aji0.web.fc2.com/ ←ここのAviUtlControlというソフトを使ってコマンドラインでAviUtlに動画ファイルを送りたいんですが、
「& auc_open.exe(AviUltでコマンドラインからファイルを開くプログラム) "$args"」とすると
「ファイルの読み込みに失敗しました。このファイル形式には対応していないか対応するコーデックやプラグインが登録されていない可能性があります」
とエラーが出て読み込めません。
同じファイルを「& auc_open.exe "(読み込ませたいファイルのフルパス)"」とすると開けます。
「Start-Process -FilePath auc_open.exe "(読み込ませたいファイルのフルパス)"」とした場合auc_open.exe自体が動作しません。
書き方を間違えているでしょうか? 普通に開ける動画ファイルもあるので相性の問題かもしれないのですが…。
プログラムのコマンドラインの引数に変数を使うと上手く動作しません。
ttps://aji0.web.fc2.com/ ←ここのAviUtlControlというソフトを使ってコマンドラインでAviUtlに動画ファイルを送りたいんですが、
「& auc_open.exe(AviUltでコマンドラインからファイルを開くプログラム) "$args"」とすると
「ファイルの読み込みに失敗しました。このファイル形式には対応していないか対応するコーデックやプラグインが登録されていない可能性があります」
とエラーが出て読み込めません。
同じファイルを「& auc_open.exe "(読み込ませたいファイルのフルパス)"」とすると開けます。
「Start-Process -FilePath auc_open.exe "(読み込ませたいファイルのフルパス)"」とした場合auc_open.exe自体が動作しません。
書き方を間違えているでしょうか? 普通に開ける動画ファイルもあるので相性の問題かもしれないのですが…。
727デフォルトの名無しさん
2020/11/13(金) 02:31:24.83ID:8Ha10j62 >>726
Paramで宣言してないなら、$argsじゃなくて$args[0]じゃない?
https://microsoftou.com/ps-arguments/
文字列じゃなくて「配列」のまま渡しちゃってるんじゃないかな?
Start-Process -FilePath auc_open.exeでauc_open.exeが開かないなら、auc_open.exeのあるディレクトリとは違うディレクトリで実行してるとか?
auc_open.exeのあるディレクトリに移動するか、auc_open.exeをフルパスで指定してみたら?
Paramで宣言してないなら、$argsじゃなくて$args[0]じゃない?
https://microsoftou.com/ps-arguments/
文字列じゃなくて「配列」のまま渡しちゃってるんじゃないかな?
Start-Process -FilePath auc_open.exeでauc_open.exeが開かないなら、auc_open.exeのあるディレクトリとは違うディレクトリで実行してるとか?
auc_open.exeのあるディレクトリに移動するか、auc_open.exeをフルパスで指定してみたら?
728デフォルトの名無しさん
2020/11/13(金) 03:29:17.05ID:TgKG6lgf ありがとうございます。$args[0]に書き換えてみましたが、結果は同じでした。
リンク先に従ってParam($Arg1)と一行目に書いてみると「空の文字列が渡されている」とエラーになりました。
もちろん$args1に書き換えています。
GetType().FullNameで$args[0]を調べてみましたが、System.Stringになっていました。
上記では省略しましたが、auc_open.exeはフルパスで書いています。
変数を使っていますが、write-hostで調べたところパスに間違いは無かったです。
windowsやpowershellのバージョンのせいな気もしてきた。windows10は1906でpowershellはバージョン5.1です。
リンク先に従ってParam($Arg1)と一行目に書いてみると「空の文字列が渡されている」とエラーになりました。
もちろん$args1に書き換えています。
GetType().FullNameで$args[0]を調べてみましたが、System.Stringになっていました。
上記では省略しましたが、auc_open.exeはフルパスで書いています。
変数を使っていますが、write-hostで調べたところパスに間違いは無かったです。
windowsやpowershellのバージョンのせいな気もしてきた。windows10は1906でpowershellはバージョン5.1です。
729デフォルトの名無しさん
2020/11/13(金) 03:41:57.52ID:TgKG6lgf あ、そうそう、このAviUtlControlというソフトは、もともとコマンドラインの無いAviUtlに
強引にコマンドラインを外付けにするため、実際の動作はAviUtlの「ファイルを開く」を遠隔操作しているだけみたいですね。
windowsのファイルを開くダイアログボックスが表示されるので。
そういう動作をしているのに、ps1ファイルにフルパスで直接ファイルを指定した場合は正常に開けて
$argsを使ってps1ファイルにD&Dした場合は「ファイルが対応していない」というエラーが出るよく分からない挙動になります。
$argsもwrite-hostしてみましたが、ちゃんと目的のファイルがフルパスで格納されています。
強引にコマンドラインを外付けにするため、実際の動作はAviUtlの「ファイルを開く」を遠隔操作しているだけみたいですね。
windowsのファイルを開くダイアログボックスが表示されるので。
そういう動作をしているのに、ps1ファイルにフルパスで直接ファイルを指定した場合は正常に開けて
$argsを使ってps1ファイルにD&Dした場合は「ファイルが対応していない」というエラーが出るよく分からない挙動になります。
$argsもwrite-hostしてみましたが、ちゃんと目的のファイルがフルパスで格納されています。
730726
2020/11/13(金) 03:56:04.19ID:TgKG6lgf $args[0]ではなく$argsをGetType().FullNameしてみるとsystem.object[]になっていました。
$args = [string]$argsとして文字列に変換してみましたが結果は同じ。
あと、$args[0]をwrite-hostしてみると拡張子の末尾に[0]がついていましたがこれは正常ですか?
$args = [string]$argsとして文字列に変換してみましたが結果は同じ。
あと、$args[0]をwrite-hostしてみると拡張子の末尾に[0]がついていましたがこれは正常ですか?
731デフォルトの名無しさん
2020/11/13(金) 05:04:21.79ID:HX9sr4kC >>726
& auc_open.exe(AviUltでコマンドラインからファイルを開くプログラム) "$args"
↓
& auc_open.exe(AviUltでコマンドラインからファイルを開くプログラム) $args
それでだめなら
& auc_open.exe(AviUltでコマンドラインからファイルを開くプログラム) $args[0]
こんな簡単な話じゃ無いよなあ?
& auc_open.exe(AviUltでコマンドラインからファイルを開くプログラム) "$args"
↓
& auc_open.exe(AviUltでコマンドラインからファイルを開くプログラム) $args
それでだめなら
& auc_open.exe(AviUltでコマンドラインからファイルを開くプログラム) $args[0]
こんな簡単な話じゃ無いよなあ?
732デフォルトの名無しさん
2020/11/13(金) 10:40:00.19ID:3YZH6rMm どうせパス名に()や[]が付いているというオチなんでしょ
733726
2020/11/13(金) 12:38:30.15ID:TgKG6lgf734デフォルトの名無しさん
2020/11/13(金) 13:31:59.37ID:907SkV9V "$args" は$argsって文字列と解釈されるから、
$argsは参照されない
& $open "$args"は$argsという引数として解釈されてる
"$m2v" + "*.wav"も$m2v*.wavと解釈される
変数を参照したいなら変数はダブルクォートで囲ってはダメ
& $open $args
$m2v + "*.wav" のようにする
$argsは参照されない
& $open "$args"は$argsという引数として解釈されてる
"$m2v" + "*.wav"も$m2v*.wavと解釈される
変数を参照したいなら変数はダブルクォートで囲ってはダメ
& $open $args
$m2v + "*.wav" のようにする
735726
2020/11/13(金) 13:57:21.84ID:TgKG6lgf736デフォルトの名無しさん
2020/11/13(金) 16:35:19.24ID:907SkV9V すぐ相性問題で解決したことに使用とする奴嫌い
変数内にダブルクォート付きの文字列を格納してないのは分かってる?
変数内にダブルクォート付きの文字列を格納してないのは分かってる?
737デフォルトの名無しさん
2020/11/13(金) 19:25:55.17ID:pkjRHYH3 "$args"と書いたらinterpolationされるので$argsの内容は参照されるよ
PSもモダンなので "my name is $name" みたいな書き方ができる
リテラルになるのは'$args'と書いた場合
でも"$args[0]"と書いたらダメ
どこまで変数でどこから文字列なのかが想定と合わない
"$($args[0])"と書く必要がある
[0]を付けないと配列への参照になるから"$args"だと引数間に改行コードが入る
読み込めない動画はパスに空白に含まれているのかもしれないな
PSもモダンなので "my name is $name" みたいな書き方ができる
リテラルになるのは'$args'と書いた場合
でも"$args[0]"と書いたらダメ
どこまで変数でどこから文字列なのかが想定と合わない
"$($args[0])"と書く必要がある
[0]を付けないと配列への参照になるから"$args"だと引数間に改行コードが入る
読み込めない動画はパスに空白に含まれているのかもしれないな
738デフォルトの名無しさん
2020/11/13(金) 19:30:14.24ID:34jLv13e >>726
cmd[.]exe(コマンドラインと呼んでいるものの実体)に引数が渡るときの
パースの問題の可能性がある
フルパスに空白が入っているかどうかで成否が変わったりしない?
"$args" を ""$args"" or `"$args`" にしてみたら
cmd[.]exe(コマンドラインと呼んでいるものの実体)に引数が渡るときの
パースの問題の可能性がある
フルパスに空白が入っているかどうかで成否が変わったりしない?
"$args" を ""$args"" or `"$args`" にしてみたら
739デフォルトの名無しさん
2020/11/13(金) 19:33:35.59ID:pkjRHYH3 あと "$($args -join ' ')" も試すといいかもな
740デフォルトの名無しさん
2020/11/13(金) 19:37:05.80ID:pkjRHYH3 これスペースが連続するファイル名があると失敗するな…
切り分けにはなるからいいか
切り分けにはなるからいいか
741デフォルトの名無しさん
2020/11/13(金) 19:40:36.71ID:lrdHTx5A psって難しいんだな
742デフォルトの名無しさん
2020/11/13(金) 19:55:31.96ID:8Ha10j62 >>728
$argsは配列なので、その中身の一番目を取り出すために$args[0]って書くってことだよ
自分でGetTypeして$argsはobject[]、$args[0]はStringだって確認出来てるじゃん
それに加えて、$argsを書き換えて使うのは混乱するから、$args = [string]$args じゃなくて、$m2v = $args[0] みたいにして、$m2vの方を使ったら?
その上で、>>734 のアドバイスに従って修正したものをpastebinに貼ってみて
相性が気になるなら、「正常に開けない動画ファイル」を「正常に開ける動画ファイル」と同じ場所に同じ名前で置いてみて開けるなら相性じゃないって確認できるよ
c:\abc.m2v ←開ける
d:\[movie]\zz xyz.m2v ←開けない
みたいな状況だとして、(abc.m2vを退避してから)zz xyz.m2vをabc.m2vにリネームしてc:\に置いてみたら開けるんじゃないかな?
$argsは配列なので、その中身の一番目を取り出すために$args[0]って書くってことだよ
自分でGetTypeして$argsはobject[]、$args[0]はStringだって確認出来てるじゃん
それに加えて、$argsを書き換えて使うのは混乱するから、$args = [string]$args じゃなくて、$m2v = $args[0] みたいにして、$m2vの方を使ったら?
その上で、>>734 のアドバイスに従って修正したものをpastebinに貼ってみて
相性が気になるなら、「正常に開けない動画ファイル」を「正常に開ける動画ファイル」と同じ場所に同じ名前で置いてみて開けるなら相性じゃないって確認できるよ
c:\abc.m2v ←開ける
d:\[movie]\zz xyz.m2v ←開けない
みたいな状況だとして、(abc.m2vを退避してから)zz xyz.m2vをabc.m2vにリネームしてc:\に置いてみたら開けるんじゃないかな?
743デフォルトの名無しさん
2020/11/13(金) 20:45:29.62ID:HX9sr4kC744デフォルトの名無しさん
2020/11/13(金) 21:24:00.55ID:34jLv13e745デフォルトの名無しさん
2020/11/13(金) 21:28:03.15ID:n6TD+JMZ ぱわーしぇるがシェルではない事が証明されたな
746デフォルトの名無しさん
2020/11/13(金) 23:47:58.29ID:LLS1FCOb ファイルパス・ユーザー名に、空白・日本語を使うと、バグる。
半角英数字・ハイフン・アンダーバーだけにする
Windows のパスには、空白が入っているものがあるので、ヤバイ
半角英数字・ハイフン・アンダーバーだけにする
Windows のパスには、空白が入っているものがあるので、ヤバイ
747726
2020/11/14(土) 00:23:47.78ID:8FDial4y あああああ原因分かったあああ! 全角スペースだああ! 駄目なファイルの全角スペースを削除したら読み込めました!
しかし修正方法が分からない…。とりあえず>>742さんの言う通り$m2v = $argsとして、以下ここで貼られていた改善案の結果
"$args"の場合:$m2vの中身→フルパス
$args[0]の場合:$m2vの中身→最初の半角スペースまで
""$args"" →スクリプト自体がすぐに終了
`"$args`" →コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されていません。
"$($args -join ' ')" →ファイル読み込みに失敗 $m2vの中身→フルパス
\"$args\" →コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されていません。
"$($args[0])"→ファイル読み込みに失敗、$m2vの中身は最初の半角スペースまで
正直$args[0]を理解できてない気がします。殆ど変わってませんが、とりあえずpastebinに貼っておきます。ttps://pastebin.com/AQZqQ6aX
しかし修正方法が分からない…。とりあえず>>742さんの言う通り$m2v = $argsとして、以下ここで貼られていた改善案の結果
"$args"の場合:$m2vの中身→フルパス
$args[0]の場合:$m2vの中身→最初の半角スペースまで
""$args"" →スクリプト自体がすぐに終了
`"$args`" →コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されていません。
"$($args -join ' ')" →ファイル読み込みに失敗 $m2vの中身→フルパス
\"$args\" →コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されていません。
"$($args[0])"→ファイル読み込みに失敗、$m2vの中身は最初の半角スペースまで
正直$args[0]を理解できてない気がします。殆ど変わってませんが、とりあえずpastebinに貼っておきます。ttps://pastebin.com/AQZqQ6aX
748726
2020/11/14(土) 01:10:54.25ID:8FDial4y あ、下記忘れましたが"$args"と$args[0]も最初と変わらずファイル読み込みに失敗します。
749デフォルトの名無しさん
2020/11/14(土) 01:52:08.34ID:OfQ57GBv -joinじゃ空白の連続があるとバグることには気付いてたけど、PSが全角空白をホワイトスペースとして扱うのは盲点だったわ
こういうところPSは厄介だな……
そのスクリプトは呼び出された時点で既に引数が復元不能になってるので、スクリプトの呼び出し元を変える必要がある
powershell C:¥your-script.ps1 "a b c.avi"
のように呼び出しているのだとしたら
powershell -file C:¥your-script.ps1 "a b c.avi"
と書き換えると動く
ちなみにスクリプト内でParamを明示的に定義して
powershell C:¥your-script.ps1 -oreore_arg0 "a b c.avi"
のように呼んでもいいらしい
こういうところPSは厄介だな……
そのスクリプトは呼び出された時点で既に引数が復元不能になってるので、スクリプトの呼び出し元を変える必要がある
powershell C:¥your-script.ps1 "a b c.avi"
のように呼び出しているのだとしたら
powershell -file C:¥your-script.ps1 "a b c.avi"
と書き換えると動く
ちなみにスクリプト内でParamを明示的に定義して
powershell C:¥your-script.ps1 -oreore_arg0 "a b c.avi"
のように呼んでもいいらしい
750726
2020/11/14(土) 03:06:15.72ID:8FDial4y751デフォルトの名無しさん
2020/11/14(土) 04:21:18.02ID:C2BVBS/P 引数をシングル・ダブルクォーテーションで囲む事で、
1つの引数として解釈される
囲っていないと、複数の引数として解釈されてしまうから
こういうのは、Linux では、うるさいぐらいに注意する
1つの引数として解釈される
囲っていないと、複数の引数として解釈されてしまうから
こういうのは、Linux では、うるさいぐらいに注意する
752デフォルトの名無しさん
2020/11/14(土) 05:26:16.13ID:/XxpwyFY 最初にPCに自分の名前を流用した名前を付ける時点で
半角英数にする、空白入れないというのを徹底しないと自動化には程遠い
半角英数にする、空白入れないというのを徹底しないと自動化には程遠い
753デフォルトの名無しさん
2020/11/14(土) 05:35:00.14ID:YIajn/qh おめやで(*´▽`*)
754デフォルトの名無しさん
2020/11/14(土) 07:04:37.55ID:4EKVBZXC おめやで?
755デフォルトの名無しさん
2020/11/14(土) 10:49:04.93ID:OfQ57GBv >>750
自分で引数名を定義して渡すやり方
引数ひとつひとつの範囲を明確にできるのでPSにおかしな解釈をされようがなくなる
どちらかというと経験者向けの参考として書いたから動いたなら気にしなくていいと思う
Powershell Paramで検索したら詳しく出てくる
自分で引数名を定義して渡すやり方
引数ひとつひとつの範囲を明確にできるのでPSにおかしな解釈をされようがなくなる
どちらかというと経験者向けの参考として書いたから動いたなら気にしなくていいと思う
Powershell Paramで検索したら詳しく出てくる
756デフォルトの名無しさん
2020/11/14(土) 11:12:05.60ID:OfQ57GBv >>751
今回はその常識に反するPS固有の問題だよ
powershell C:¥foo.ps1 "a b c" d e f
# 全角半角空白混在
のように書くと、経験的な常識では
$args[0] = "a b c"
$args[1] = "d"
$args[2] = "e f"
の3つに分解されることを期待するけど、今回は a 〜 f が全部バラされて$argsは6個の配列になるという事象
経験から問題を矮小化しがちになるのは老化による成長鈍化だと思う
自戒を込めて
今回はその常識に反するPS固有の問題だよ
powershell C:¥foo.ps1 "a b c" d e f
# 全角半角空白混在
のように書くと、経験的な常識では
$args[0] = "a b c"
$args[1] = "d"
$args[2] = "e f"
の3つに分解されることを期待するけど、今回は a 〜 f が全部バラされて$argsは6個の配列になるという事象
経験から問題を矮小化しがちになるのは老化による成長鈍化だと思う
自戒を込めて
757デフォルトの名無しさん
2020/11/14(土) 11:18:40.57ID:xztQReuw 省略しないで実際に流したコマンドをそのまま晒したほうがいいような気はする
せいぜい数行だろうし
せいぜい数行だろうし
758デフォルトの名無しさん
2020/11/14(土) 13:03:46.86ID:eAmLQM6Q WindowsのD&Dによるバグ仕様を回避するためにはpathに半角spを含めておいた方が良い
759デフォルトの名無しさん
2020/11/14(土) 14:43:52.28ID:vnxWLQnj >>756
> a 〜 f が全部バラされて$argsは6個の配列になる
どのバージョンだよ
5.1、7.0、7.1で試したけど $args[0] は "a b c"、$args.Length は 4 になるぞ
> a 〜 f が全部バラされて$argsは6個の配列になる
どのバージョンだよ
5.1、7.0、7.1で試したけど $args[0] は "a b c"、$args.Length は 4 になるぞ
760デフォルトの名無しさん
2020/11/14(土) 15:37:31.99ID:OfQ57GBv761デフォルトの名無しさん
2020/11/14(土) 15:44:28.74ID:cwgCwaC3 >>759
Windowsのパラメーターの分解は呼ばれ側プロセスで処理すんだけど
powershellは起動時のバージョンと実行時のバージョンが違うことがある
powershellのバージョン違いを複数入れてる場合が恐らく該当する
引数4になるパターンはpowershellバージョン2で実行されてる
powershell -v 2 で起動した場合は引数4
powershell -v 5 は全部バラけて引数6
俺はこういうバグだか仕様だかに付き合うの嫌だから一時ファイルや環境変数とかでやりとりする
Windowsのパラメーターの分解は呼ばれ側プロセスで処理すんだけど
powershellは起動時のバージョンと実行時のバージョンが違うことがある
powershellのバージョン違いを複数入れてる場合が恐らく該当する
引数4になるパターンはpowershellバージョン2で実行されてる
powershell -v 2 で起動した場合は引数4
powershell -v 5 は全部バラけて引数6
俺はこういうバグだか仕様だかに付き合うの嫌だから一時ファイルや環境変数とかでやりとりする
762デフォルトの名無しさん
2020/11/14(土) 16:04:59.98ID:cwgCwaC3 [Environment]::CommandLine
や
[Environment]::GetCommandLineArgs()
を使うとpowershellに因らない.NETで処理したパラメーターが得られるからこれが安全かもね
や
[Environment]::GetCommandLineArgs()
を使うとpowershellに因らない.NETで処理したパラメーターが得られるからこれが安全かもね
763デフォルトの名無しさん
2020/11/14(土) 16:05:13.61ID:OfQ57GBv -v 2 で起動したらたしかに引数4になったけど $args[0] は a になったわw
-v 2 だと全角スペースが区切りとして解釈されない
-v 2 だと全角スペースが区切りとして解釈されない
764デフォルトの名無しさん
2020/11/14(土) 16:21:10.31ID:OfQ57GBv 原理はこんな感じかな?
まずPS外から呼び出したときは引数はいわゆる普通にparseされる
powershell C:¥foo.ps1 "a b c" d e f
→ C:¥foo.ps1、"a b c"、d、e f の4引数
powershell.exeに-fileも-commandも指定されなかったとき、powershellはすべての引数を-commandの対象として扱う
powershell.exeは引数をワンライナーのスクリプトとして処理しようとする
複数に分割されて受けたパラメーターをコードで例えると $args -join ' ' のような残念な方法で結合する
& "C:¥foo.ps1 a b c d e f" 相当のスクリプトが実行される
全角スペースを区切りと見なすかどうかはPSのバージョン次第
まずPS外から呼び出したときは引数はいわゆる普通にparseされる
powershell C:¥foo.ps1 "a b c" d e f
→ C:¥foo.ps1、"a b c"、d、e f の4引数
powershell.exeに-fileも-commandも指定されなかったとき、powershellはすべての引数を-commandの対象として扱う
powershell.exeは引数をワンライナーのスクリプトとして処理しようとする
複数に分割されて受けたパラメーターをコードで例えると $args -join ' ' のような残念な方法で結合する
& "C:¥foo.ps1 a b c d e f" 相当のスクリプトが実行される
全角スペースを区切りと見なすかどうかはPSのバージョン次第
765デフォルトの名無しさん
2020/11/14(土) 20:24:33.59ID:6rE1W4Lt シングルクォーテーションならいけるんじゃなかったっけ
766デフォルトの名無しさん
2020/11/14(土) 20:25:14.57ID:ojc3zNUJ これはひどい
PS由来の機能は信用しない方がいいな
PS由来の機能は信用しない方がいいな
767デフォルトの名無しさん
2020/11/14(土) 21:14:45.67ID:BVcYkKlk 全角スペースを許すプログラミング言語まとめ
https://pronama.jp/2015/09/06/allows-ideographic-space-programming-languages/
https://pronama.jp/2015/09/06/allows-ideographic-space-programming-languages/
768デフォルトの名無しさん
2020/11/14(土) 21:25:00.22ID:OfQ57GBv >>765
シングルで試したらいけたわw
シングルならPS外では単なる文字として扱われるからcmdから呼び出したとき
C:¥foo.ps1
'a
b c'
d
e f
の5引数になって、連結結果は
& "C:¥foo.ps1 'a b c' d e f" 相当になるからうまくいく模様
シングルで試したらいけたわw
シングルならPS外では単なる文字として扱われるからcmdから呼び出したとき
C:¥foo.ps1
'a
b c'
d
e f
の5引数になって、連結結果は
& "C:¥foo.ps1 'a b c' d e f" 相当になるからうまくいく模様
769デフォルトの名無しさん
2020/11/16(月) 22:11:59.00ID:ssVCI5qt Excelのセル内の文字列全部ではなく、セル内の一部の文字列だけ文字色を変更する事は出きますか?
770デフォルトの名無しさん
2020/11/16(月) 22:33:49.14ID:lpvH3HhJ 自決しました。かおもじ
771デフォルトの名無しさん
2020/11/27(金) 20:48:34.28ID:0Gsdb/Fk >>756
powershell C:\foo.ps1 "a` b` c" d e` f
powershell C:\foo.ps1 "a` b` c" d e` f
772デフォルトの名無しさん
2020/11/28(土) 20:01:43.24ID:ako3hAti .Net Frameworkの質問になるかもしれんが、Powershellから使うのでこちらに
対話型のスクリプト作っててユーザーからファイルやフォルダのパスの入力を求めるのにGUIにしようと思って
System.Windows.Forms.FolderBrowserDialogとか
FileBrowserDialogとかを使ってやろうとしてますが、
ダイアログ画面が他のウインドウに隠れてユーザーが気づきません。
最前面表示させるにはどうすればよいでしょうか?
対話型のスクリプト作っててユーザーからファイルやフォルダのパスの入力を求めるのにGUIにしようと思って
System.Windows.Forms.FolderBrowserDialogとか
FileBrowserDialogとかを使ってやろうとしてますが、
ダイアログ画面が他のウインドウに隠れてユーザーが気づきません。
最前面表示させるにはどうすればよいでしょうか?
773デフォルトの名無しさん
2020/11/28(土) 21:23:54.75ID:ako3hAti 自決しました。
topmostプロパティをtrueに設定したFormオブジェクトを
FolderBrowserDialogオブジェクトのShowDialogメソッドの引数に渡すんですね。
こういう方法はマニュアル読んでもまったくわからない。苦手。
topmostプロパティをtrueに設定したFormオブジェクトを
FolderBrowserDialogオブジェクトのShowDialogメソッドの引数に渡すんですね。
こういう方法はマニュアル読んでもまったくわからない。苦手。
774デフォルトの名無しさん
2020/11/28(土) 22:56:50.75ID:goyIH8CW >>773
待て早まるな
待て早まるな
775726
2020/12/03(木) 20:12:26.39ID:AP2X4U04 >>726です。先日は貴重なアドバイスをどうもありがとうございました。
申し訳無いんですがまた詰まってしまったので助けて下さい。
Trim(2505,6665) ++ Trim(9815,34297)〜 という内容のテキストファイルを整形して
2505
6665
9815
34297
という形にしたいんですが、改行が出来ません。
ttps://orahoview.com/replacetextinfilebypowershell/ ここを参考に
$utltrimfile = $(Get-Content (テキストファイルのパス)) -replace ") ++ Trim(" "`n"
$utltrimfile = $trimfile -replace "," "`n"
$utltrimfile > (テキストファイルのパス)
と書いてみたんですが「`nを使用できません」とエラーが出ます。\nでも同様の結果でした。
改行をする方法はありますか?
申し訳無いんですがまた詰まってしまったので助けて下さい。
Trim(2505,6665) ++ Trim(9815,34297)〜 という内容のテキストファイルを整形して
2505
6665
9815
34297
という形にしたいんですが、改行が出来ません。
ttps://orahoview.com/replacetextinfilebypowershell/ ここを参考に
$utltrimfile = $(Get-Content (テキストファイルのパス)) -replace ") ++ Trim(" "`n"
$utltrimfile = $trimfile -replace "," "`n"
$utltrimfile > (テキストファイルのパス)
と書いてみたんですが「`nを使用できません」とエラーが出ます。\nでも同様の結果でした。
改行をする方法はありますか?
776デフォルトの名無しさん
2020/12/03(木) 20:44:02.20ID:gj1mOZdT >>775
数字以外が出てきたらそこで区切ることで配列にする
配列要素のうち空文字列であるものを除外
配列をまるごとファイルにリダイレクトして改行された出力結果を得る
$utltrimfile = $(Get-Content (テキストファイルのパス)) -split '\D' | ?{$_ -ne '' }
$utltrimfile > (テキストファイルのパス)
数字以外が出てきたらそこで区切ることで配列にする
配列要素のうち空文字列であるものを除外
配列をまるごとファイルにリダイレクトして改行された出力結果を得る
$utltrimfile = $(Get-Content (テキストファイルのパス)) -split '\D' | ?{$_ -ne '' }
$utltrimfile > (テキストファイルのパス)
777726
2020/12/03(木) 21:29:21.46ID:AP2X4U04 出来ました! ありがとうございました!
778デフォルトの名無しさん
2020/12/07(月) 00:00:56.83ID:8Ddysj0U PowerShellにinterfaceありますか? 空のクラス定義するしかないですか?
779デフォルトの名無しさん
2020/12/07(月) 00:09:24.05ID:rAKRPC/o ■Powershellコマンドを実行する
PS C:\Users\hoge> Get-NetIPConfiguration
InterfaceAlias : Wi-Fi
InterfaceIndex : 10
InterfaceDescription : TP-Link Wireless USB Adapter
NetProfile.Name : Buffalo-A-428D
(以下略)
なんかたくさん出る
■(Powershellコマンド).列の名前 を実行する
PS C:\Users\hoge> > (Get-NetIPConfiguration).NetProfile.Name
Buffalo-A-428D
.列の名前で指定したものしか出ない。
こういう(コマンド).列名っていうので、出力を絞る方法に名前ってありませんか?
PS C:\Users\hoge> Get-NetIPConfiguration
InterfaceAlias : Wi-Fi
InterfaceIndex : 10
InterfaceDescription : TP-Link Wireless USB Adapter
NetProfile.Name : Buffalo-A-428D
(以下略)
なんかたくさん出る
■(Powershellコマンド).列の名前 を実行する
PS C:\Users\hoge> > (Get-NetIPConfiguration).NetProfile.Name
Buffalo-A-428D
.列の名前で指定したものしか出ない。
こういう(コマンド).列名っていうので、出力を絞る方法に名前ってありませんか?
780デフォルトの名無しさん
2020/12/07(月) 00:52:35.54ID:fL+10lW/ grep
781デフォルトの名無しさん
2020/12/07(月) 00:55:50.26ID://YuCj5S interfaceってたぶんJava的な意味でのやつか
782デフォルトの名無しさん
2020/12/07(月) 00:57:24.19ID:8Ddysj0U >>781
そうなのよ
そうなのよ
783デフォルトの名無しさん
2020/12/07(月) 01:07:36.68ID:nVLltyNc :
だね
だね
784デフォルトの名無しさん
2020/12/07(月) 07:14:39.74ID:Zb+BuNXc785デフォルトの名無しさん
2020/12/07(月) 07:24:15.67ID:Zb+BuNXc . で出力を絞る方法、正確には対象を選ぶ方法は、一般的にはプロパティアクセスが該当するかな
786デフォルトの名無しさん
2020/12/07(月) 08:49:51.37ID:Qq2AGx/W メンバーアクセス演算子 .
https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_operators#member-access-operator-
オブジェクトのプロパティおよびメソッドにアクセスします。 メンバー名は式にすることができます。
$myProcess.peakWorkingSet
(Get-Process PowerShell).kill()
'OS', 'Platform' | Foreach-Object { $PSVersionTable. $_ }
https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_operators#member-access-operator-
オブジェクトのプロパティおよびメソッドにアクセスします。 メンバー名は式にすることができます。
$myProcess.peakWorkingSet
(Get-Process PowerShell).kill()
'OS', 'Platform' | Foreach-Object { $PSVersionTable. $_ }
787デフォルトの名無しさん
2020/12/07(月) 15:48:31.93ID:5uzreY+I copy-itemでディレクトリを指定して、内部のファイルがパス260文字以上でエラーを出すとき、そのパスを取得する方法はあります?
788デフォルトの名無しさん
2020/12/07(月) 16:04:01.41ID:8iO4bdx+ >>787
Set-ItemProperty "Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" -Name LongPathEnabled -Value 1
Set-ItemProperty "Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" -Name LongPathEnabled -Value 1
789デフォルトの名無しさん
2020/12/07(月) 18:20:51.52ID:5uzreY+I >>788
ありがとう
ただそのやり方はwin10にしか出来ないようで、win8.1ではLongPathEnabledは存在しないようです
ググってもLongPathEnabledのwin8.1版は見つからないもので……
ありがとう
ただそのやり方はwin10にしか出来ないようで、win8.1ではLongPathEnabledは存在しないようです
ググってもLongPathEnabledのwin8.1版は見つからないもので……
790デフォルトの名無しさん
2020/12/07(月) 22:33:03.33ID:wvARFKZP >>789
単に制限回避したいなら \\?\ 使えば良いんじゃないかな
https://stackoverflow.com/a/53099257
https://superuser.com/a/760601
そうじゃなくて、260文字以上のパスを探したいなら、そういうツールがいくつかあるよ
https://sourceforge.net/projects/tlpd/
単に制限回避したいなら \\?\ 使えば良いんじゃないかな
https://stackoverflow.com/a/53099257
https://superuser.com/a/760601
そうじゃなくて、260文字以上のパスを探したいなら、そういうツールがいくつかあるよ
https://sourceforge.net/projects/tlpd/
791デフォルトの名無しさん
2020/12/07(月) 23:37:26.80ID:5uzreY+I792デフォルトの名無しさん
2020/12/08(火) 15:51:45.96ID:CDSpQQd3 外部コマンド | PowerShellの関数って風にパイプでつないで処理するとき
出力側が終わるまで一旦全部バッファリングしてから、ようやくPowerShellに処理が移る感じになるんですが
並列で処理するようにするにはどうすればいいでしょうか?
出力側が終わるまで一旦全部バッファリングしてから、ようやくPowerShellに処理が移る感じになるんですが
並列で処理するようにするにはどうすればいいでしょうか?
793デフォルトの名無しさん
2020/12/10(木) 21:12:35.73ID:6BQNLUy5 #1個めループ
for($i=0; $i -le 10; $i++) {
$hoge="ikkaime_"
Write-Output $hoge$i
}
#2個めループ
for($i=0; $i -le 10; $i++) {
$hoge="nikaime_"
Write-Output $hoge$i
}
これを1個のforにまとめる素敵なアイデアございませんでしょうか。
何がしたいかというと、1個めのループ(10回)が終わったら、$hogeをniakieme_にして、
もう10回ループさせて終わるようにしたいです。
for($i=0; $i -le 10; $i++) {
$hoge="ikkaime_"
Write-Output $hoge$i
}
#2個めループ
for($i=0; $i -le 10; $i++) {
$hoge="nikaime_"
Write-Output $hoge$i
}
これを1個のforにまとめる素敵なアイデアございませんでしょうか。
何がしたいかというと、1個めのループ(10回)が終わったら、$hogeをniakieme_にして、
もう10回ループさせて終わるようにしたいです。
794デフォルトの名無しさん
2020/12/10(木) 21:25:03.78ID:3lwwmG32 $hoge="ikkaime_"
for($i=0; $i -le 20; $i++) {
if ($i -eq 10) {
$hoge="nikaime_"
}
Write-Output $hoge$i
}
for($i=0; $i -le 20; $i++) {
if ($i -eq 10) {
$hoge="nikaime_"
}
Write-Output $hoge$i
}
795デフォルトの名無しさん
2020/12/10(木) 21:59:45.86ID:/iej8cKu foreach ($hoge in 'ikkaime_', 'nikaime_') {
for ($i = 0; $i -lt 10; $i++) {
Write-Output $hoge$i
}
}
for ($i = 0; $i -lt 10; $i++) {
Write-Output $hoge$i
}
}
796デフォルトの名無しさん
2020/12/10(木) 23:27:25.70ID:uqnVDABe $ikkaime = @()
$nikaime = @()
for($i = 0; $i -le 10; $i++) {
$ikkaime += "ikkaime_$i"
$nikaime += "nikaime_$i"
}
Write-Output $ikkaime
Write-Output $nikaime
$nikaime = @()
for($i = 0; $i -le 10; $i++) {
$ikkaime += "ikkaime_$i"
$nikaime += "nikaime_$i"
}
Write-Output $ikkaime
Write-Output $nikaime
797デフォルトの名無しさん
2020/12/11(金) 03:49:50.69ID:bpjP0VBu "ikkaime_","nikaime_"|%{$hoge=$_;0..9|%{$hoge+$_}}
798793
2020/12/11(金) 23:44:28.19ID:YtFbF7ro799デフォルトの名無しさん
2020/12/11(金) 23:55:43.98ID:BGcESmPN インクリメントのループはこう書いたほうがスッキリする
foreach ($i in 0..9) {
foreach ($i in 0..9) {
800デフォルトの名無しさん
2020/12/13(日) 00:05:08.43ID:w0iK+TRN801デフォルトの名無しさん
2020/12/13(日) 01:22:24.35ID:cCJaeZ7C for ($i=1; $i -le 2; $i++){
Switch($i) {
1 {(1..10) | %{"ikkaime_"+$_}}
2 {(1..10) | %{"nikkaime_"+$_}}
}
}
Switch($i) {
1 {(1..10) | %{"ikkaime_"+$_}}
2 {(1..10) | %{"nikkaime_"+$_}}
}
}
802デフォルトの名無しさん
2020/12/13(日) 07:32:06.23ID:5EW0FlRD パイプは繋げてナンボ
UNIX文化からの流れで、シンプルなコマンド群からの組み合わせの可能性は無限大
長いパイプラインが違和感?
いやロシアからウクライナを経由してドイツまで延びてもいい…!ゴルビーもそう言ってるよ
UNIX文化からの流れで、シンプルなコマンド群からの組み合わせの可能性は無限大
長いパイプラインが違和感?
いやロシアからウクライナを経由してドイツまで延びてもいい…!ゴルビーもそう言ってるよ
803デフォルトの名無しさん
2020/12/13(日) 08:18:38.20ID:6TpS+NE1 0..9 | % { "ikkaime_$_"; "nikaime_$_" } | sort
804デフォルトの名無しさん
2020/12/13(日) 08:21:28.01ID:7zDtZqQK function hoge($fuga) {
0..9 | ForEach-Object {Write-Output "$fuga$_"}
}
hoge 'ikkaime'
hoge 'nikaime'
0..9 | ForEach-Object {Write-Output "$fuga$_"}
}
hoge 'ikkaime'
hoge 'nikaime'
805デフォルトの名無しさん
2020/12/13(日) 08:23:17.62ID:7zDtZqQK >>800
"ikkaime_","nikaime_" | %{$hoge=$_;0..9} | %{$hoge+$_}
"ikkaime_","nikaime_" | %{$hoge=$_;0..9} | %{$hoge+$_}
806デフォルトの名無しさん
2020/12/13(日) 10:24:56.32ID:aJyBOeQT807デフォルトの名無しさん
2020/12/13(日) 20:15:51.92ID:w0iK+TRN808デフォルトの名無しさん
2020/12/13(日) 22:17:37.96ID:aJyBOeQT ゴルビーのパイプライン大作戦にだって行って帰ってくるようなパイプは無いだろ
809デフォルトの名無しさん
2020/12/14(月) 13:38:52.97ID:MCQs+fzK 変数を事前に全部固めた書いたほうがわかりやすいと思うのですが、
ループ前に定義した変数の値に、ループ時の変数を入れ込む方法がわかりません
$mynameis変数をループ中(コメントの位置)に持ってくると、問題ないんですが、
なんとか#変数ってしてあるところにもってきたいんです
定義したときには空で、あとから追加で変数に値をいれることってできないんでしょうか?
ソース
#変数
$watashi = "私は"
$fname = "佐藤"
$mynameis = "$watashi$fname$lname"
foreach ($lname in "一郎","二郎","三郎"){
#$mynameis = "$watashi$fname$lname"
#名を名乗る
Write-Output $mynameis
}
ループ前に定義した変数の値に、ループ時の変数を入れ込む方法がわかりません
$mynameis変数をループ中(コメントの位置)に持ってくると、問題ないんですが、
なんとか#変数ってしてあるところにもってきたいんです
定義したときには空で、あとから追加で変数に値をいれることってできないんでしょうか?
ソース
#変数
$watashi = "私は"
$fname = "佐藤"
$mynameis = "$watashi$fname$lname"
foreach ($lname in "一郎","二郎","三郎"){
#$mynameis = "$watashi$fname$lname"
#名を名乗る
Write-Output $mynameis
}
810デフォルトの名無しさん
2020/12/14(月) 14:58:28.73ID:0uVb17k3 $mynameis = { "$watashi$fname$lname" }
$watashi = "私は"
$fname = "佐藤"
foreach ($lname in "一郎","二郎","三郎"){
#名を名乗る
Write-Output (mynameis)
}
$watashi = "私は"
$fname = "佐藤"
foreach ($lname in "一郎","二郎","三郎"){
#名を名乗る
Write-Output (mynameis)
}
811デフォルトの名無しさん
2020/12/14(月) 15:01:37.07ID:0uVb17k3 >Write-Output (mynameis)
Write-Output (&$mynameis)
こうかも、PowerShell難しすぎ
Write-Output (&$mynameis)
こうかも、PowerShell難しすぎ
812デフォルトの名無しさん
2020/12/14(月) 21:21:03.56ID:vj7TAroN foreachはスコープ作らなかったと思うけど
何が問題なの?
何が問題なの?
813デフォルトの名無しさん
2020/12/14(月) 21:31:50.90ID:vj7TAroN ごめんようやく理解した
最初にNew-Variableなり空文字で宣言するだけじゃ納得いかんのかな
変数が自動で書き変わるのは正直気持ち悪い
最初にNew-Variableなり空文字で宣言するだけじゃ納得いかんのかな
変数が自動で書き変わるのは正直気持ち悪い
814デフォルトの名無しさん
2020/12/14(月) 21:43:34.54ID:MBsazS7x $watashi = "私は"
$fname = "佐藤"
$mynameis = "$watashi$fname{0}"
foreach ($lname in "一郎","二郎","三郎"){
Write-Output ($mynameis -f $lname)
}
$fname = "佐藤"
$mynameis = "$watashi$fname{0}"
foreach ($lname in "一郎","二郎","三郎"){
Write-Output ($mynameis -f $lname)
}
815デフォルトの名無しさん
2020/12/14(月) 22:30:25.12ID:LFps+YXF モダンな言語を使って書くレガシープログラミングだね
先頭宣言教から改宗してもらうのが一番丸く収まるとか言ったらダメなんだろうな
先頭宣言教から改宗してもらうのが一番丸く収まるとか言ったらダメなんだろうな
816デフォルトの名無しさん
2020/12/14(月) 22:33:35.98ID:/tZ0PSGV そこは鈴木にしようぜ
817デフォルトの名無しさん
2020/12/14(月) 23:10:29.87ID:EXeKWskh できないことはないってだけで、やめたほうがいい
他の人がコードを読む時にとても困惑させるし
半年後に自分が読んでも理解に苦しむかもしれない
他の人がコードを読む時にとても困惑させるし
半年後に自分が読んでも理解に苦しむかもしれない
818デフォルトの名無しさん
2020/12/14(月) 23:57:40.98ID:CBAGo1je 意外とPerl的なスパゲッティの罠がある言語なのね
819デフォルトの名無しさん
2020/12/15(火) 03:55:48.18ID:eKJAj5sp >>810みたいにスクリプトブロックで評価順序制御するのは別におかしくないと思うけど
820デフォルトの名無しさん
2020/12/15(火) 07:38:16.79ID:T2M/UCWI 変数宣言を冒頭に集めるという、昔の言語ではルールだったけどデメリットの方が多いとして廃れた風習
その実現にスクリプトブロックを多用するのは可読性を落とすからやめとけという話じゃないかな
古典言語には存在しなかった文字列補間は、宣言したスコープで即時解決されるものだから冒頭部でリテラルを宣言する風習と相性が悪い
記法が似ていて混同したのだろうけど、質問者が暗に期待していたであろうフォーマットパターン文字列としてはPowershellでは -f 演算子が用意されているのでそれを使えばいい
その実現にスクリプトブロックを多用するのは可読性を落とすからやめとけという話じゃないかな
古典言語には存在しなかった文字列補間は、宣言したスコープで即時解決されるものだから冒頭部でリテラルを宣言する風習と相性が悪い
記法が似ていて混同したのだろうけど、質問者が暗に期待していたであろうフォーマットパターン文字列としてはPowershellでは -f 演算子が用意されているのでそれを使えばいい
821デフォルトの名無しさん
2020/12/15(火) 07:38:27.49ID:T2M/UCWI この話をPowershellの罠とされてしまうのはさすがにかわいそう
822デフォルトの名無しさん
2020/12/15(火) 13:15:17.29ID:HMGpB1Xp $watashi = "私は"
$fname = "佐藤"
$lname = "一郎","二郎","三郎"
$lname.ForEach{Write-Output "$watashi$fname$_"}
$fname = "佐藤"
$lname = "一郎","二郎","三郎"
$lname.ForEach{Write-Output "$watashi$fname$_"}
823デフォルトの名無しさん
2020/12/15(火) 13:34:51.98ID:/uFuBiiy "私は"と"佐藤"を分ける意味がない
気持ちは分からなくもないけど
気持ちは分からなくもないけど
824デフォルトの名無しさん
2020/12/16(水) 09:44:04.15ID:VCJoAcsJ 1. webからテキストをDLしてカレントディレクトリに Shift-JIS で保存したい。どう書けばいいですか?
https://example.com/test.txt
文字コード:UTF-8
コマンドプロンプトから以下でDL出来るのまでは調べて分かったんだけど文字コードを変えて保存するのが分かりません
powershell -Command "Invoke-WebRequest https://example.com/test.txt -OutFile test.txt"
コマンドプロンプトにコピペかバッチから使いたいのでワンライナーで出来ると嬉しいです
2. 1に似た処理でweb上のUTF-8のtest.txtをカレントディレクトリのShift-JISのabc.txtに追記したい
こちらもコマンドプロンプトから powershell -Command "〜 みたいに出来ればワンライナーで
https://example.com/test.txt
文字コード:UTF-8
コマンドプロンプトから以下でDL出来るのまでは調べて分かったんだけど文字コードを変えて保存するのが分かりません
powershell -Command "Invoke-WebRequest https://example.com/test.txt -OutFile test.txt"
コマンドプロンプトにコピペかバッチから使いたいのでワンライナーで出来ると嬉しいです
2. 1に似た処理でweb上のUTF-8のtest.txtをカレントディレクトリのShift-JISのabc.txtに追記したい
こちらもコマンドプロンプトから powershell -Command "〜 みたいに出来ればワンライナーで
825デフォルトの名無しさん
2020/12/16(水) 13:22:09.75ID:JHzHImy2 >>824
Invoke-WebRequestのOutFileオプションじゃなくて、EncodingオプションのあるOut-Fileコマンドレットの方を使ったら?
(cmdじゃなくてpowershellから実行すれば、powershell -Command ""の部分はいらないよ)
Invoke-WebRequest https://example.com/test.txt | Out-File -Encoding default test.txt
追記するなら、Appendオプション
Invoke-WebRequest https://example.com/test.txt | Out-File -Encoding default abc.txt -Append
Invoke-WebRequestのOutFileオプションじゃなくて、EncodingオプションのあるOut-Fileコマンドレットの方を使ったら?
(cmdじゃなくてpowershellから実行すれば、powershell -Command ""の部分はいらないよ)
Invoke-WebRequest https://example.com/test.txt | Out-File -Encoding default test.txt
追記するなら、Appendオプション
Invoke-WebRequest https://example.com/test.txt | Out-File -Encoding default abc.txt -Append
826デフォルトの名無しさん
2020/12/16(水) 19:10:36.45ID:VCJoAcsJ >>825
レスありがとうございます。ですが出来ませんでした
Fileは作られるのですが内容が以下のようになります
StatusCode : 200
StatusDescription : OK
Content : ここに中身が複数行 尻切れ
RawContent : HTTP/1.1 200 OK
Connection: keep-alive
x-robots-tag: noarchive, nofollow, noindex
なんか色々
Forms : {}
Headers : 諸々
Images : {}
InputFields : {}
Links : {}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength :
中身、Content +尻切れ部分 で保存するにはどう書けばいいですか?
Win10.0.18363.1256 PSVersion 5.1.18362.1171
レスありがとうございます。ですが出来ませんでした
Fileは作られるのですが内容が以下のようになります
StatusCode : 200
StatusDescription : OK
Content : ここに中身が複数行 尻切れ
RawContent : HTTP/1.1 200 OK
Connection: keep-alive
x-robots-tag: noarchive, nofollow, noindex
なんか色々
Forms : {}
Headers : 諸々
Images : {}
InputFields : {}
Links : {}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength :
中身、Content +尻切れ部分 で保存するにはどう書けばいいですか?
Win10.0.18363.1256 PSVersion 5.1.18362.1171
827デフォルトの名無しさん
2020/12/16(水) 20:03:25.26ID:kYgyiRJ/ (Invoke-WebRequest https://example.com/test.txt).Content | Out-File -Encoding default test.txt
828デフォルトの名無しさん
2020/12/16(水) 20:37:34.73ID:VCJoAcsJ >>827
出来ました!ありがとうございます!
なんかオリジナル(UTF-8 LF)に比べ変換した(Shift-JIS CRLF)では末尾に改行コード1つ余分に追加されてしまいますが。。
バッチで読み直して再保存すれば行けそうです
やりたいことが可能になりました。感謝!
出来ました!ありがとうございます!
なんかオリジナル(UTF-8 LF)に比べ変換した(Shift-JIS CRLF)では末尾に改行コード1つ余分に追加されてしまいますが。。
バッチで読み直して再保存すれば行けそうです
やりたいことが可能になりました。感謝!
829デフォルトの名無しさん
2020/12/16(水) 21:11:10.07ID:CXRufgbD >末尾に改行コード1つ余分に追加されてしまいます
こういうの気持ち悪い!
誰か助けてあげて!
こういうの気持ち悪い!
誰か助けてあげて!
830デフォルトの名無しさん
2020/12/16(水) 23:24:39.55ID:kYgyiRJ/ ググって出てくるやつだとPowershellのVer5以上なら
(Invoke-WebRequest https://example.com/test.txt).Content | Out-File -Encoding default test.txt -NoNewline
(Invoke-WebRequest https://example.com/test.txt).Content | Out-File -Encoding default test.txt -NoNewline
831デフォルトの名無しさん
2020/12/16(水) 23:38:36.87ID:VCJoAcsJ832デフォルトの名無しさん
2020/12/17(木) 04:50:30.78ID:aeRfyZfG >>831
.NETのString.Replace()
.NETのString.Replace()
833デフォルトの名無しさん
2020/12/17(木) 05:23:59.73ID:P27ySftq powershell -Command "%{((Invoke-WebRequest https://example.com/test.txt).Content) -join '`r`n'}|Out-File abc.txt -Encoding default -Append -NoNewline"
powershell -Command "%{((Invoke-WebRequest https://example.com/test.txt).Content) -replace '`n,`r`n'}|Out-File abc.txt -Encoding default -Append -NoNewline"
リファレンスとにらめっこし何百回と色々試してこれに行き着いてこれなら行けそうと思ったのですがLFのまま。。
Get-ContentとかSet-Contentとかも試してみたのですが基礎的な書き方も知らず当てずっぽうではダメなようです
基礎的な事から覚えないとちょっと自分には無理かもです^^;
powershell -Command "%{((Invoke-WebRequest https://example.com/test.txt).Content) -replace '`n,`r`n'}|Out-File abc.txt -Encoding default -Append -NoNewline"
リファレンスとにらめっこし何百回と色々試してこれに行き着いてこれなら行けそうと思ったのですがLFのまま。。
Get-ContentとかSet-Contentとかも試してみたのですが基礎的な書き方も知らず当てずっぽうではダメなようです
基礎的な事から覚えないとちょっと自分には無理かもです^^;
834デフォルトの名無しさん
2020/12/17(木) 11:05:46.69ID:IMvwa6Jv >>833
-replace '`n,`r`n' のところは -replace '`n','`r`n' じゃない?
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-5.1#replacement-operator
-replace '`n,`r`n' のところは -replace '`n','`r`n' じゃない?
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-5.1#replacement-operator
835デフォルトの名無しさん
2020/12/17(木) 11:14:10.52ID:aoellUFv SurfacePro8の、一応待たれてはいるがあまり期待されてない感は異常
836デフォルトの名無しさん
2020/12/17(木) 14:29:13.42ID:hxo0ZZXM >>833-834
"`n", "`r`n" じゃねーの?
"`n", "`r`n" じゃねーの?
837デフォルトの名無しさん
2020/12/17(木) 17:50:06.55ID:P27ySftq >>836
ヒントありがとうございます
最終的に以下で出来ました
ren jane2ch.brd jane2ch.brd.bak &© jane2ch.brd.bak jane2ch.brd &&powershell -Command "(Invoke-WebRequest https://example.com/bbsmenu.brd).Content -replace \"`n\",\"`r`n\"|Out-File jane2ch.brd -Encoding default -Append -NoNewline"
アドバイス下さった方皆ありがとう
ヒントありがとうございます
最終的に以下で出来ました
ren jane2ch.brd jane2ch.brd.bak &© jane2ch.brd.bak jane2ch.brd &&powershell -Command "(Invoke-WebRequest https://example.com/bbsmenu.brd).Content -replace \"`n\",\"`r`n\"|Out-File jane2ch.brd -Encoding default -Append -NoNewline"
アドバイス下さった方皆ありがとう
838デフォルトの名無しさん
2020/12/18(金) 21:36:03.86ID:NKeMhQjy Invoke-WebRequestはaliasで短くできるよ
(Get-Alias -Definition Invoke-WebRequest).Name
curl
iwr
wget
Out-Fileはaliasが無い
(Get-Alias -Definition Invoke-WebRequest).Name
curl
iwr
wget
Out-Fileはaliasが無い
839デフォルトの名無しさん
2021/01/01(金) 16:52:16.58ID:jgut+Hkv 関数とクラスメソッドでreturnまわりの振舞い全然違うのかよ
ほんまクソやな
ほんまクソやな
840デフォルトの名無しさん
2021/01/01(金) 17:32:29.13ID:iwrlPpxO 自分が言語を知らないだけなのに言語を叩くやつは技術力があれだって書込みをLinuxスレで見た
謙虚になって勉強もせずに自分の知ってる言語に固執するらしい
謙虚になって勉強もせずに自分の知ってる言語に固執するらしい
841デフォルトの名無しさん
2021/01/01(金) 18:39:57.15ID:K4bi2CUk 詭弁だね
842デフォルトの名無しさん
2021/01/02(土) 12:59:00.83ID:6NGWiCza そんなウンコになるほど振る舞い違ったっけ
843デフォルトの名無しさん
2021/01/02(土) 14:38:10.21ID:SsQKjWAu 関数のreturnは単に関数を抜けるだけ
出力はストリームを使う
クラスのメソッドはreturn文でのみ値を返す
多くの言語でよくみられるやつ
Write-Outputしても無視される
出力はストリームを使う
クラスのメソッドはreturn文でのみ値を返す
多くの言語でよくみられるやつ
Write-Outputしても無視される
844デフォルトの名無しさん
2021/01/02(土) 14:45:10.44ID:o3T1iAcx 変数のスコープも違うよねー
function f() {
echo $a
}
$a = "test"
f
関数はこれが気持ち悪すぎてメソッドしか使わなくなった
function f() {
echo $a
}
$a = "test"
f
関数はこれが気持ち悪すぎてメソッドしか使わなくなった
845デフォルトの名無しさん
2021/01/03(日) 01:23:46.88ID:RCSnKIYE >>843,844
なるほどありがd
なるほどありがd
846デフォルトの名無しさん
2021/01/03(日) 01:30:49.55ID:BT1KEPia 質問です。
.NETのKeyedCollectionクラスを使用したいのですが、
パイプラインに関するエラーメッセージが出てうまくいきません。
解決方法を教えていただけませんか。
環境はWindowsPowerShell 5.1をVSCode上で実行しています。
ソースコードとエラーメッセージは下記のとおりです。
◆ソースコード
class Record {
[string] $Key
[double] $Data
}
class MyCollection : System.Collections.ObjectModel.KeyedCollection[string, Record] {
[string] GetKeyForItem([Record] $item) {
return $item.Key
}
}
$r = [Record]@{ Key = "pi"; Data = 3.14 }
$c = [MyCollection]::new()
$c.Add($r)
$c["pi"].Data # 3.14と表示されてほしい
◆エラーメッセージ:
パイプラインの作成中にエラーが発生しました。
+ CategoryInfo : NotSpecified: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : RuntimeException
以上、よろしくおねがいします。
.NETのKeyedCollectionクラスを使用したいのですが、
パイプラインに関するエラーメッセージが出てうまくいきません。
解決方法を教えていただけませんか。
環境はWindowsPowerShell 5.1をVSCode上で実行しています。
ソースコードとエラーメッセージは下記のとおりです。
◆ソースコード
class Record {
[string] $Key
[double] $Data
}
class MyCollection : System.Collections.ObjectModel.KeyedCollection[string, Record] {
[string] GetKeyForItem([Record] $item) {
return $item.Key
}
}
$r = [Record]@{ Key = "pi"; Data = 3.14 }
$c = [MyCollection]::new()
$c.Add($r)
$c["pi"].Data # 3.14と表示されてほしい
◆エラーメッセージ:
パイプラインの作成中にエラーが発生しました。
+ CategoryInfo : NotSpecified: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : RuntimeException
以上、よろしくおねがいします。
847デフォルトの名無しさん
2021/01/03(日) 04:03:05.06ID:leX2V3Ud クラスごとにファイル分けてドットソースで読み込んで
848デフォルトの名無しさん
2021/01/03(日) 04:09:59.45ID:ORVbOLX2 >>847
うちでも再現したわ Win10 1909
一応定義をC#で書いたら動いたから載せておく
Add-Type @"
public class Record {
public string Key;
public double Data;
}
public class MyCollection : System.Collections.ObjectModel.KeyedCollection<string, Record> {
protected override string GetKeyForItem(Record item) {
return item.Key;
}
}
"@
$r = [Record]@{ Key = "pi"; Data = 3.14 }
$c = [MyCollection]::new()
$c.Add($r)
$c["pi"].Data # 3.14と表示されてほしい
うちでも再現したわ Win10 1909
一応定義をC#で書いたら動いたから載せておく
Add-Type @"
public class Record {
public string Key;
public double Data;
}
public class MyCollection : System.Collections.ObjectModel.KeyedCollection<string, Record> {
protected override string GetKeyForItem(Record item) {
return item.Key;
}
}
"@
$r = [Record]@{ Key = "pi"; Data = 3.14 }
$c = [MyCollection]::new()
$c.Add($r)
$c["pi"].Data # 3.14と表示されてほしい
849デフォルトの名無しさん
2021/01/03(日) 04:29:20.63ID:ORVbOLX2850デフォルトの名無しさん
2021/01/03(日) 08:40:29.46ID:MW0NgZmT PowerShellのclassってどの段階で解釈されるんだろう
851デフォルトの名無しさん
2021/01/03(日) 12:17:05.18ID:n1qZMfJK 実行文が入っていない
単にコンパイルされる文、型の宣言・定義しか入っていない。
インスタンスを作ったりする、実メモリの割り付けをされる文がない
単にコンパイルされる文、型の宣言・定義しか入っていない。
インスタンスを作ったりする、実メモリの割り付けをされる文がない
852846
2021/01/03(日) 17:02:17.09ID:BT1KEPia >>851
クラス定義のps1ファイルの中身はそうすべき、ということでしょうか?
>>849
確かにコンソールで全て定義すると動きますね。
クラス周りの動きが難しいです。。。
>>847
ありがとうございます。
下記のように書き直したところうまく動きました。
◆Record.ps1
class Record {
[string] $Key
[double] $Data
}
◆MyCollection.ps1
. .\Record.ps1 # ←これは無くても動く…??
class MyCollection : System.Collections.ObjectModel.KeyedCollection[string, Record] {
[string] GetKeyForItem([Record] $item) {
return $item.Key
}
}
◆Test.ps1
. .\Record.ps1
. .\MyCollection.ps1
$r = [Record]@{ Key = "pi"; Data = 3.14 }
$c = [MyCollection]::new()
$c.Add($r)
$c["pi"].Data # 3.14と表示されてほしい
クラス定義のps1ファイルの中身はそうすべき、ということでしょうか?
>>849
確かにコンソールで全て定義すると動きますね。
クラス周りの動きが難しいです。。。
>>847
ありがとうございます。
下記のように書き直したところうまく動きました。
◆Record.ps1
class Record {
[string] $Key
[double] $Data
}
◆MyCollection.ps1
. .\Record.ps1 # ←これは無くても動く…??
class MyCollection : System.Collections.ObjectModel.KeyedCollection[string, Record] {
[string] GetKeyForItem([Record] $item) {
return $item.Key
}
}
◆Test.ps1
. .\Record.ps1
. .\MyCollection.ps1
$r = [Record]@{ Key = "pi"; Data = 3.14 }
$c = [MyCollection]::new()
$c.Add($r)
$c["pi"].Data # 3.14と表示されてほしい
853851
2021/01/03(日) 18:34:59.83ID:n1qZMfJK ファイルA の中で、ファイルB を読み込むと、
依存ファイルであるファイルBが、先に実行される事が確定するのだろう
一方、同じファイルに、複数のクラスを書くと、依存関係が分からないのだろう
依存ファイルであるファイルBが、先に実行される事が確定するのだろう
一方、同じファイルに、複数のクラスを書くと、依存関係が分からないのだろう
854デフォルトの名無しさん
2021/01/07(木) 01:13:26.70ID:MvQgNxU+ すいません、Powershellって、変数が空だった場合の
デフォルト値を設定する方法ってありますか?
bashでいうところの、
${hoge:-fuga}
って方法です。
デフォルト値を設定する方法ってありますか?
bashでいうところの、
${hoge:-fuga}
って方法です。
855デフォルトの名無しさん
2021/01/07(木) 02:45:37.83ID:CsAW39lY ねーよ
VBSで言うIsEmpty相当すらない
せいぜい$nullかどうか調べてちっ仕方ねーなってやるしかない
VBSで言うIsEmpty相当すらない
せいぜい$nullかどうか調べてちっ仕方ねーなってやるしかない
856デフォルトの名無しさん
2021/01/07(木) 08:03:25.19ID:1A0NtNS9 ($nullでなく)空って状態はないと思うから、しいてやるならGet-Variableで変数が存在するか調べるくらいかね
857デフォルトの名無しさん
2021/01/07(木) 08:17:46.65ID:7KuEq4Kq >>854
PowerShell 7の??演算子はいかがでしょうか
PowerShell 7の??演算子はいかがでしょうか
858デフォルトの名無しさん
2021/01/07(木) 08:28:41.55ID:6ewH2FY0 >>854
変数が空の定義次第だけど$nullでよくてPowerShell 7以降なら$hoge ?? 'fuga' でいける
空の定義に空文字を含むとかPowerShell 6以下とかなら素直に if([string]::IsNullOrEmpty($hoge)){ 'fuga' } else { $hoge } とやればいい
変数が空の定義次第だけど$nullでよくてPowerShell 7以降なら$hoge ?? 'fuga' でいける
空の定義に空文字を含むとかPowerShell 6以下とかなら素直に if([string]::IsNullOrEmpty($hoge)){ 'fuga' } else { $hoge } とやればいい
859デフォルトの名無しさん
2021/01/07(木) 08:34:36.49ID:6ewH2FY0 >>856
変数の存在確認ならTest-Path Variable:hogeの方が楽だと思う
変数の存在確認ならTest-Path Variable:hogeの方が楽だと思う
860デフォルトの名無しさん
2021/01/07(木) 13:21:05.91ID:ht1NLYQc 7って便利なんだな
861デフォルトの名無しさん
2021/01/07(木) 21:21:38.47ID:R2rezzh3862デフォルトの名無しさん
2021/01/07(木) 21:59:07.15ID:o0FdcV6b えっ?
863デフォルトの名無しさん
2021/01/07(木) 22:43:44.97ID:IvTx7xdj foo,barも知らない人でしょ
864デフォルトの名無しさん
2021/01/07(木) 22:50:20.03ID:iqGL0Mlk ほげふがの語源ってサザエさんだったの!? マジで!
865デフォルトの名無しさん
2021/01/08(金) 00:22:33.24ID:s1r0Khta 来週もまた観てくださいね
$hong -or $fouf
$hong -or $fouf
866デフォルトの名無しさん
2021/01/08(金) 10:41:54.36ID:zUQduDYO 逆にメタ変数でhoge、fugaってそこまでマイナーか?
867デフォルトの名無しさん
2021/01/08(金) 11:27:10.91ID:3ONG9Jp/ >>866
誰もマイナーとか言ってない
誰もマイナーとか言ってない
868デフォルトの名無しさん
2021/01/08(金) 11:53:36.70ID:zUQduDYO869デフォルトの名無しさん
2021/01/08(金) 12:25:26.48ID:eXVg8SYp870デフォルトの名無しさん
2021/01/08(金) 12:25:53.52ID:eXVg8SYp これ万能論法ですな
871デフォルトの名無しさん
2021/01/08(金) 12:36:55.29ID:2lGGPyYq そう思ってるのは言ってる本人だけだろう
872デフォルトの名無しさん
2021/01/09(土) 01:01:42.83ID:KQEfE/JM ※すべてのネットワークアダプタを無効にして、
Get-NetConnectionProfileは必ずエラーになる状態で実行しています。
$result=Get-NetConnectionProfile -InterfaceAlias Wi-Fi 2>$null
$?
False
$result=(Get-NetConnectionProfile -InterfaceAlias Wi-Fi 2>$null)
$?
True
この場合、マル括弧がどんな働きをして
結果が変わってしまうのか教えてください。
Get-NetConnectionProfileは必ずエラーになる状態で実行しています。
$result=Get-NetConnectionProfile -InterfaceAlias Wi-Fi 2>$null
$?
False
$result=(Get-NetConnectionProfile -InterfaceAlias Wi-Fi 2>$null)
$?
True
この場合、マル括弧がどんな働きをして
結果が変わってしまうのか教えてください。
873デフォルトの名無しさん
2021/01/09(土) 01:03:45.10ID:KQEfE/JM ちなみにこうしても
$result=Get-NetConnectionProfile -InterfaceAlias Wi-Fi
エラーメッセージ
$?
False
$result=(Get-NetConnectionProfile -InterfaceAlias Wi-Fi)
エラーメッセージ
$?
True
という状態でした。
$result=Get-NetConnectionProfile -InterfaceAlias Wi-Fi
エラーメッセージ
$?
False
$result=(Get-NetConnectionProfile -InterfaceAlias Wi-Fi)
エラーメッセージ
$?
True
という状態でした。
874デフォルトの名無しさん
2021/01/09(土) 08:27:17.19ID:kPw1IBO3 >>872-873
まあバグ(MS的には仕様とも言う)みたいなもんやね
Until PowerShell 7, containing a statement within parentheses (...), subexpression syntax $(...) or array expression @(...) always reset $? to True , so that (Write-Error) shows $? as True.
This has been changed in PowerShell 7, so that $? will always reflect the actual success of the last command run in these expressions.
https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-7.1#short-description
なのでPowerShellを7にすれば解決するかと
まあバグ(MS的には仕様とも言う)みたいなもんやね
Until PowerShell 7, containing a statement within parentheses (...), subexpression syntax $(...) or array expression @(...) always reset $? to True , so that (Write-Error) shows $? as True.
This has been changed in PowerShell 7, so that $? will always reflect the actual success of the last command run in these expressions.
https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-7.1#short-description
なのでPowerShellを7にすれば解決するかと
875デフォルトの名無しさん
2021/01/09(土) 09:13:27.43ID:iGxXP/Ic 5.1はメンテしないってことか?
OSにデフォで入ってるバージョンなんだから直せよ
OSにデフォで入ってるバージョンなんだから直せよ
876デフォルトの名無しさん
2021/01/09(土) 09:49:28.96ID:kPw1IBO3 いきなり直したらユーザースクリプトのバグが顕在化したりするだろ
どうでもいいようなスクリプトなら7に上げろよ
どうでもいいようなスクリプトなら7に上げろよ
877デフォルトの名無しさん
2021/01/09(土) 10:38:48.10ID:amtktMoR どうでもいいスクリプトで問題回避できるなら7に上げなくてもいいんじゃね。
878デフォルトの名無しさん
2021/01/09(土) 11:36:00.49ID:KQEfE/JM879デフォルトの名無しさん
2021/01/09(土) 11:45:27.45ID:vKxQ0OMt880デフォルトの名無しさん
2021/01/09(土) 16:15:40.54ID:WaDdsN2m881デフォルトの名無しさん
2021/01/10(日) 04:54:33.84ID:3v4yt86U 以下の表記の意味を教えてください。
void Queue[TResponse](Google.Apis.Requests.IClientServiceRequest request, Google.Apis.Requests.BatchRequest+OnResponse`1[TResponse] callback)
メソッドに角カッコ?や、型指定に+や`1[TResponse]の意味がわかりませんでした。
$batch = New-Object Google.Apis.Requests.BatchRequst($service)
$batch.Queue
で表示される内容です。
void Queue[TResponse](Google.Apis.Requests.IClientServiceRequest request, Google.Apis.Requests.BatchRequest+OnResponse`1[TResponse] callback)
メソッドに角カッコ?や、型指定に+や`1[TResponse]の意味がわかりませんでした。
$batch = New-Object Google.Apis.Requests.BatchRequst($service)
$batch.Queue
で表示される内容です。
882デフォルトの名無しさん
2021/01/10(日) 08:11:25.80ID:a907yL+h クラスのメンバーにクラスがある時は+になるんじゃなかったか
System.Environment+SpecialFolder みたいな
[TResponse]はジェネリックの型引数
`1は型引数を1つ取るって意味
System.Environment+SpecialFolder みたいな
[TResponse]はジェネリックの型引数
`1は型引数を1つ取るって意味
883881
2021/01/10(日) 21:15:33.29ID:3v4yt86U884デフォルトの名無しさん
2021/01/12(火) 16:53:39.85ID:0UGYDHaB pythonに飲み込まれるってマジ?
885デフォルトの名無しさん
2021/01/12(火) 18:35:28.45ID:U7HouJQi pythonが吐血しちゃいますよ
886デフォルトの名無しさん
2021/01/13(水) 11:04:50.14ID:u12/DUzm >>884
え?Pythonから.NET Framework扱えるようになるの?
え?Pythonから.NET Framework扱えるようになるの?
887デフォルトの名無しさん
2021/01/13(水) 12:04:34.41ID:JJnXAm01 知らんけど今はまだ使えないの?
888デフォルトの名無しさん
2021/01/13(水) 12:35:42.75ID:u12/DUzm ironpythonなら
889デフォルトの名無しさん
2021/01/16(土) 08:03:53.11ID:4aouipyb890デフォルトの名無しさん
2021/01/18(月) 22:22:09.29ID:6Ncg8pZo 【D:\】の全てのフォルダやファイルに対して、作成日時や最終アクセス日時などを設定したいのですが、
PS D:\> Get-ChildItem -Path "D:\" | Where-Object { $_ -is [System.IO.FileInfo] } | ForEach-Object { Set-ItemProperty $_.FullName -Name CreationTime -Value "2021/01/01 00:00:00" }
ではエラーが出ます。
何がいけないのでしょうか?
PS D:\> Get-ChildItem -Path "D:\" | Where-Object { $_ -is [System.IO.FileInfo] } | ForEach-Object { Set-ItemProperty $_.FullName -Name CreationTime -Value "2021/01/01 00:00:00" }
ではエラーが出ます。
何がいけないのでしょうか?
891デフォルトの名無しさん
2021/01/18(月) 22:59:36.90ID:Pb59NPOt 例えば特定の一つのファイルやフォルダなら上手く行くとか
パイプを分解してどこでエラーになってるのかを突き止めるとか
丸投げするにしてもエラーメッセージ位は出してあげると答える人も喜ぶと思いますよ
パイプを分解してどこでエラーになってるのかを突き止めるとか
丸投げするにしてもエラーメッセージ位は出してあげると答える人も喜ぶと思いますよ
892デフォルトの名無しさん
2021/01/19(火) 02:44:39.14ID:m3MeBQ6p 1.D:\が存在していない
2.D:\へのアクセス権がない
3.D:\にあるファイルに読み取り専用属性が設定されてるものが混ざってる
どれかな?
Where-Object { $_ -is [System.IO.FileInfo] }抜き、ファイルに限定しないで実行したときは
フォルダへのアクセス時にエクスプローラー開いてると
”別のプロセスで使用されているためアクセスできません”となった(たとえ操作対象のフォルダを開いていなくても)
変更された日時を確認するためにエクスプローラー開いたまま実行してたりする?
2.D:\へのアクセス権がない
3.D:\にあるファイルに読み取り専用属性が設定されてるものが混ざってる
どれかな?
Where-Object { $_ -is [System.IO.FileInfo] }抜き、ファイルに限定しないで実行したときは
フォルダへのアクセス時にエクスプローラー開いてると
”別のプロセスで使用されているためアクセスできません”となった(たとえ操作対象のフォルダを開いていなくても)
変更された日時を確認するためにエクスプローラー開いたまま実行してたりする?
893デフォルトの名無しさん
2021/01/19(火) 21:02:07.64ID:qrtgnbPs # set the target folder path
$targetFolder = 'I:\';
# get all files including files in sub folders
$itemList = Get-ChildItem $targetFolder -Recurse;
foreach($item in $itemList){
$item.CreationTime = '2020/12/21 00:00:00'
}
なスクリプトで実行したらエラーなく出来ました。
お騒がせしてすみませんでした。
$targetFolder = 'I:\';
# get all files including files in sub folders
$itemList = Get-ChildItem $targetFolder -Recurse;
foreach($item in $itemList){
$item.CreationTime = '2020/12/21 00:00:00'
}
なスクリプトで実行したらエラーなく出来ました。
お騒がせしてすみませんでした。
894デフォルトの名無しさん
2021/01/19(火) 23:49:36.84ID:XQEllFmW895デフォルトの名無しさん
2021/01/20(水) 10:29:40.54ID:sOzWFlEJ エクスプローラーとか、バックグラウンドで動いているシステムなどが、
フォルダをロックしていたら、失敗する
だから、タイミングによって、成功したり失敗したりする
読み取りロックは、読み取り同士では共有できるけど、
書き込みロックは、その他すべてと共有できないから、失敗する確率が高い
フォルダをロックしていたら、失敗する
だから、タイミングによって、成功したり失敗したりする
読み取りロックは、読み取り同士では共有できるけど、
書き込みロックは、その他すべてと共有できないから、失敗する確率が高い
896デフォルトの名無しさん
2021/01/25(月) 21:14:40.94ID:PMAucoEc897デフォルトの名無しさん
2021/01/27(水) 19:49:56.64ID:BJM8Dy5y テキストファイルに設定できるストリームって何に使うんすか?
898デフォルトの名無しさん
2021/01/27(水) 21:16:07.96ID:lPCF/h8Q テキストストリームの事なのかNTFSの代替データストリームの事なのか
どちらなんだ
どちらなんだ
899デフォルトの名無しさん
2021/01/27(水) 22:11:57.22ID:qq3K45Kg 代替データストリームはテキストに限った話じゃないのでは
900デフォルトの名無しさん
2021/01/27(水) 22:45:50.85ID:9akTDBYB テキストに限った話ではないけど、質問者が正確に把握してるともまた限らない
901デフォルトの名無しさん
2021/01/29(金) 23:59:43.31ID:t1LR5As2 PoweShellのクラスで、C#と同様にインデクサーを定義することはできますか?
例えば、あるクラスのインスタンス$hogeに対して
$hoge[$i] という感じで添字でアクセスしたいです。
例えば、あるクラスのインスタンス$hogeに対して
$hoge[$i] という感じで添字でアクセスしたいです。
902デフォルトの名無しさん
2021/01/31(日) 14:37:31.38ID:jsWOzGKR C#の演算子オーバーロードがPSで使えるかと同じ無意味な質問
903デフォルトの名無しさん
2021/01/31(日) 16:01:58.79ID:sgLd3qg+ >>902
使えるの?
使えるの?
904デフォルトの名無しさん
2021/01/31(日) 17:07:09.19ID:Ti7TRi+9905デフォルトの名無しさん
2021/01/31(日) 17:24:57.96ID:x4IKZ5QX そのファイルに付属させたい情報を一緒にいれておくということだろう
ソースだったら、開発秘話とか入れとけば?
ソースだったら、開発秘話とか入れとけば?
906デフォルトの名無しさん
2021/01/31(日) 17:26:58.51ID:x4IKZ5QX あと自分の写真とか連絡先とかプロフィールを入れとけばいいかもW
907デフォルトの名無しさん
2021/01/31(日) 19:01:56.87ID:Ti7TRi+9908901
2021/01/31(日) 19:31:38.13ID:yFPHlREj >>902
PowerShellでも.Netの
コレクションクラスを使えますので、
インデクサーを使うこと自体はできますよね?
同様のことをユーザー定義クラスで実現できないかと思ったのですが、
無意味でしょうか…
PowerShellでも.Netの
コレクションクラスを使えますので、
インデクサーを使うこと自体はできますよね?
同様のことをユーザー定義クラスで実現できないかと思ったのですが、
無意味でしょうか…
909デフォルトの名無しさん
2021/01/31(日) 20:11:33.10ID:IDCaHEld910デフォルトの名無しさん
2021/02/01(月) 11:36:09.24ID:XDbQ82ak >>909
結局何に使うのか言ってないじゃん
結局何に使うのか言ってないじゃん
911デフォルトの名無しさん
2021/02/05(金) 00:48:27.75ID:a81hUa+F PowerShellのパイプやリダイレクトは仕様が良くないね。
エンコードせずにバイナリデータのままパイプする従来の方法も選べたほうが良かったね。
エンコードせずにバイナリデータのままパイプする従来の方法も選べたほうが良かったね。
912デフォルトの名無しさん
2021/02/05(金) 14:45:47.08ID:PbAzOwWf cmd /c foo `| bar `> baz
とでもしておけ
とでもしておけ
913デフォルトの名無しさん
2021/02/05(金) 21:20:19.10ID:FdcfXC45914デフォルトの名無しさん
2021/02/06(土) 08:02:58.77ID:xZe5l+zL パイプを使いたいんだよ
915デフォルトの名無しさん
2021/02/06(土) 09:37:27.62ID:ya6+Y4aC パイプカットするの?
916デフォルトの名無しさん
2021/02/06(土) 14:28:17.57ID:0arkAH5a >>914
encoding byteがどういう型が返るか示しただけでもちろんパイプにも使えるけど
encoding byteがどういう型が返るか示しただけでもちろんパイプにも使えるけど
917デフォルトの名無しさん
2021/02/06(土) 23:58:30.54ID:5Ze23T9D >>912
`| や`>が解説されているマイクロソフト公式ページはどこになりますか?
検索キーワードが記号ばかりなので探し方が分からず困っております。
>>913
私の環境では、以下のエラーが出て動きませんでした。
Get-Content: Cannot process argument transformation on parameter 'Encoding'.
'byte' is not a supported encoding name. For information on defining a custom encoding,
see the documentation for the Encoding.RegisterProvider method. (Parameter 'name')
`| や`>が解説されているマイクロソフト公式ページはどこになりますか?
検索キーワードが記号ばかりなので探し方が分からず困っております。
>>913
私の環境では、以下のエラーが出て動きませんでした。
Get-Content: Cannot process argument transformation on parameter 'Encoding'.
'byte' is not a supported encoding name. For information on defining a custom encoding,
see the documentation for the Encoding.RegisterProvider method. (Parameter 'name')
918デフォルトの名無しさん
2021/02/07(日) 01:02:44.55ID:hwDwbBnD919デフォルトの名無しさん
2021/02/07(日) 01:34:59.08ID:IiZq+u+t >>918
具体的なURLはどこになりますか?
具体的なURLはどこになりますか?
920デフォルトの名無しさん
2021/02/07(日) 01:38:10.26ID:IiZq+u+t >>918
検索にbashの知識が必要というのは具体的にどういう意味ですか?
検索にbashの知識が必要というのは具体的にどういう意味ですか?
921デフォルトの名無しさん
2021/02/07(日) 01:46:34.08ID:IiZq+u+t922デフォルトの名無しさん
2021/02/07(日) 07:11:26.49ID:jVPjdJHk @パターン1
$data = @('red','green','blue')
if ( $data -ne 'green' )
{
'greenはありません'
}
greenはありません
Aパターン2
$data = @('red','green','blue')
if ( $data -ne 'pueple' )
{
'greenはありません'
}
greenはありません
両方とも同じ結果を返してしまいます。
配列と比較して、無かったらtrue、あったらfalseみたいな書き方ってありませんか?
イメージとしては
if ( $data.notContains('green'))
みたいな書き方です。
用としては、if ( $data.Contains('green'))で足りるのですが、
気持ちの問題として、無かったらtrue、あったらfalseという書き方をしたいです。
よろしくお願いいたします。
$data = @('red','green','blue')
if ( $data -ne 'green' )
{
'greenはありません'
}
greenはありません
Aパターン2
$data = @('red','green','blue')
if ( $data -ne 'pueple' )
{
'greenはありません'
}
greenはありません
両方とも同じ結果を返してしまいます。
配列と比較して、無かったらtrue、あったらfalseみたいな書き方ってありませんか?
イメージとしては
if ( $data.notContains('green'))
みたいな書き方です。
用としては、if ( $data.Contains('green'))で足りるのですが、
気持ちの問題として、無かったらtrue、あったらfalseという書き方をしたいです。
よろしくお願いいたします。
923デフォルトの名無しさん
2021/02/07(日) 09:44:27.16ID:jX/y7Db/ >>922
> 両方とも同じ結果を返してしまいます。
まず
$data = @('red','green','blue')
$data -ne 'green'
で何が戻ってくるか確認すればなぜそう言うふうに動くかわかると思う
> 気持ちの問題として、無かったらtrue、あったらfalseという書き方をしたいです。
どうしても-eqとか使いたい場合、俺なら($data -eq 'green').Count == 0って書くかな
どう見ても$data.Contains('green')の方がわかりやすいと思うけど
> 両方とも同じ結果を返してしまいます。
まず
$data = @('red','green','blue')
$data -ne 'green'
で何が戻ってくるか確認すればなぜそう言うふうに動くかわかると思う
> 気持ちの問題として、無かったらtrue、あったらfalseという書き方をしたいです。
どうしても-eqとか使いたい場合、俺なら($data -eq 'green').Count == 0って書くかな
どう見ても$data.Contains('green')の方がわかりやすいと思うけど
924デフォルトの名無しさん
2021/02/07(日) 09:58:10.78ID:fgGFki9a $data = @('red','green','blue')
if (not ($data -eq 'green')) {}
if (not ($data.Contains('green'))) {}
if (not ($data -contains 'green')) {}
if ($data -notcontains 'green') {}
if ('green' -notin $data) {}
-eq演算子はフィルタとして働くのでここでの用法は微妙
-in系の演算子は配列が大きいとオーバーヘッドが大きいらしい
if (not ($data -eq 'green')) {}
if (not ($data.Contains('green'))) {}
if (not ($data -contains 'green')) {}
if ($data -notcontains 'green') {}
if ('green' -notin $data) {}
-eq演算子はフィルタとして働くのでここでの用法は微妙
-in系の演算子は配列が大きいとオーバーヘッドが大きいらしい
925デフォルトの名無しさん
2021/02/07(日) 09:59:45.82ID:fgGFki9a 否定をtrueにするってどういうことだろ
$colors = @('red','green','blue')
$found = $data -contains 'green'
if ($found) {
} else {
}
なら自然に読み下せる
ここで$notFoundという変数を使われると気になる
if (not $found) {
# 先に書いておきたい処理
} else {
# 長々とした本処理
}
としたいという趣旨ならわかる
$colors = @('red','green','blue')
$found = $data -contains 'green'
if ($found) {
} else {
}
なら自然に読み下せる
ここで$notFoundという変数を使われると気になる
if (not $found) {
# 先に書いておきたい処理
} else {
# 長々とした本処理
}
としたいという趣旨ならわかる
926デフォルトの名無しさん
2021/02/07(日) 10:03:05.78ID:fgGFki9a 変数名を変え忘れたので訂正
$found = $colors -contains 'green'
$found = $colors -contains 'green'
927デフォルトの名無しさん
2021/02/07(日) 10:18:17.21ID:jVPjdJHk >>923-925
レスありがとうございます。
> 否定をtrueにするってどういうことだろ
> どう見ても$data.Contains('green')の方がわかりやすいと思うけど
$exec_shinai_jikan=@('01','02','03')
$imananji=Get-Date -Format HH
if ($exec_shinai_jikan -notcontains $imananji){
"実行するよ"
} else {
"実行しないよ"
}
実際のコード(一部)はこれです。変数名のセンスが独特ですよね・・(By 開発の人、私は開発じゃないです)といわれているので
出すのが恥ずかしかったんです。混乱を生んだようでして申し訳ない。
>で何が戻ってくるか確認すればなぜそう言うふうに動くかわかると思う
・0か0を超える値か
・nullかnullを除く何らかの値か
でtrue or falseが決まる感じでしょうか?
-notって、-notだけじゃ赤傍線引かれるけどなにがだめなんだと思ったら、-not〜って表現があったんですね。
ありがとうございます。
レスありがとうございます。
> 否定をtrueにするってどういうことだろ
> どう見ても$data.Contains('green')の方がわかりやすいと思うけど
$exec_shinai_jikan=@('01','02','03')
$imananji=Get-Date -Format HH
if ($exec_shinai_jikan -notcontains $imananji){
"実行するよ"
} else {
"実行しないよ"
}
実際のコード(一部)はこれです。変数名のセンスが独特ですよね・・(By 開発の人、私は開発じゃないです)といわれているので
出すのが恥ずかしかったんです。混乱を生んだようでして申し訳ない。
>で何が戻ってくるか確認すればなぜそう言うふうに動くかわかると思う
・0か0を超える値か
・nullかnullを除く何らかの値か
でtrue or falseが決まる感じでしょうか?
-notって、-notだけじゃ赤傍線引かれるけどなにがだめなんだと思ったら、-not〜って表現があったんですね。
ありがとうございます。
928デフォルトの名無しさん
2021/02/07(日) 10:22:55.16ID:5sEA4G4p929デフォルトの名無しさん
2021/02/07(日) 10:24:14.00ID:fgGFki9a なるほどそういう感じか
-not演算子のハイフン書き忘れてた
ごめんね
-not演算子のハイフン書き忘れてた
ごめんね
930デフォルトの名無しさん
2021/02/07(日) 10:26:29.15ID:fgGFki9a >>923
($data -eq 'green').Count -eq 0
これってgreenが含まれない場合は最初の-eq演算による絞り込み結果が$nullになって
ぬるぽになるかと思いきや$null.Countの呼び出しは特例的に0を返すんやね
またPowershellの妙な癖を覚えてしまった
($data -eq 'green').Count -eq 0
これってgreenが含まれない場合は最初の-eq演算による絞り込み結果が$nullになって
ぬるぽになるかと思いきや$null.Countの呼び出しは特例的に0を返すんやね
またPowershellの妙な癖を覚えてしまった
931デフォルトの名無しさん
2021/02/07(日) 11:48:29.36ID:jX/y7Db/ >>930
> これってgreenが含まれない場合は最初の-eq演算による絞り込み結果が$nullになって
ならないよ、単に空の配列になるだけ
gm -inputobject ($data -eq 'yellow')
とかやればわかる
> これってgreenが含まれない場合は最初の-eq演算による絞り込み結果が$nullになって
ならないよ、単に空の配列になるだけ
gm -inputobject ($data -eq 'yellow')
とかやればわかる
932デフォルトの名無しさん
2021/02/07(日) 12:10:49.69ID:fgGFki9a933デフォルトの名無しさん
2021/02/07(日) 13:45:02.08ID:hwDwbBnD934デフォルトの名無しさん
2021/02/07(日) 20:57:33.01ID:rt2m338a >>913,917
6.0で仕様変更された
https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/breaking-changes-ps6?view=powershell-7.1#unify-cmdlets-with-parameter--encoding-to-be-of-type-systemtextencoding-5080
-Encoding の値 Byteはファイルシステム プロバイダーのコマンドレットから削除されました。 新しいパラメーター -AsByteStream を使用して、入力としてバイト ストリームが必要なこと、あるいは出力がバイト ストリームであることを指定してください。
6.0で仕様変更された
https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/breaking-changes-ps6?view=powershell-7.1#unify-cmdlets-with-parameter--encoding-to-be-of-type-systemtextencoding-5080
-Encoding の値 Byteはファイルシステム プロバイダーのコマンドレットから削除されました。 新しいパラメーター -AsByteStream を使用して、入力としてバイト ストリームが必要なこと、あるいは出力がバイト ストリームであることを指定してください。
935デフォルトの名無しさん
2021/02/10(水) 10:00:24.88ID:hefdb5Yb 可変長配列数?的なものの実現方法を教えてください。
CSVを以下の通り加工したいのですが、
1554412,A,B,C,D
2176944,D,C,E,F,G,H,I,J
4887447,F,H,J,A,K
こんな感じのカンマ区切りcsvを
1554412,A
1554412,B
1554412,C
1554412,D
以下同じパターン
で成形したいのです。
csv区切り文字は必ずカンマで、
フィールド数は行により異なります。
行を読み込んで、配列に入れて〜、配列の最初のフィールドを入れて〜
とぼんやり想像しているのですが、「個数が定まっていない行を、配列に入れる方法」が想像つきません。
可変長配列数?的なものの実現方法を教えてください。
CSVを以下の通り加工したいのですが、
1554412,A,B,C,D
2176944,D,C,E,F,G,H,I,J
4887447,F,H,J,A,K
こんな感じのカンマ区切りcsvを
1554412,A
1554412,B
1554412,C
1554412,D
以下同じパターン
で成形したいのです。
csv区切り文字は必ずカンマで、
フィールド数は行により異なります。
行を読み込んで、配列に入れて〜、配列の最初のフィールドを入れて〜
とぼんやり想像しているのですが、「個数が定まっていない行を、配列に入れる方法」が想像つきません。
可変長配列数?的なものの実現方法を教えてください。
936デフォルトの名無しさん
2021/02/10(水) 18:12:00.38ID:hRqw8VTE 2つ目のカンマ or 改行まで読んでから要素数2の固定長配列に入れるのはどうですか。
エレガントな方法ではないと思うので、他の方の意見も参考にしてください
エレガントな方法ではないと思うので、他の方の意見も参考にしてください
937デフォルトの名無しさん
2021/02/10(水) 18:19:41.40ID:hRqw8VTE あ、A, D, FじゃなくてA, B, Cでしたか。
マルチバリューカラムになっているのを正規化したいんですね。
最初の一つ目だけ取るのと勘違いしてました。
1. 一行読んでstring
2. カンマでstring.splitしてstring[]
3. [1]からstring.lengthまでを、[0]とstring.joinして、string[]
4. 全行ループ
これでどうですか
マルチバリューカラムになっているのを正規化したいんですね。
最初の一つ目だけ取るのと勘違いしてました。
1. 一行読んでstring
2. カンマでstring.splitしてstring[]
3. [1]からstring.lengthまでを、[0]とstring.joinして、string[]
4. 全行ループ
これでどうですか
938デフォルトの名無しさん
2021/02/10(水) 19:17:13.97ID:JrOSOdLx PowerShell っぽくならこんな感じかな
'1554412,A,B,C,D', '2176944,D,C,E,F,G,H,I,J', '4887447,F,H,J,A,K' | %{
$a, $b = $_ -split ',', 2
$b -split ',' | %{ "$a,$_" }
}
'1554412,A,B,C,D', '2176944,D,C,E,F,G,H,I,J', '4887447,F,H,J,A,K' | %{
$a, $b = $_ -split ',', 2
$b -split ',' | %{ "$a,$_" }
}
939デフォルトの名無しさん
2021/02/10(水) 19:51:01.55ID:hRqw8VTE どうしてこれ動かないの?
$fが更新されない
スマホでコード書くの疲れたんで、誰か教えて下さい。
https://tio.run/##TY3LCsIwEEX38xVDyEJxLEaiVUHw/cYfkC5EUluoqTRFreK316kguBm4hzn3XtO7yVxkkqQs5cPhEEcCVKejtWrTmCY0pRm0ld/ta00zTnNa0JJWtKYN6F7P19pnsqINf29BjLDprkmcozjM7S3OUnsxNg8Gg72572JrBECYZuZ4irAmHxhb5NU6vkAW1Tijn08CZFihwh1awZ9VfC2myvM4OW9n7DmPmqoefIuelRRio6rgKwtG8IZ3WX4A
$fが更新されない
スマホでコード書くの疲れたんで、誰か教えて下さい。
https://tio.run/##TY3LCsIwEEX38xVDyEJxLEaiVUHw/cYfkC5EUluoqTRFreK316kguBm4hzn3XtO7yVxkkqQs5cPhEEcCVKejtWrTmCY0pRm0ld/ta00zTnNa0JJWtKYN6F7P19pnsqINf29BjLDprkmcozjM7S3OUnsxNg8Gg72572JrBECYZuZ4irAmHxhb5NU6vkAW1Tijn08CZFihwh1awZ9VfC2myvM4OW9n7DmPmqoefIuelRRio6rgKwtG8IZ3WX4A
940デフォルトの名無しさん
2021/02/10(水) 21:07:38.33ID:bnTPmcqs941デフォルトの名無しさん
2021/02/10(水) 21:45:54.25ID:JrOSOdLx942デフォルトの名無しさん
2021/02/10(水) 21:58:58.82ID:hefdb5Yb >>937
とりあえず用は足せました。が、多分ご紹介の内容と全然違うことをやってると思います。
レスの内容が半分分かりませんでした。
>3. [1]からstring.lengthまでを
ここが猛烈にヒントになってこんな感じにしました。
foreach ($l in Get-Content C:\temp\test.txt) {
$l=$l.Split(",")
1..(($l.Length) - 1) | % {write-host ($l[0],$l[$_]) }
}
サンプルのコードをいただけると幸いです。
>>938
これも無事動きました。ありがとうございます。
%ってのを知りませんでした。
Powershell難しすぎです。
勉強してるんですが、正直心折れそうです。
bashはそこそこ使えるので行けるだろと思ってたんですが、ナメてました。
死にそうです。
とりあえず用は足せました。が、多分ご紹介の内容と全然違うことをやってると思います。
レスの内容が半分分かりませんでした。
>3. [1]からstring.lengthまでを
ここが猛烈にヒントになってこんな感じにしました。
foreach ($l in Get-Content C:\temp\test.txt) {
$l=$l.Split(",")
1..(($l.Length) - 1) | % {write-host ($l[0],$l[$_]) }
}
サンプルのコードをいただけると幸いです。
>>938
これも無事動きました。ありがとうございます。
%ってのを知りませんでした。
Powershell難しすぎです。
勉強してるんですが、正直心折れそうです。
bashはそこそこ使えるので行けるだろと思ってたんですが、ナメてました。
死にそうです。
943デフォルトの名無しさん
2021/02/10(水) 22:00:44.14ID:hefdb5Yb >>942
自己レスすいません。
これも結局、
write-host ($l[0],$l[$_]) }
で間をカンマ区切りにしたかったんですけど、
1時間手を変え品を変えで結局ダメでした。
何が悪いんでしょうか。
自己レスすいません。
これも結局、
write-host ($l[0],$l[$_]) }
で間をカンマ区切りにしたかったんですけど、
1時間手を変え品を変えで結局ダメでした。
何が悪いんでしょうか。
944デフォルトの名無しさん
2021/02/10(水) 22:12:55.91ID:hefdb5Yb 何度もすいません。
write-hostで標準で区切り文字が半角スペースになってるという事実がやっとわかりました。
{write-host -Separator "," $l[0]$l[$_]}
で無事に希望の出力を得ることができました。
ありがとうございました。
write-hostで標準で区切り文字が半角スペースになってるという事実がやっとわかりました。
{write-host -Separator "," $l[0]$l[$_]}
で無事に希望の出力を得ることができました。
ありがとうございました。
945デフォルトの名無しさん
2021/02/11(木) 00:08:14.80ID:lj0aoxL+ すっきり書けなくてもどかしい
$csv -split "\r\n" | % { $a = $_ -split ','; $a[1..($a.Count - 1)] } | % { $a[0], $_ -join ',' }
$csv -split "\r\n" | % { $a = $_ -split ','; $a[1..($a.Count - 1)] } | % { $a[0], $_ -join ',' }
946デフォルトの名無しさん
2021/02/11(木) 19:38:29.26ID:rrBqcjKj >>939
newlineにクォートつけてたわw
>> 940, 941 さんthx
一応quote外した結果。
https://tio.run/##TY3dCoJAEIXv5ykG2YuiUdrY0oKg/396gfAiYk3B1nClsujZbYwuuhk4H/Odc83uOrexTtOqEg@LQxw5ILtdpWSHxjShKc2gI/1eXymacZrTgpa0ojVtQAWBr5TPZEUb/t6CM0LXXtOkwMPc3JI8MxdtinAw2Ov7LjEaIMpyfTzF2BAPTAzyZhNfIMp6mtHPdsgBEdWotId2@GeVX4up9DxO1ttpcy5iVzbDb9GzliJs1RV8RckI3vCuqg8
newlineにクォートつけてたわw
>> 940, 941 さんthx
一応quote外した結果。
https://tio.run/##TY3dCoJAEIXv5ykG2YuiUdrY0oKg/396gfAiYk3B1nClsujZbYwuuhk4H/Odc83uOrexTtOqEg@LQxw5ILtdpWSHxjShKc2gI/1eXymacZrTgpa0ojVtQAWBr5TPZEUb/t6CM0LXXtOkwMPc3JI8MxdtinAw2Ov7LjEaIMpyfTzF2BAPTAzyZhNfIMp6mtHPdsgBEdWotId2@GeVX4up9DxO1ttpcy5iVzbDb9GzliJs1RV8RckI3vCuqg8
947デフォルトの名無しさん
2021/02/12(金) 09:16:23.07ID:q/2+I+Zd $?で直前のコマンドの実行結果を知ることができますが、
直前に実行したコマンドのPIDを知る方法ってありませんか?
Start-Process -FilePath c:\bin\command.exe -ArgumentList 1
$cmd1pid=get-chokuzenn-pid
$cmd1pid
78968
Start-Process -FilePath c:\bin\command.exe -ArgumentList 2
$cmd1pid=get-chokuzenn-pid
$cmd1pid
4292
実際に動かしたいのは、ttpmacro.exe(Teratermのマクロ)です。
Teratemマクロで外部の機器にsshで接続して、ssh接続のログの内容を見て
そのプロセスを終了させるか判断したいと思っております
書こうとしているスクリプトを動かす時点で、1個もTeratermが動いていないなら、
Get-Processでなんとかなると思うのですが、上記スクリプトを実行する時点で
ほかのTeratermが動いている可能性があり、それを間違って死なすわけにはいかず、
Powershellスクリプト内で、Start-Processなりで動かした、直前のプロセスのIDを知る方法があればと思い相談させていただきます
すいません、よろしくお願いいたします。
直前に実行したコマンドのPIDを知る方法ってありませんか?
Start-Process -FilePath c:\bin\command.exe -ArgumentList 1
$cmd1pid=get-chokuzenn-pid
$cmd1pid
78968
Start-Process -FilePath c:\bin\command.exe -ArgumentList 2
$cmd1pid=get-chokuzenn-pid
$cmd1pid
4292
実際に動かしたいのは、ttpmacro.exe(Teratermのマクロ)です。
Teratemマクロで外部の機器にsshで接続して、ssh接続のログの内容を見て
そのプロセスを終了させるか判断したいと思っております
書こうとしているスクリプトを動かす時点で、1個もTeratermが動いていないなら、
Get-Processでなんとかなると思うのですが、上記スクリプトを実行する時点で
ほかのTeratermが動いている可能性があり、それを間違って死なすわけにはいかず、
Powershellスクリプト内で、Start-Processなりで動かした、直前のプロセスのIDを知る方法があればと思い相談させていただきます
すいません、よろしくお願いいたします。
948デフォルトの名無しさん
2021/02/12(金) 09:17:40.74ID:q/2+I+Zd test.ps1
Start-Process -FilePath c:\bin\command.exe -ArgumentList 1
$cmd1pid=get-chokuzenn-pid
$cmd1pid
78968
Start-Process -FilePath c:\bin\command.exe -ArgumentList 2
$cmd2pid=get-chokuzenn-pid
$cmd2pid
4292
すいません、スクリプトの例に誤りがありました
訂正します
Start-Process -FilePath c:\bin\command.exe -ArgumentList 1
$cmd1pid=get-chokuzenn-pid
$cmd1pid
78968
Start-Process -FilePath c:\bin\command.exe -ArgumentList 2
$cmd2pid=get-chokuzenn-pid
$cmd2pid
4292
すいません、スクリプトの例に誤りがありました
訂正します
949デフォルトの名無しさん
2021/02/12(金) 09:57:59.46ID:JWXF4JEZ950デフォルトの名無しさん
2021/02/12(金) 10:15:49.19ID:JXvYdGCL 引数に -PassThru を付けて戻り値からidで取れないかな?
951デフォルトの名無しさん
2021/02/12(金) 11:17:25.75ID:jxDcSv/l952デフォルトの名無しさん
2021/02/12(金) 13:51:19.53ID:q/2+I+Zd953デフォルトの名無しさん
2021/02/12(金) 13:58:44.73ID:aXMNNeBu すばらしい
954デフォルトの名無しさん
2021/02/13(土) 18:04:24.59ID:elIMNXvv 音楽プレーヤーで MP3 ファイルをシャッフル再生させたいので、
dir /n /-b /s *.mp3 > playlist.txt
の結果をランダムに入れ替えるにはどうすればいいでしょうか?
(乱数で再生する行を求めると同じ曲がつづくかもしれないのでシャッフルにしたい。)
dir /n /-b /s *.mp3 > playlist.txt
の結果をランダムに入れ替えるにはどうすればいいでしょうか?
(乱数で再生する行を求めると同じ曲がつづくかもしれないのでシャッフルにしたい。)
955デフォルトの名無しさん
2021/02/13(土) 19:45:47.08ID:PYtZn7CJ956デフォルトの名無しさん
2021/02/13(土) 20:59:17.73ID:9JYy97c0 Sort-Object {Get-Random}じゃあかんの?
957デフォルトの名無しさん
2021/02/13(土) 21:06:22.08ID:PYtZn7CJ958デフォルトの名無しさん
2021/02/13(土) 21:14:23.98ID:D/l9Txdy 自分の音楽コレクションのプレイリスト作る要件なら速度は別にと思わなくもない
5分とか掛かるならちょとやだけど
5分とか掛かるならちょとやだけど
959デフォルトの名無しさん
2021/02/13(土) 21:58:32.75ID:WEbw7iAW プレイリストのランダム再生機能ぐらい大抵のプレイヤーに付いてるだろうに
960デフォルトの名無しさん
2021/02/13(土) 22:34:07.74ID:XvWS5Qrl >>957 のリンク先のコードで質問です
勉強のためちょこちょこ編集してみたところ、
「なんでこれで変数の中がランダムにおきかわるの?」と疑問がわきました
$r = @(1,2,3,4,5,6,7,8,9,10)
$r=($r | sort -Property @{Exp={[Guid]::NewGuid()}})
$r
$foo = @(1,2,3,4,5,6,7,8,9,10)
$foo[0] = $foo | sort -prop @{Exp={[Guid]::NewGuid()}}
$foo[0]
前者のように、$rの中身を $r | sort -Prop〜で置き換えるというのなら納得がいくんですが、
なぜ、後者のように、書いてもランダムになるのかが納得いきません
変数定義はパイプの前の話で、どうしてそれがパイプ先の、ランダムにする操作で置き換わるのでしょうか。
勉強のためちょこちょこ編集してみたところ、
「なんでこれで変数の中がランダムにおきかわるの?」と疑問がわきました
$r = @(1,2,3,4,5,6,7,8,9,10)
$r=($r | sort -Property @{Exp={[Guid]::NewGuid()}})
$r
$foo = @(1,2,3,4,5,6,7,8,9,10)
$foo[0] = $foo | sort -prop @{Exp={[Guid]::NewGuid()}}
$foo[0]
前者のように、$rの中身を $r | sort -Prop〜で置き換えるというのなら納得がいくんですが、
なぜ、後者のように、書いてもランダムになるのかが納得いきません
変数定義はパイプの前の話で、どうしてそれがパイプ先の、ランダムにする操作で置き換わるのでしょうか。
961デフォルトの名無しさん
2021/02/13(土) 22:48:16.31ID:PYtZn7CJ >>960
やってることは同じで結果が単に$foo[0]に入ってるだけ
$foo[1]~$foo[9] の内容は変わってないはず
ちなみに置き換えてるわけじゃなくて新しい配列を作ってそれを$rとか$foo[0]に入れてる
やってることは同じで結果が単に$foo[0]に入ってるだけ
$foo[1]~$foo[9] の内容は変わってないはず
ちなみに置き換えてるわけじゃなくて新しい配列を作ってそれを$rとか$foo[0]に入れてる
962デフォルトの名無しさん
2021/02/13(土) 22:59:06.67ID:XvWS5Qrl >>961
ありがとうございます
書き方が違うけど処理が同じというとらえ方でいいですか?
"パターン1"
$foo = @(1,2,3,4,5,6,7,8,9,10)
$foo=($foo | sort -prop @{Exp={[Guid]::NewGuid()}})
$foo
"パターン2"
$foo = @(1,2,3,4,5,6,7,8,9,10)
$foo = $foo | sort -prop @{Exp={[Guid]::NewGuid()}}
$foo
パターン1の書き方違いが、パターン2のようなとらえ方でいいでしょうか?
ありがとうございます
書き方が違うけど処理が同じというとらえ方でいいですか?
"パターン1"
$foo = @(1,2,3,4,5,6,7,8,9,10)
$foo=($foo | sort -prop @{Exp={[Guid]::NewGuid()}})
$foo
"パターン2"
$foo = @(1,2,3,4,5,6,7,8,9,10)
$foo = $foo | sort -prop @{Exp={[Guid]::NewGuid()}}
$foo
パターン1の書き方違いが、パターン2のようなとらえ方でいいでしょうか?
963デフォルトの名無しさん
2021/02/13(土) 23:33:24.56ID:PYtZn7CJ964954
2021/02/13(土) 23:36:43.19ID:elIMNXvv Get-ChildItem -path d:\ -filter *.mp3 -recurse | foreach {$_.FullName} | sort {Get-Random}
や、
Get-ChildItem -path d:\ -filter *.mp3 -recurse | foreach {$_.FullName} | sort -prop @{Exp={[Guid]::NewGuid()}}
でうまくいきそうです。 ありがとうございました。
や、
Get-ChildItem -path d:\ -filter *.mp3 -recurse | foreach {$_.FullName} | sort -prop @{Exp={[Guid]::NewGuid()}}
でうまくいきそうです。 ありがとうございました。
965デフォルトの名無しさん
2021/02/14(日) 00:07:20.96ID:rA0IJrKX966デフォルトの名無しさん
2021/02/14(日) 00:22:33.69ID:D24G58JB967デフォルトの名無しさん
2021/02/14(日) 00:28:18.02ID:D24G58JB968デフォルトの名無しさん
2021/02/19(金) 08:22:42.85ID:islL1Ifn Announcing the PowerShell Community Blog
https://devblogs.microsoft.com/powershell-community/announcing-the-powershell-community-blog/
https://devblogs.microsoft.com/powershell-community/announcing-the-powershell-community-blog/
969デフォルトの名無しさん
2021/02/23(火) 08:20:29.72ID:XBzTqCMZ posh-git と GetChildItemColor
でダイブましになった
他にもおすすめあったらおせーて!
でダイブましになった
他にもおすすめあったらおせーて!
970デフォルトの名無しさん
2021/02/23(火) 20:50:03.67ID:8GGn/OTs GetChildItemColorを入れるとシンボリックリンクのリンク先のパスが表示されなくなるのがクソ
971デフォルトの名無しさん
2021/03/02(火) 00:20:13.77ID:NQgDi+il #test.ps1
param([array]$foo)
echo ('$ARGS[0]' +':'+ $ARGS[0])
echo ('$foo[0]' +':'+ $foo[0])
echo ('$foo[1]' +':'+ $foo[1])
echo ('$foo[2]' +':'+ $foo[2])
PS> .\test.ps1 aaa -foo bbb,ccc,ddd
$ARGS[0]:aaa
$foo[0]:bbb
$foo[1]:ccc
$foo[2]:ddd
PS> .\test.ps1 aaa -bar bbb,ccc,ddd
$ARGS[0]:-bar
$foo[0]:aaa
$foo[1]:
$foo[2]:
PS C:\script>
PS> \test.ps1 aaa
$ARGS[0]:
$foo[0]:aaa
$foo[1]:
$foo[2]:
@引数やパラメータの数、パラメーター名などのエラーをチェックする方法を教えてください。
Aパラメータの区切りをカンマで無くスペースにする方法があれば教えてください。
ググってみたのですが、ググり方が悪いのか、見つからず苦しんでおります
param([array]$foo)
echo ('$ARGS[0]' +':'+ $ARGS[0])
echo ('$foo[0]' +':'+ $foo[0])
echo ('$foo[1]' +':'+ $foo[1])
echo ('$foo[2]' +':'+ $foo[2])
PS> .\test.ps1 aaa -foo bbb,ccc,ddd
$ARGS[0]:aaa
$foo[0]:bbb
$foo[1]:ccc
$foo[2]:ddd
PS> .\test.ps1 aaa -bar bbb,ccc,ddd
$ARGS[0]:-bar
$foo[0]:aaa
$foo[1]:
$foo[2]:
PS C:\script>
PS> \test.ps1 aaa
$ARGS[0]:
$foo[0]:aaa
$foo[1]:
$foo[2]:
@引数やパラメータの数、パラメーター名などのエラーをチェックする方法を教えてください。
Aパラメータの区切りをカンマで無くスペースにする方法があれば教えてください。
ググってみたのですが、ググり方が悪いのか、見つからず苦しんでおります
972デフォルトの名無しさん
2021/03/02(火) 00:22:05.89ID:NQgDi+il >>971
行数制限に引っかかったので分割します。
@は引数〇個、パラメーター名foo、パラメーターfooの数、fooが1個以上(0はだめ)というのをチェックしたいです。
なにとぞよろしくお願いいたします。
行数制限に引っかかったので分割します。
@は引数〇個、パラメーター名foo、パラメーターfooの数、fooが1個以上(0はだめ)というのをチェックしたいです。
なにとぞよろしくお願いいたします。
973デフォルトの名無しさん
2021/03/02(火) 10:00:39.98ID:TaWWQOJL >>972
about_Functions_Advanced_Parameters
https://docs.microsoft.com/ja-jp/previous-versions/windows/powershell-scripting/hh847743(v=wps.640)
about_Functions_Advanced_Parameters
https://docs.microsoft.com/ja-jp/previous-versions/windows/powershell-scripting/hh847743(v=wps.640)
974デフォルトの名無しさん
2021/03/02(火) 23:49:57.97ID:NQgDi+il975デフォルトの名無しさん
2021/03/03(水) 03:07:24.22ID:hWQCqBl5 そもそもPowerShellの関数(コマンドレット)は空白区切りで引数渡すんだけどね
>>971はカンマ区切りで引数を渡してるんじゃなくて、カンマで作った配列を渡してるだけ
自動変数の$args(配列)はjavascriptでいう残余引数みたいな物
PS> .\test.ps1 aaa -foo bbb,ccc,ddd
名前付き引数 $foo に配列 bbb,ccc,ddd が渡され、未定義の aaa が $args に渡されてる
PS> .\test.ps1 aaa -bar bbb,ccc,ddd
$foo に先頭の引数 aaa が渡され、未定義の -bar と配列 bbb,ccc,ddd が $args に渡される
特にオプションを指定しなければ、複数の引数を設定すれば空白区切りで渡せる
>>971はカンマ区切りで引数を渡してるんじゃなくて、カンマで作った配列を渡してるだけ
自動変数の$args(配列)はjavascriptでいう残余引数みたいな物
PS> .\test.ps1 aaa -foo bbb,ccc,ddd
名前付き引数 $foo に配列 bbb,ccc,ddd が渡され、未定義の aaa が $args に渡されてる
PS> .\test.ps1 aaa -bar bbb,ccc,ddd
$foo に先頭の引数 aaa が渡され、未定義の -bar と配列 bbb,ccc,ddd が $args に渡される
特にオプションを指定しなければ、複数の引数を設定すれば空白区切りで渡せる
976デフォルトの名無しさん
2021/03/12(金) 15:14:39.63ID:VgGpSMHu PowerShell起動すると毎回更新しろって出るのがウザくて7入れてみたけど起動時の立ち上がりが遅くなって切れそう
しかも結局help云々が毎回出るし
MS頭おかしいんでねーの
しかも結局help云々が毎回出るし
MS頭おかしいんでねーの
977デフォルトの名無しさん
2021/03/12(金) 19:40:18.23ID:gsxqF2ed おバカ自慢要らね
978デフォルトの名無しさん
2021/03/13(土) 10:00:11.18ID:fu8qQk1O979デフォルトの名無しさん
2021/03/13(土) 14:33:26.87ID:LuYPD+lh | where-objectで、条件に引っかかったら0(True)、引っかからなかったら1(False)を返す方法ってありませんでしょうか。
あるサービスの実行状態を知るために、こういうことをしてるんですが、
(Get-Service | Where-Object -Property Name -Match Adobe | Where-Object -Property Status -Match Running).length
1 ←AdobeがRunnningだった
0 ←AdobeがRunningじゃなかった
他に、もっとPowershellっぽい書き方があったら教えてください
あるサービスの実行状態を知るために、こういうことをしてるんですが、
(Get-Service | Where-Object -Property Name -Match Adobe | Where-Object -Property Status -Match Running).length
1 ←AdobeがRunnningだった
0 ←AdobeがRunningじゃなかった
他に、もっとPowershellっぽい書き方があったら教えてください
980デフォルトの名無しさん
2021/03/13(土) 14:59:52.96ID:4/YYKqK7 >>979
ワンライナーにこだわっているのか?
ワンライナーにこだわっているのか?
981デフォルトの名無しさん
2021/03/13(土) 15:31:11.30ID:33EHGK5P Ruby の3項演算子みたいなものは無いの?
真偽値となる条件式 ? 真の時の値 : 偽の時の値
真偽値となる条件式 ? 真の時の値 : 偽の時の値
982デフォルトの名無しさん
2021/03/13(土) 15:36:01.07ID:ErfpRTBJ (gsv adobe*).status -contains 'running'
983デフォルトの名無しさん
2021/03/13(土) 15:48:12.79ID:Qa5+c/Kf >>979
[int][bool](Get-Service | Where-Object {($_.Name -Match 'Adobe') -and ($_.Status -Match 'Running')})
[int][bool](Get-Service | Where-Object {($_.Name -Match 'Adobe') -and ($_.Status -Match 'Running')})
984デフォルトの名無しさん
2021/03/13(土) 20:59:36.95ID:3roljCwu985デフォルトの名無しさん
2021/03/14(日) 15:40:02.21ID:am3+IzSP PowerShellは処理の方法が多くていいな
986デフォルトの名無しさん
2021/03/14(日) 21:46:47.24ID:8YYOAayf 連想配列の参照渡しで
function f([ref]$h) { $h.value }
$h = @{ a = 0; b = 1}
f([ref]$h)
はうまくいくんだけど、引数もう一個増やして
function f([ref]$h, $s) { $h.value; $s }
$h = @{ a = 0; b = 1}
$s = 2
f([ref]$h, $s)
にすると、
f : パラメーター 'h' の引数変換を処理できません。引数には参照型を指定する必要があります。
何が悪いん?ググっても見つけられなくてさっきから悩んでる(汗
function f([ref]$h) { $h.value }
$h = @{ a = 0; b = 1}
f([ref]$h)
はうまくいくんだけど、引数もう一個増やして
function f([ref]$h, $s) { $h.value; $s }
$h = @{ a = 0; b = 1}
$s = 2
f([ref]$h, $s)
にすると、
f : パラメーター 'h' の引数変換を処理できません。引数には参照型を指定する必要があります。
何が悪いん?ググっても見つけられなくてさっきから悩んでる(汗
987デフォルトの名無しさん
2021/03/14(日) 21:55:49.94ID:8nGQn8Lf 括弧とカンマいらないのでは
988デフォルトの名無しさん
2021/03/14(日) 22:41:43.33ID:T+RcbFBu f ([ref]$h) $s
989デフォルトの名無しさん
2021/03/14(日) 23:07:21.02ID:8YYOAayf990デフォルトの名無しさん
2021/03/15(月) 15:30:15.42ID:2OtrSpOH カッコとカンマで引数渡すのはオブジェクトのメソッドの時だけだね
関数はスペース区切りで渡す
これは文法だから理由はない
関数はスペース区切りで渡す
これは文法だから理由はない
991デフォルトの名無しさん
2021/03/15(月) 16:45:16.26ID:bRJV5TtK 1, 2 で配列作っちゃうようにしちゃったからねぇ
記法がシェルスクリプトとプログラム言語のあいの子みたいになってるからちょっと直感に反する所がちらほら見え隠れするのはしょうがない
記法がシェルスクリプトとプログラム言語のあいの子みたいになってるからちょっと直感に反する所がちらほら見え隠れするのはしょうがない
992デフォルトの名無しさん
2021/03/16(火) 23:02:58.87ID:Bd62bkLQ993デフォルトの名無しさん
2021/03/17(水) 08:00:24.75ID:EzeD0xtp 俺がPowerShellを気に入ったのはPerlと同じ匂いを感じたからだ
994デフォルトの名無しさん
2021/03/17(水) 08:19:50.03ID:vnLGIRIV しかしPerlではないのがいいところ
995デフォルトの名無しさん
2021/03/17(水) 08:38:00.89ID:sqd1XF3h Why did you do that? $VAR/ {} / Weak Intellisense
https://docs.microsoft.com/en-us/archive/blogs/monad/why-did-you-do-that-var-weak-intellisense
The $ in front of variables comes from our design center of being an interactive command oriented shell.
Interactive shells are NOT the same thing as Scripting languages with command interpretors.
Interactive shells are case studies in engineering tradeoffs (another way of saying that is that they tend to be a little quirky).
There is a tension between the needs of a great interactive experience and a great scripting/programming experience.
Time and time again during the course of the project, people would try to make us "choose" between one or the other.
We refused.
We believe that if you work hard enough at it, you can solve the puzzle and provide a great solution for both.
We were absolutely subborn on this point. Time and time again, we were able to succeed with this approach if we travailed long enough.
https://docs.microsoft.com/en-us/archive/blogs/monad/why-did-you-do-that-var-weak-intellisense
The $ in front of variables comes from our design center of being an interactive command oriented shell.
Interactive shells are NOT the same thing as Scripting languages with command interpretors.
Interactive shells are case studies in engineering tradeoffs (another way of saying that is that they tend to be a little quirky).
There is a tension between the needs of a great interactive experience and a great scripting/programming experience.
Time and time again during the course of the project, people would try to make us "choose" between one or the other.
We refused.
We believe that if you work hard enough at it, you can solve the puzzle and provide a great solution for both.
We were absolutely subborn on this point. Time and time again, we were able to succeed with this approach if we travailed long enough.
996デフォルトの名無しさん
2021/03/17(水) 11:52:58.50ID:eAjGywmP interactive性は'標準で'エイリアスが定義されてることで十分満足してる
997デフォルトの名無しさん
2021/03/18(木) 00:08:54.40ID:t06qOp3P PerlとPythonは文字に対するencode, decodeの意味が逆。まめな
998デフォルトの名無しさん
2021/03/18(木) 00:30:47.74ID:/MpReTiX999デフォルトの名無しさん
2021/03/18(木) 00:39:40.12ID:3weRgygV >>998
ナイス滑り込み
ナイス滑り込み
1000デフォルトの名無しさん
2021/03/18(木) 01:34:48.09ID:dIgskCmL 質問良いですか
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 441日 9時間 26分 17秒
新しいスレッドを立ててください。
life time: 441日 9時間 26分 17秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 永野芽郁の不倫報道火消しへ 永野の自宅マンションには「母親がいた」 永野、田中、キムの所属事務所発表 [ネギうどん★]
- ダウンタウンが芸能活動再開へ、今夏ネット配信サービス開始★3 [jinjin★]
- 中居正広、水面下で反撃の準備か 第三者委員会の報告書での“性暴力者”認定に強い抵抗感、自らの口で真相を明らかにする考えも ★2 [Ailuropoda melanoleuca★]
- 「コメの関税を下げたら自民党は吹っ飛ぶ」 農業団体首脳が断言 農林族のドンも危機感あらわ…コメ輸入拡大で試される石破政権★2 [夜のけいちゃん★]
- 自転車交通違反「青切符」来年4月スタート「逆走、歩道を走る」「スマホ・イヤホン等のながら運転」★7 [七波羅探題★]
- 「自衛隊は人殺しの訓練」発言の共産党滋賀県議、本会議で謝罪「申し訳ありませんでした」 [少考さん★]
- 【トランプ関税】日経平均株価、暴騰、1ドル144円逝きそう [943688309]
- __自民比例に人気ダンサー 参院選 中田敦彦の弟 [おっさん友の会★] [827565401]
- 声優の石見舞菜香のソックリさん、彼氏との写真が流出 [159091185]
- お🏡とかいう意味不明なレスを続ける障害者軍団
- ウクライナが5000億円の借金の支払いを拒否 来月にも日本が税金で補填へ [709039863]
- 【悲報】チャリモメン、逝く。罰則強化で信号無視6000円、傘さし5000円、歩道走り6000円 [476167917]