X



Windows PowerShell Part5 [無断転載禁止]©2ch.net
0001名無し~3.EXE
垢版 |
2016/09/18(日) 14:06:24.15ID:aFEI7ykR
Windows PowerShell
http://technet.microsoft.com/ja-JP/scriptcenter/dd742419.aspx
オンラインヘルプ
https://technet.microsoft.com/ja-jp/library/bb978526.aspx

■パッケージのダウンロード
PowerShell 3.0 (Windows 7以降)
http://www.microsoft.com/en-us/download/details.aspx?id=34595

PowerShell 2.0 (Vista以前は3.0非対応)
http://support.microsoft.com/?kbid=926140

■参考
http://www.atmarkit.co.jp/fdotnet/special/powershell01/powershell01_01.html
http://oka326.blogspot.com/search/label/PowerShell
http://d.hatena.ne.jp/newpops/
http://blogs.msdn.com/PowerShell

■過去スレ
Windows PowerShell Part4
http://echo.2ch.net/test/read.cgi/win/1359719778/
0120名無し~3.EXE
垢版 |
2017/04/11(火) 04:04:29.63ID:HYkG1Dlo
>>116
PowerShellはgst-launch-1.0(GStreamer)がモロそんな感じだったよ
DISM /Online /Get-ProvisionedAppxPackages | select-string Packagename
みたいなのやん

gst-launch-1.0のは
gst-launch-1.0 filesrc location=music.ogg ! oggdemux ! vorbisdec ! audioconvert ! audioresample ! osssink
で、一番似てる気がしたのはコレ

WinAPI呼ぶときの魔法の文言が長すぎて鬱りそう、なんか短いのないのアレ orz
0121名無し~3.EXE
垢版 |
2017/04/19(水) 02:01:07.19ID:YJQ97aeg
次スレからはソフトウェア板に移動しない?
MacとLinuxに対応したので
0122名無し~3.EXE
垢版 |
2017/04/19(水) 07:21:29.68ID:XbPwupdH
クリエにアップしたので、スタートボタン右クリックのメニューに入るのが
コマプロからPowerShellに変わったわけだが、エラーで開かないw
クラシック・シェル入れてたせいだろうな
0123名無し~3.EXE
垢版 |
2017/04/20(木) 22:18:07.02ID:D7ri9Iiw
すみません、どなたか教えてください。

管理者権限でpowershell実行
write-eventlog -logname 'Microsoft-Windows-TaskScheduler/Operational'
(-Source -entrytype -eventID -messageも指定)
でイベントログに出力したいのですが、
ログ名 "Microsoft-Windows-TaskScheduler/Operational" はコンピュータ localhostに存在しません
とエラーが出てしまいます。
Get-WinEvent -logname 'Microsoft-Windows-TaskScheduler/Operational'
ではちゃんと出力するので、ログ名を間違えていることはないと思うのですが・・・
原因を教えてくれませんでしょうか?
0124名無し~3.EXE
垢版 |
2017/04/22(土) 18:54:20.03ID:eMmE0Ns/
WMIはWindows固有だからなあ
PowerShellの文法的な話なら、プログラミング板が妥当では
0125名無し~3.EXE
垢版 |
2017/05/06(土) 03:50:31.48ID:OUvA+b29
これからWindowsCUIコマンド関連勉強していきたいんだけど
PowerShellの前にコマンドプロンプトも勉強した方がいい?
それとももう必要ない?
0126名無し~3.EXE
垢版 |
2017/05/06(土) 05:18:23.97ID:nYExUkjv
というかコマンドプロンプトとかいちいち時間割いて勉強するようなもんじゃない
0127名無し~3.EXE
垢版 |
2017/05/06(土) 08:53:01.80ID:0+z+Gap+
>>125
> PowerShellの前にコマンドプロンプトも勉強した方がいい?
要らない
単にコマンドを連続して流すだけならずらずら書くだけだし
ちょっと凝ったことしようとしたらバッドノウハウ使いまくりになる
PowerShell も色々癖が強いけど後発だけに思想は遥かにまとも
0128名無し~3.EXE
垢版 |
2017/05/06(土) 12:24:42.60ID:7sOAYNki
Powershellを使ってWindows7マシンからWindows10マシンを遠隔シャットダウンしようと思っています。

Windows7マシン名: PC1
Windows10マシン名: PC2

どちらのマシンにも同じユーザー名・パスワードの管理者権限のユーザーが作ってあります。

Windows7マシンからPowershellを管理者権限で起動し次のコマンドを打ってみました。

> Stop-Computer -ComputerName PC2 -Credential (ユーザー名)

すると以下の様なエラーが返ってきてシャットダウンできませんでした。

Stop-Computer : アクセスが拒否されました。 (HRESULT からの例外: 0x80070005 (E_ACCESSDENIED))
発生場所 行:1 文字:14
+ Stop-Computer <<<< -ComputerName PC2 -Credential (ユーザー名)
+ CategoryInfo : NotSpecified: (:) [Stop-Computer]、UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.StopComputerCommand

どちらのマシンもUACはデフォの状態から変えていませんし、
セキュリティのことを考えると変えたくもありません。
なにかいい解決方法は無いでしょうか?
0130名無し~3.EXE
垢版 |
2017/05/06(土) 20:49:27.85ID:2p9xnQ6e
>>125
オレも必要無いに一票
2つ勉強したいってならbashに一票
覚えた頃にBoWこなれてきてるかも
0131名無し~3.EXE
垢版 |
2017/05/07(日) 11:17:32.20ID:ahbtq0bI
>>129
挑戦してみましたがやはりエラーが返ってきました

Stop-Computer : RPC サーバーを利用できません。 (HRESULT からの例外: 0x800706BA)
発生場所 行:1 文字:14
+ Stop-Computer <<<< -ComputerName PC2 -Credential (ユーザー名)
+ CategoryInfo : InvalidOperation: (PC2:String) [Stop-Computer]、COMException
+ FullyQualifiedErrorId : StopComputerException,Microsoft.PowerShell.Commands.StopComputerCommand

ただエラーの内容がちょっと変わった気はします
0132名無し~3.EXE
垢版 |
2017/05/07(日) 14:16:18.70ID:Vey7mJwy
そのエラーコードならファイアウォール設定でWMI RPCを解放すれば行けそう
0133名無し~3.EXE
垢版 |
2017/05/07(日) 19:12:52.74ID:8QqaJEcs
>>125
コマンドプロンプトなんか使ってるうちに覚えるもんだろ。
こんなところで聞くようなモノではない。
0134名無し~3.EXE
垢版 |
2017/05/07(日) 22:54:51.28ID:ahbtq0bI
>>132
PC2のファイアーウォールを無効にしてみましたが結果は同じでした・・・
うーん、難しい・・・
0135名無し~3.EXE
垢版 |
2017/05/08(月) 19:33:25.10ID:i5Njb2+p
>>128
ユーザー名の前に コンピュータ名\つけてる?
つまり、pc2\ユーザー名
0136名無し~3.EXE
垢版 |
2017/05/09(火) 10:11:17.07ID:UEW2JH/V
>>135
はい、ユーザー認証のダイアログが表示される方式もチャレンジして
そこでコンピューター名付のユーザ名も試しましたがダメでした・・・
0137名無し~3.EXE
垢版 |
2017/05/09(火) 11:41:59.83ID:BFgOlLU8
shutdown.exeでは出来てるの?
0138名無し~3.EXE
垢版 |
2017/05/09(火) 12:56:53.27ID:UEW2JH/V
shutdownコマンドによるリモートシャットダウンはまだ試したことがありませんでした
一度チャレンジしてみようと思います

余談ですがリモートシャットダウンさせるさい、リモートレジストリ制御はオンにする
必要はありますか?Windows10ではデフォルトでオフにされているようですが。
0139名無し~3.EXE
垢版 |
2017/05/09(火) 13:12:40.95ID:4ctJrZXO
0x800706BAで検索すると割と多くの原因が考えられるみたい
互いのPCで関連サービスが全部起動してるかとか、パッチが当たってるかとか
0140名無し~3.EXE
垢版 |
2017/05/11(木) 12:53:23.28ID:PofOtdpB
てす
0141名無し~3.EXE
垢版 |
2017/05/11(木) 12:54:28.09ID:PofOtdpB
Function set-oepic{
[CmdletBinding()]
param(
[Parameter(Mandatory=$True,
ValueFromPipeline=$True)]
[string]$picpath
)

PROCESS {
$bin = Get-Content $picpath -Encoding Byte
$base64 = [System.Convert]::ToBase64String( $bin )
$pics =@"
var canvas = document.getElementsByClassName( "wPaint-canvas" );
var ctx = canvas[0].getContext("2d");
ctx.fillStyle = "white";
ctx.fillRect(0, 0, 500, 250);
var img = new Image();
img.onload = function() {
ctx.drawImage(img, 0, 0);
}
img.src = "data:image/png;base64,$base64";

"@
Set-Clipboard -Value $pics

}
END {}
}
0142名無し~3.EXE
垢版 |
2017/05/11(木) 13:01:48.02ID:PofOtdpB
>>141>>140の貼り付けスクリプトねたぶんクロム系で動くはず
説明する必要はないと思うが 引数に500X250の128k以下の画像のファイルのパスを入れて
実行するとクリップボードにソースが貼り付けられるから

今度はスレッドのお絵描きロードを押してフォームを出した後でf12でコンソールをだして張り付けて一回リターンを押せば
フォームに画像が貼り付けられてると思う
個人的にアクセス規制見たいの食らってるのか知らんが 上の5.7kの画像でようやくアップロードできた
興味のある人は100k程度のを張ってみてくれ 3日前ぐらいまでは貼れたんだが

何時も使ってるサイトが使えんのでpsで書いてみた
0143名無し~3.EXE
垢版 |
2017/05/11(木) 13:04:27.78ID:PofOtdpB
そういやbase64にエンコとかするコマンドレットってあるの?
0145名無し~3.EXE
垢版 |
2017/05/30(火) 10:47:43.35ID:8tEQwhie
会社のwin7ノートでstaticとDHCPをダブルクリックで切り替えたくてバッチファイルを作ったんです
しかし世間はPOWER SHELLに移行すると知り、この際書き直そうと思い早速get-netadapterを叩いてみました
が、出鼻を挫かれました
操作可能なプログラムとして認識されません。が返ってくるだけで受付てくれません
ポリシーでブロックされているんでしょうか
0146名無し~3.EXE
垢版 |
2017/05/30(火) 11:05:10.51ID:5SmB/lgX
>>145
ちゃんとPowerShellのプロンプト画面で叩いているんですか?
>操作可能なプログラムとして認識されません。
PowerShellのコマンドですから、プログラムを起動しに行くはずはないのですがね
0148名無し~3.EXE
垢版 |
2017/05/30(火) 12:00:24.81ID:5SmB/lgX
>>147
それ、タスクスケジューラからOffice関連の更新の何かが起動されていそうですよ
0150名無し~3.EXE
垢版 |
2017/05/30(火) 18:43:56.29ID:9+CwB6Qw
>>145
get-netadapter は PowerShell Version 3 以上でないと使えない
Windows 7 の PowerShell は Version 2 なので PowerShell をバージョンアップするなり Windows 10 に行くなりしてくれ
あとエラーメッセージはコピペでいいので正確に書いてくれ
0151名無し~3.EXE
垢版 |
2017/05/30(火) 22:36:10.11ID:5SmB/lgX
>>145
Win7でやったらこんなん出ました

PS C:\Windows\system32> get-netadapter
get-netadapter : 用語 'get-netadapter' は、コマンドレット、関数、スクリプト フ
ァイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述
されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認して
から、再試行してください。
発生場所 行:1 文字:1
+ get-netadapter
+ ~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (get-netadapter:String) [], Comm
andNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
0152名無し~3.EXE
垢版 |
2017/05/31(水) 04:47:30.15ID:rqqJ/KOf
Windows10 セーフモードでネットワーク有効
正常動作しないWindows10をセーフモードで起動 http://www.ikt-s.com/win10-force-safemode-boot/  
画面が真っ黒で何もできないとか、デスクトップまで立ち上がったが そこから何も操作できないという事が実際に起こっています。
http://i1.wp.com/www.ikt-s.com/wp-content/uploads/2016/06/win10-safemode3.jpg http://i2.wp.com/www.ikt-s.com/wp-content/uploads/2016/06/win10-safemode4.jpg http://i0.wp.com/www.ikt-s.com/wp-content/uploads/2016/06/win10-safemode5.jpg
http://i2.wp.com/www.ikt-s.com/wp-content/uploads/2016/06/win10-safemode6.jpg http://i1.wp.com/www.ikt-s.com/wp-content/uploads/2016/06/win10-safemode7.jpg http://i2.wp.com/www.ikt-s.com/wp-content/uploads/2016/06/win10-safemode9.jpg
正常動作しないWindows10をセーフモードで起動した後に『完全自動で通常起動へ移行する』には?
http://i.imgur.com/hzHr8ax.jpg http://i.imgur.com/hzHr8ax.jpg http://i.imgur.com/hzHr8ax.jpg        
0153名無し~3.EXE
垢版 |
2017/05/31(水) 05:49:58.18ID:jXEzIEcm
そろそろうぜぇ
セーフモードの入り方の解説なんかググれば出てくるものをそこら中に貼らんで良い
0155名無し~3.EXE
垢版 |
2017/06/02(金) 18:28:53.69ID:OwNBxqni
コマンドプロンプトってWindows7と10で劇的な違いとかってあった?
技術評論社のポケットリファレンスを買おうと思ってるんだけど、7の時に出たのは1000円程で10対応の最新版は3000円超えなんだよね
仕事でゴリゴリ使う訳じゃないから確認用に持っときたい程度
0156名無し~3.EXE
垢版 |
2017/06/02(金) 20:00:06.28ID:qg9TuXM1
コマンドプロントからできる程度の作業ならもう全部pshell使ってるなあ
つまりもうコマンドを使う機械自体が絶無
0158名無し~3.EXE
垢版 |
2017/06/10(土) 20:45:05.52ID:QlI4de7L
>>156
でも結局パワーシェルなんかだれも使わんでしょ
ぼくら見たいな大して役にも立たないものに労力を費やしてくれるいい人以外はw

unityでlinqを使いましょうとか声を張り上げてたあふぉを思い出したww
0159名無し~3.EXE
垢版 |
2017/06/10(土) 20:57:50.67ID:War3fYBc
>>158
おまそうwwwwww
とくれさwwwwww
0160名無し~3.EXE
垢版 |
2017/06/10(土) 22:38:31.64ID:qp8Fp5m3
PowerShell関連の書籍で今現在評判いいのがポケットリファレンスしかない
0161名無し~3.EXE
垢版 |
2017/06/11(日) 02:30:55.18ID:XNVOFNSi
>>160
To:
junmatsu@microsoft.com
Cc:
satoshif@microsoft.com
松本殿、元上司が「ヒロシを守るため」と激白した映像が公開されていますが、認識はありますか?
「人事に言われた」とも言っていますがこれはウソですか?
ウソなら訴えて訴えて動画を削除させるべきではないのですか?
2017/05/12(金) 21:42
松本淳殿、パワハラやセクハラの被害者に謝罪しましたか?
なぜ謝罪しないのですか?
パワハラセクハラの調査という名目で事実が無いという工作行為に加担するように脅迫したのはなぜですか?
知らなかったと言うように脅迫したのはなぜですか?
ネットに聴取された人が流したと思われる録音が出回っているのはガセとでもいうのですか?
その脅迫して言わせたヤラセを元に、裁判で虚偽の申告をしたというのは本当ですか?
当社を偽証罪の渦に貶めるつもりですか?
幻聴の可能性があると言いたいのですか?
パワハラ加害者にも問題はありますが、貴殿は人事としての監督責任すら持たない、
単なる会社のお客さんとでも言いたいのですか?
マイクロソフトの人事はマネージャーをサポートするのが仕事で不正を守るのが当たり前の文化だ、
告発を認めないとはどういうことですか?当社のマネージメントは不正に対し自制もできない、
世間に顔向けできないばかりか、みっともなく情け無い体面の者の集団とで言いたいのですか?
どこの部署のマネージメントの発言か5W1Hで摘示ください。
0162名無し~3.EXE
垢版 |
2017/06/11(日) 03:06:28.35ID:w0GBtplK
PowerShellからファイル名を置換するコマンド

Get-ChildItem "フォルダパス" | Rename-Item -NewName { $_.Name -replace ' ','' }

これ面倒なことしなくていいので便利なんだよね
0163名無し~3.EXE
垢版 |
2017/06/11(日) 03:21:59.17ID:1NpJMaSU
replaceの第二引数にスクリプトブロック渡せればもっといいんだけどな
0165名無し~3.EXE
垢版 |
2017/06/13(火) 19:14:20.67ID:L1x87Djd
書籍見てるとパイプを多用するようなんだが
そうせんと文句言われたりするもんか? (宗教争いが面倒、くらいの意味)
0166名無し~3.EXE
垢版 |
2017/06/13(火) 20:00:35.29ID:L1x87Djd
function print_test($a) {
Write-Host $a
}

print_test "a", "b", "c", "d"

------------------
PS C:\Users\test_user\Desktop>> .\win10_policy.ps1
a b c d

この挙動の謎っぷりマジ謎……
0167名無し~3.EXE
垢版 |
2017/06/13(火) 20:03:28.95ID:L1x87Djd
ああ、そういや , いらんのか、参ったな
0168名無し~3.EXE
垢版 |
2017/06/13(火) 20:05:42.16ID:L1x87Djd
functionの引数では , いるけど呼び出し時は , いらんとかよく間違える
その辺なんとかならんかなぁ
0169名無し~3.EXE
垢版 |
2017/06/13(火) 20:36:58.17ID:BB/uw9Y2
PSのカンマは配列を作るって覚えりゃいい
この二つは同じ

print_test "a", "b", "c", "d"
print_test @("a", "b", "c", "d")
0170名無し~3.EXE
垢版 |
2017/06/13(火) 20:58:22.61ID:mpR7yuzE
pshell使っててWINDOWSのエラーハンドル?が返って来た場合のエラーコード取得って
どうやってやるのが定番でしょうか?

例えばファイルを書き込もうとしてDISC-FULLのエラーになった場合ってエラーコードとしては
0x80xxxx03みたいなコードが返ってきますけど必要なのは下位1ワードだけなんです
0171名無し~3.EXE
垢版 |
2017/06/13(火) 21:11:03.84ID:5bjD86xL
ErrorLevel equivalent
ttp://blogs.msdn.microsoft.com/powershell/2006/09/15/errorlevel-equivalent/
0172名無し~3.EXE
垢版 |
2017/06/13(火) 23:27:40.35ID:L1x87Djd
>>169
たまにしか触らんせいだろうが、細かい部分でどうでもいいエラーが出るので
やっかいだなーという程度

String.equals と -eq で挙動違うのと
foreach-objectでループ二段抜けと
関数呼び出し時の , 有無は俺にはよくある orz

細部の表記に統一性もたしてくれたらPowershellイケてるよね、って言いきれるんだが
なかなか難しいところか
0173172
垢版 |
2017/06/13(火) 23:31:42.01ID:L1x87Djd
function set_registry_entry($key, $entry, $type, $value) {
set_full_registry_key $key
New-ItemProperty -Path $key -Name $entry -PropertyType $type -Value $value -Force
}

function set_full_registry_key($key) {
if (-Not (test-path $key)) {
$parent = Split-Path $key -Parent
Write-Host $parent

if (-Not (test-path $parent)) {
set_full_registry_key $parent
}

New-Item -Path $key
}
}
set_registry_entry "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" "AUOptions" "DWord" 3
set_registry_entry "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" "NoAutoRebootWithLoggedOnUsers" "DWord" 1

Powershellらしからぬ気もするが、パイプを意図的に使っていかないとPowershellぽくなくてダメなんだろうか?
0174名無し~3.EXE
垢版 |
2017/06/14(水) 00:50:51.51ID:uBpyQ5/y
>>173
あくまで自分の趣味だけど、パイプ多用で書き直してみた
この方が関数名や変数名考える必要もないし、名前のミスも少なくてよいと思う
でも関数でやるのが体に染みついてるならその方が楽だろうし、好き好きでいいかと

%{
@{
Path = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU"
Name = "AUOptions"
PropertyType = "DWord"
Value = 3
}
#二つ目は省略
}|%{
$key = $_.Path|Split-Path -Parent
%{
while(-Not (test-path $key)){
$key
$key = $key|Split-Path -Parent
}
}|sort -Descending|%{
Write-Host $_
New-Item -Path $_
}
New-ItemProperty @_ -Force
}
0175名無し~3.EXE
垢版 |
2017/06/14(水) 01:01:13.93ID:uBpyQ5/y
二カ所間違えてた
やっぱテストしないとダメだな

%{
@{
Path = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU"
Name = "AUOptions"
PropertyType = "DWord"
value = 3
}
#二つ目は省略
}|%{
$key = $_.Path
%{
while(-Not (test-path $key)){
$key
$key = $key|Split-Path -Parent
}
}|sort|%{
Write-Host $_
New-Item -Path $_
}
New-ItemProperty @_ -Force
}
0176名無し~3.EXE
垢版 |
2017/06/14(水) 02:10:08.26ID:EBRIef0K
>>174
鬼かwwww

まあ文句言われないようなら関数でもいっか……d
0178名無し~3.EXE
垢版 |
2017/06/14(水) 02:36:31.08ID:EBRIef0K
うげ、また確認用Write-Hostがのこってるとか

うんもういいうや……
0179名無し~3.EXE
垢版 |
2017/06/22(木) 00:57:04.22ID:fpkRrMCt
Win7デフォルト + PowerShell + UI Automationだとコケる可能性あるな
ボタンだかのメソッドを引っ張ってくる「なんちゃらPattern」が何も返さないっぽい

ぽいってのは全パターン網羅やってない、くらいの意味だが
列挙系のメソッドぶっこんだら空でしたって悲しい話(Write-Hostで戻り値みたら何もでなかった、くらいの意味で
0180名無し~3.EXE
垢版 |
2017/06/25(日) 13:35:27.43ID:LNtNrXAc
Excel の表をソートする方法はありますか。
範囲A1:K8 の表の、D2 の列を昇順にソートしたいのです。
0185名無し~3.EXE
垢版 |
2017/07/02(日) 16:53:53.67ID:UIKX1dqP
poweshellって結構なんでもできそうな感じがするんだけど、もしかしてDirectXのDDSファイルの情報とかも取れたりするのか?
0186名無し~3.EXE
垢版 |
2017/07/02(日) 21:06:40.70ID:Ex/F46Ei
DDSファイルの情報を取得して返すプログラムを書く

そのプログラムをPowerShellから呼ぶ

で、できるんじゃないの
0187名無し~3.EXE
垢版 |
2017/07/02(日) 21:56:57.99ID:T5t1iplf
>>186
馬鹿が一々口出してこ無くていいよ
そんなに構って欲しいの?構ってチャン
0189名無し~3.EXE
垢版 |
2017/07/04(火) 06:37:37.78ID:1z/ArB25
>>185
DDSファイルの情報が何者か知らんけどファイル内に情報あるなら取得できるでしょ
0190名無し~3.EXE
垢版 |
2017/07/13(木) 13:04:49.42ID:bXEmJwai
偉い人アドバイスをお願いします。↓のブログを見つけて携帯にグローバルIPアドレスの変更を通知しようと考えまして、
旧アドレスを記載したテキストを参照するところまでは記述の意味を何とか理解できたのですが、
「レスポンスの読み込み&確認」以降がどうしても良くわかりません。
http://rtaki.blogspot.jp/2010/10/ip.html

サイト(http://www.axisnetworks.biz/tools/gip/)のソースを見てみると、グローバルIPアドレスの直前に「<p class="style4" name="ip">」がありますので、
「$line」が空でなければ、そこにこれが含まれているかチェックして、次に何かとの一致があるかを確認しているようですが、
この「(?<address>[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)」が何を意味しているのか分からないです。

また、「$new address」は「$matches.address」だと定義され、それが変更時には上書き動作に引き継がれているようですが、
その「$new addredd」がどこから来るのかが分かりません。

なお、Write-Outputについては、2つ目の「前回確認済みのグローバルIPアドレス:」までは表示できています。
0191名無し~3.EXE
垢版 |
2017/07/13(木) 14:19:38.17ID:sHpRNaRR
正規表現でIPアドレスっぽいパターンを持った文字列を検索して、見つかったらその部分にaddressという名前を付けてる
$new addressではなく$new_addressな
どこから来るとかではなく、新しい変数をここで初めて宣言して代入してるだけ
$matchesの方がどこから来たかというと、-match演算子の結果が格納される暗黙変数として決められてる
どっちのifでどう失敗してるかとか、Write-outputをいろんな行に入れて、いろいろな値や式を渡して模索してみるといいと思うよ
0192名無し~3.EXE
垢版 |
2017/07/13(木) 14:37:43.43ID:9gYiCLE3
>>190
なかなか新鮮な質問だねw
(?<address>[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)
は正規表現で、数字の連続、点、数字の連続、点、数字の連続、点、数字の連続 にマッチする。要するにIPアドレスっぽい部分
?<address>はマッチした文字を入れる変数名の指定。$Matches.addresという書き方で参照できて分かりやすいねという話

$new_address = $matches.address は単純な代入式だw $new_addressという変数に$matches.addressの値を入れてるだけ
昔言語の先生の、「プログラムの=はイコールじゃない。結果的に同じになるけど」ってセリフ思い出したw
0193名無し~3.EXE
垢版 |
2017/07/13(木) 15:11:58.44ID:bXEmJwai
>>191
ありがとうございます! 教えてもらった「match演算子」というキーワードで検索したら↓のサイトがすぐにヒットして、ようやく意味がつかめそうです!
http://www.pine4.net/Memo/Article/Archives/168

「$matches.address」のドットが「$resp.ContentEncoding」のドットのようにメソッド等の前に付けるものなのかな?と思っていたため、その前の「$mathes」は単なる任意の変数かと思い込んでました^^;
https://technet.microsoft.com/ja-jp/scriptcenter/powershell_owner01.aspx
今まで全くプログラムは経験がなかったので↑とか複数の解説に目を通して基本的なルールを確認していたのですが、ド素人にはかなりハードルが高くて数日悩んでました・・・。
0194名無し~3.EXE
垢版 |
2017/07/13(木) 15:24:50.03ID:bXEmJwai
>>192
ありがとうございます! [0-9]+については、↓の記載をみてIPアドレスの3ケタだと思っていたのですが、「\.」が不明でした・・・。
http://www.lightship.co.jp/FileVisor6/help/operation/regexp.htm
エスケープが「'」だって解説があったので、もしかしたら\も?とは想像していたのですが、ドットを文字として使いたい場合は\を前に付けるという理解で合っていますか?
0196名無し~3.EXE
垢版 |
2017/07/14(金) 21:39:20.68ID:wklSEW3P
>>194
` はPowerShellのエスケープ
RegularExpressionはPowerShell専用じゃないので\をエスケープに使ってる
ちょっと戸惑うけどそう言うものだと思うしかない
0199名無し~3.EXE
垢版 |
2017/07/20(木) 03:26:11.89ID:ri2MNCBu
かつてWSHが捨てられたように、今度はPSが捨てられる序章ってこと?
0201名無し~3.EXE
垢版 |
2017/07/21(金) 13:57:33.80ID:cc7rg772
100枚ほどある連番画像を保存したくプログラミングの知識もない自分が
独学で下記のようなスクリプトを書きました
目的は果たせたのですがこういう風に書いた方がいいとかの意見が頂けると助かります

画像URL
"http://modelblog.org/wp-content/uploads/2017/05/EvaR24_001.jpg";から
"http://modelblog.org/wp-content/uploads/2017/05/EvaR24_100.jpg";まで

スクリプト
$Dir = ".\IMG\EvaR24_"
for ($i=1; $i -le 100; $i++){
$Source = "http://modelblog.org/wp-content/uploads/2017/05/EvaR24_"; + $i.ToString("000") + ".jpg"
$Dest = $Dir + $i.ToString("000") + ".jpg"
Invoke-WebRequest -Uri $Source -OutFile $Dest
}
Pause
0202名無し~3.EXE
垢版 |
2017/07/21(金) 17:52:42.84ID:n0TmnpH/
そのままでもいいと思うけど
PSの推奨する書き方はたぶんこんな感じ

$Dir = ".\IMG\EvaR24_"
foreach($i in 1..100){
$hash = @{
Uri = "http://modelblog.org/wp-content/uploads/2017/05/EvaR24_{0:000}.jpg" -f $i
OutFile = Join-Path $Dir ("{0:000}.jpg" -f $i)
}
Invoke-WebRequest @hash
}
Pause
0203201
垢版 |
2017/07/21(金) 19:45:56.98ID:cc7rg772
>>202
ありがとうございます。
こんなナイスな書き方あるとは想像も付きませんでした。
どうして@hashが
-OutFile: ファイルパス -Uri: 画像URL
みたいな感じで展開されるのかも未だ理解出来てないのですが
調べながら理解を深めたいと思います
0206名無し~3.EXE
垢版 |
2017/07/21(金) 21:09:01.27ID:n0TmnpH/
>>203
@ で展開されるとか、まあそういうもんだと思うしかないね
利点は別の変数用意する必要ないからミスが減る
0207名無し~3.EXE
垢版 |
2017/07/21(金) 21:46:44.09ID:oVoJzTd2
>>201
> $Dir = ".\IMG\EvaR24_"
この 'EvaR24_' と
> $Source = "http://modelblog.org/wp-content/uploads/2017/05/EvaR24_";
このURLの最後の 'EvaR24_' が同じ意味なら
$Dir = '.\IMG'
$Prefix = 'EvaR24_'
for($i in 1..100){
 $Name = "$Prefix{0:000}.jpg" -f $i
 $Source = "http://modelblog.org/wp-content/uploads/2017/05/$Name";
 $Dest = Join-Path $Dir $Name
 Invoke-WebRequest -Uri $Source -OutFile $Dest
}
Pause
ってやるかな
0208名無し~3.EXE
垢版 |
2017/07/21(金) 22:08:28.87ID:cc7rg772
>>204
>>205
スプラッティングと言うんですね リンクありがとうございます
ためになります

>>206
便利な機能だと思うのでそういうもんだと思って受け容れたいと思います

>>207
まさにそういうことでファイル名の一部です
自分でも$Dirなんて名前の変数に含めるのはちょっとおかしいかな?
と思いつつ手抜きしてた部分だったのでお恥ずかしい限りです

みなさんありがとうございます
0211名無し~3.EXE
垢版 |
2017/07/22(土) 15:38:34.69ID:ZPn40T7y
質問させてください。

@:ADからユーザーIDを基にメールアドレスを引っ張ってくる
A:@の処理を数百単位のユーザー分一気に行い、ファイル(txt、csv等)に出力

↑の2点をやる必要があり方法を調べているとどうも@はpowershellでできそうだ、と
詳細を調べて以下の形でメールアドレスを引っ張り、csvに出力すること自体はできました。

get-aduser -filter {Name -like "ユーザー名"} -Property EmailAddress | Select-Object EmailAddress | Export-csv -path パスとファイル名.csv -NoTypeInformation
ですが、出力された結果は

EmailAddress
xxxxx@xxxxx.co.jp
と2行になっていました。

これを2行目(メールアドレスだけ)出力する方法はないでしょうか。

また、Aについて、あらかじめ用意したユーザーIDが記載されたファイルのインポートややコピペで一気にメールアドレスを
出力する方法はないでしょうか。

よろしくお願いします
0212名無し~3.EXE
垢版 |
2017/07/23(日) 00:53:06.06ID:Nd7aVD4N
>>211
csvの形式は最初にヘッダ行が必要だから、それが正常な出力だよ
アドレスだけにしたいならこれでいい
get-aduser 略|%{$_.EmailAddress}|out-file パスとファイル名.txt

あとユーザー名のリストでやるならこうかな
Get-Content ユーザーIDが記載されたファイル|%{get-aduser -filter {Name -like $_} -Property EmailAddress }| 略

やっつけで処理遅そうだけど
0213名無し~3.EXE
垢版 |
2017/07/23(日) 12:53:39.37ID:UUTJNbvb
スクリプトを覚える動機は何時だってエロ画像ダウンローダなんだな。
0214名無し~3.EXE
垢版 |
2017/07/23(日) 15:37:13.38ID:6cZzbtBm
わざわざVSを立ち上げてプロジェを作るほどじゃないけど、だからと言って
いまさらbatchを使う気にもなれない

と言う理由でpshを使ってる
0215211
垢版 |
2017/07/23(日) 23:17:29.17ID:ZUCJRLjI
>>212
ありがとうございます。お礼遅くなってすいません。
教えていただいたやり方で一斉にメールアドレスを取得できる事を確認できました。

Powershellなんて使った事もない人間に無茶振りする上司が悪いので、もっさりでも
「こんなもんですよ」で通しますw
0216名無し~3.EXE
垢版 |
2017/08/23(水) 19:48:20.34ID:K6FzLXiK
$付きの環境変数があるんだけど、変数名の前にenv:付けても取れない。

この場合どうせればよいかのぅ。
0217名無し~3.EXE
垢版 |
2017/08/23(水) 22:02:15.15ID:VB5Lke+t
引用符をシングルクォートに変える
それでもダメならアクサングラーブでエスケープするとか
0218名無し~3.EXE
垢版 |
2017/08/23(水) 22:46:53.73ID:+z4ALWbP
>>217
明日やってみます!ありがとう!

結果も報告いたしますね!
0219名無し~3.EXE
垢版 |
2017/08/23(水) 23:12:11.64ID:+z4ALWbP
>>217
あれ。。こんな感じですか?

環境変数 $aaa

$bbb='$env:aaa'
echo $bbb

変数bbbに、環境変数$aaaが代入される
0220名無し~3.EXE
垢版 |
2017/08/24(木) 03:02:06.70ID:rzZwBEXI
それだと単にaaaという環境変数を求める書き方になってる
ちょっと試してみた
get-item 'env:$aaa'
get-item env:'$aaa'
get-item env:`$aaa
どれでも値を取り出せる
echo等に直接渡すために上記の先頭に$を付けると{}で囲んでみろよという親切な警告が出るね
{}で囲むならシンプルにecho ${env:$aaa}でOKだったわ
レスを投稿する


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