Windows 10のPackageManagement(旧OneGet)からChocolateyを利用したい

投稿者: Anonymous Windows 10のマシンにChocolateyを入れようと思い、まず10でちゃんと使えるかどうかググったところ、Windows 10 TPからPowerShellから使えるOneGetというパッケージマネージャが導入され、リリース版ではそれがPackageManagementという名前に変わったことを知りました。 OneGetの頃はChocolateyのリポジトリを利用することもできたようなのですが、リリース版になって削除された?らしく、ググった限りの方法では利用できません。 PackageManagementからChocolateyを使うにはどのような手順を踏めば良いのでしょうか? 関連してそうな各コマンドの結果は下記のとおりです。 PS C:> Get-Command -Module PackageManagement CommandType Name Version Source ———– —- ——- —— Cmdlet Find-Package 1.0.0.0 PackageManagement Cmdlet Get-Package 1.0.0.0 PackageManagement Cmdlet Get-PackageProvider 1.0.0.0 PackageManagement Cmdlet Get-PackageSource 1.0.0.0 PackageManagement Cmdlet Install-Package 1.0.0.0 PackageManagement Cmdlet Register-PackageSource 1.0.0.0 PackageManagement Cmdlet Save-Package 1.0.0.0 PackageManagement Cmdlet Set-PackageSource 1.0.0.0 PackageManagement Cmdlet…(Continue Reading)

PowerShellでInvoke-Commandコマンド実行時エラーについて

投稿者: Anonymous Windows PowerShell でInvoke-Commandコマンドを実行したところ下記のエラーメッセージが出ました。 Invoke-Command -ScriptBlock { &”D:Program FilesC.exe” 引数・・ } -ComputerName “B” エラーメッセージ Could not connect to ~ database: ユーザー ’NT AUTHORITYANONYMOUS LOGON’ はログインできませんでした。 実行環境等は、ローカルPCからリモートデスクトップ接続で”A”(Windows Server 2012) に接続し、 “A”サーバーのWindows PowerShellからコマンドを実行。”B”(Windows Server 2012)に存在する”C.exe”を実行すると 更に別のサーバー”D”(Windows Server 2012)のSQL ServerのDBを参照して値を返します。 “D”サーバーのDBを参照しようとして接続できないためエラーメッセージされるようです。 リモート先からさらに別のマシンのDBを参照することが上記のコマンドでは無理なのでしょうか。 解決策がありましたらお願いします。 解決 “C.exe”でのSQL Server接続が「統合Windows認証」となっているためだと思われます。この場合Windows上の実行ユーザーが接続権限を持っている必要がありますので、 Invoke-Commandの-Credentialオプションで”D”にログインできるユーザーを指定すればよいのではないでしょうか。 例えば”B”にリモートデスクトップで接続して”C.exe”を実行した場合はエラーが出ないのであれば、そのログインユーザーを指定してみてください。 また”C.exe”の使用する接続文字列をWindowsアカウントと関係のない「SQL Server認証」に変更することでも回避できます。 回答者: Anonymous

Powershellでダブルクォーテションで囲まれた文字列を置換したい

投稿者: Anonymous csvファイルをタブ区切りでsqlserverにbulkinsertしたいのですが、文字列にダブルクォーテーションで囲まれたカラムが混在しています。 さらにそのダブルクォーテーション付きのカラムにはカンマもあります。 普通であればダブルクォーテーションを削除してカンマをタブに変換すればいいのですが上記がネックとなります。 そのため前処理として、 カンマを別の値(被らなければなんでもよい)に置換 ダブルクォーテションンを削除 カンマをタブに変換 をしたいです。 文字列 1,12345,”aaa,bbb”,56789,”aaa”,34567 例えば、”aaa,bbb”のカンマだけをxに置換して”aaaxbbb”にしたいです。 $data = Get-Content .test.csv | ForEach-Object { $_ -replace “”,””} -replace以降の指定の仕方がわかりません。 よろしくお願いします。 解決 コメントでも触れられているように一旦Import-Csvで読みこんだ方が確実かと思います。 その後に生成された各オブジェクトのプロパティの値を加工して結合するだけです。 Import-Csv .test.csv -Header (1..6) | foreach { $_.psobject.Properties.Value.Replace(“,”, “x”) -join “`t” } カンマのまま残すのであれば置換する必要もないので以下でいいです。 Import-Csv .test.csv -Header (1..6) | foreach { $_.psobject.Properties.Value -join “`t” } 回答者: Anonymous

英語版WindowsのPowerShellで日本語ショートカットを作成するには

投稿者: Anonymous Windows10/PowerShell5.1環境を考えています(より古い環境にも対応していると嬉しいですが)。 PowerShellでショートカットを作成する方法を検索すると、こちらに書かれているような、 WScript.Shell を利用した例が多くヒットします。 この方法は、日本語版Windowsではうまく動作したのですが、英語版Windows(Windows Server 2016 on EC2)で同様のコマンドを実行するとエラーが発生しショートカットは作成されませんでした。 script(UTF-8 with BOM): $file= $Env:Temp + “ほげほげ.txt” $shortcut = $Env:Temp + “ほげほげショートカット.lnk” $WsShell = New-Object -ComObject WScript.Shell $Shortcut = $WsShell.CreateShortcut($shortcut) $Shortcut.TargetPath = $file $Shortcut.IconLocation = $file $Shortcut.Save() 結果: > .create.ps1 Value does not fall within the expected range. At C:UsersAdministratorAppDataLocalTemp2create.ps1:6 char:1 + $Shortcut.TargetPath =…(Continue Reading)

PowerShell でフォルダ内の”それぞれ”最新ファイルを取得したい。

投稿者: Anonymous PowerShellでフォルダ、ファイル操作のスクリプトを書いているのですが、賢い書き方をご存じであればご教授ください。 あるフォルダの中には以下のようなファイルが存在します。 Test-A001.txt 2017/04/18 Test-A001_old.txt 2017/04/10 Test-B001_最新.txt 2017/04/19 Test-B001.txt 2017/04/11 Test-C001.txt 2017/04/18 Test-C001_20170417.txt 2017/04/17 この中から、日付が新しい「Test-A|B|C」を取得したい。 取得したファイルリストは以下の通りです。 Test-A001.txt 2017/04/18 Test-B001_最新.txt 2017/04/19 Test-C001.txt 2017/04/18 よろしくお願いします。 解決 「Test-A|B|C」が固定長かつ先頭から始まることが保証されているなら、下記のコードで取れます。 $len = “Test-X”.Length # グループ化する文字数(6文字) $gp = ls | %{$_.Name.Substring(0, [Math]::Min($_.Name.Length, $len))} | group $ss = $gp | %{ $s=$_.Name + “*”; ls -Filter $s | sort LastWriteTime…(Continue Reading)

コマンドプロンプトとPowershellの違い

投稿者: Anonymous windows10のコマンドプロントで新しいプロジェクトの初期設定を行おうとしています。 ローカルでの環境設定の為teratermで使用していたcdやlsなどのコマンドがスムーズに使えず、調べていたところ以下2点気になったのでお力添え頂けますと幸いです。 コードの一覧 コマンドプロントの操作のコマンド一覧はどこにあるのでしょうか? Teratermでいうls、ls -lなど、に対応するものが調べられず困っています。 PowerShellとの違い 似たようなPowerShellだと比較的Teratermと同じコマンドが使用できている気がします。 PowerShellとコマンドは何が違うのでしょうか?二つある意味がよく分かりません。 参考: 基本コマンドプロンプト25選!逆引きコマンド一覧 解決 まず最初に端末エミュレータという概念を説明します。テレビの受像機をイメージしてください。メーカーは受像機を製造しているだけであり、そこに映し出されるのは放送局からの映像です。Tera Termもあくまで接続先の出力を表示するものであり、Tera Term自身がコマンドを持つわけではありません。 次にシェルという概念を説明します。シェルはユーザーからの入力を受け取り、コマンドを実行します。コマンドは内部コマンドと外部コマンドに分かれます。内部コマンドは各シェルに特有のものであり、外部コマンドは対象マシンにインストールされている実行ファイルとなります。 またコマンドプロンプトはCMD.EXEというシェルを指し、PowerShellはもちろんPowerShell自身を指します。ですので、 Tera Termで接続した先のシェルの持つ内部コマンド、Tera Termで接続した先のマシンにインストールされている実行ファイル CMD.EXEの持つ内部コマンド、Windows 10にインストールされている実行ファイル PowerShellの持つ内部コマンド、Windows 10にインストールされている実行ファイル ということになります。 その上で回答となりますが、 CMD.EXEの持つ内部コマンドについてはコマンドプロンプト上でHELPを実行すると一覧が得られます。Windows Commandsに内部コマンド、外部コマンドが混在して列挙されています。 PowerShellの持つ内部コマンドについてはPowerShell上でGet-Commandを実行すると一覧が得られます。ただし、モジュールを読み込むことでいくらでも追加できます。 なお、PowerShellでlsが使えるとお考えのようですが、単にlsはGet-ChildItemのエイリアスでしかなく、引数はlsとまったく異なります。 回答者: Anonymous

vagrantコマンドをpowershellエイリアスに登録したが使用不可?

投稿者: Anonymous 環境 windows10 vagrant virtualbox vagrant upと毎回うつのがだるいのでpowershellのエイリアスに登録しましたが、vuとうっても認識してくれませんでした。get-aliasでvuが設定されているのは確認しています。 aliasはあるけど認識してないです。powershellのaliasをvagrantコマンドと認識させる方法はあるのでしょうか? 解決 自己解決 new-moduleを利用する new-moduleはpowershellのコマンド あとは調べればわかる 回答者: Anonymous

¿Como des comentar una linea especifica en un archivo con un comando en linux?

publicado por: Anonymous tengo un archivo que tiene lo siguiente: #hola como estas #todo es posible #esto es un comentario con que comando quito el comentario usando como referencia la palabra inicial en este caso (todo) para quitar el comentario yo e usado este comando sed -i ‘2 s/^#//’ ejemplo.sh pero tengo que especificar que…(Continue Reading)

コマンドプロンプトを終了させたい

投稿者: Anonymous batファイルでBox上のドライブにあるファイルをローカルにダウンロードさせる際、ローカルに既に同じファイルがあった場合にコマンドプロンプトでY/nの入力を求められたまま終了しません。 Powershellからbox cliのコマンドをたたくbatファイルをstart-processで実行しようとしています。 実行はできるし、エラーが起きた場合にはきちんと検知して終了します。 Powershell側が終了したら、コマンドプロンプトも終了させるにはどうしたらいいでしょうか。 bat ↓ Box files:download [ファイルID] –destination [ダウンロード先] 解決 ちなみに、事後の対策を考える前に、そもそもダウンロード先に既にファイルが存在するかどうかを事前にチェックして実行する/しないを制御すれば良いのでは? PowerShell/ファイル・フォルダの存在チェック・Test-Path / Test-Path box側のファイル名情報は、これらのAPIで取得出来るのでは? box files:get ID / box folders:items ID Ordering of get folder items API call 上書きして問題ないなら -y オプションが指定出来るのでは? box files:download ID -y, –yes Automatically respond yes to all confirmation prompts この辺の記事にあるように、開始時にプロセスの情報を取得しておき、強制終了が必要になったら、そのプロセス情報を指定して終了させれば良いのではないでしょうか。 【Start-Process】PowerShellで別プロセスを起動させる方法 / Start-Process 【Stop-Process】PowerShellでプロセスを強制終了させる方法とは? / Stop-Process…(Continue Reading)

PowerShellでテキストから正規表現を用いて特定の数値を抜き出し四則演算を行いたい

投稿者: Anonymous hoge.txt hoge0500huge4600telssae0700 hoge0600huge4700telssae0800fdef 例えばこの様なテキストがあったとして ^hoge0(d{1,})huge4(d{1,})telssae0(d{1,})(.*)?$ この様な正規表現を用いて特定の数字を取得して、その数値に四則演算を行いテキストとして出力したいです。 イメージとしてはこのような感じです。 $x = 2 (正規表現) ^hoge0(d{1,})huge4(d{1,})telssae0(d{1,})(.*)?$ $AA = $1 / $x $AB = $2 / $x $AC = $3 / $x (テキスト出力) hoge0$AAhuge4$ABtelssae0$AC$4 (出力結果) hoge0250huge4300telssae0350 hoge0300huge4350telssae0400fdeffdef どのようにすればよいか教えて頂けると幸いです。 補足 $WARU = 2 $text = @" hoge0500huge4600telssae0700 hoge0600huge4700telssae0800fdef "@ $pat = "hoge0(d{1,})huge4(d{1,})telssae0(d{1,})(.*)?" $regex = [regex]$pat $regex.Matches($text) | foreach {…(Continue Reading)

PowerShell上でシンボリックリンクやジャンクションを作るには?

投稿者: Anonymous コマンドプロンプトやバッチファイルでは mklink コマンドを使ってシンボリックリンクやジャンクションを作ることができますが、PowerShell 上ではこのコマンドが使えないようです。 PS C:Userstest> mklink mklink : 用語 ‘mklink’ は、コマンドレット、関数、スクリプト ファイル、または 操作可能なプログラムの名前として認識されません。名前が正しく記述されていること を確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。 PowerShell なら専用のコマンドレットとか、あるいは.NET経由で作れてもいいような気がするのですが、 cmd /c mklink などとして cmd.exe 経由で実行するしかないのでしょうか? 解決 mklinkはcmd.exeの内部コマンドであり、独立した実行ファイルではありません。 PowerShell で シンボリックリンクを 使えるようにしようが参考になります。またこの中で触れられているようにシンボリックリンクに関してはNew-Item -ItemType SymbolicLinkで作れるようです。 回答者: Anonymous

PowerShell上でcl.exeを使う

投稿者: Anonymous visual studio 2017でPowerShell上でコンパイラを使う方法はありますか? Developer Command Prompt for VS 2017もありますがPowerShell上ではなくcmd.exe上になってしまいます。 また、Developer Commnd Prompt for VS 2017だとこのメニューから起動しないとcl.exeが使えません。(普通にコマンドプロンプトを起動しただけでは使えない) 普通にPowerShellを起動すれば、いつでもコンパイラを使えるようにしたいのですがどうすればいいのでしょうか? OS: Windows 10 1709 解決 PscxモジュールをインストールしてImport-VisualStudioVars関数を使うのはどうでしょうか? 回答者: Anonymous

PowerShellでZabbixをインストールする方法

投稿者: Anonymous PowerShellでZabbixをインストールしたいです。 コマンドプロンプトでは以下のコマンドでインストールできることは確認しました。 zabbix_agentd.exe -i -c zabbix_agentd.conf また、PowerShellでは以下のコマンドでインストールexeを実行できるそうです。 Start-Process -FilePath notepad.exe -ArgumentList test.txt -Wait Start-ProcessコマンドにZabbixインストールに使用する設定ファイルを指定するcオプションを指定し、インストールを実施するにはどうすれば良いでしょうか。 よろしくお願いします。 解決 使ったことはありませんが、以下のページが参考になるかと思います。 https://social.technet.microsoft.com/Forums/ja-JP/6b8149c2-1bc6-41c3-a1e0-c0eceac6fdda/startprocess?forum=powershellja 今回の場合ですと、 Start-Process -FilePath zabbix_agentd.exe -ArgumentList “-i”,”-c”,zabbix_agentd.conf -Wait でいかがでしょうか。 回答者: Anonymous

PowerShellにて外部プロセスによる大量の標準出力を出力順に取得したい

投稿者: Anonymous PowerShell 5.0にてSystem.Diagnostics.ProcessのOutputDataReceivedイベントを使って標準出力をリダイレクトすると、出力順が乱れて本来の標準出力と異なる結果が返ってきてしまうことがあります。 プロセスに対してStandardOutput.ReadToEndメソッドを使用すれば出力順は乱れませんが、標準出力のバイト数が大きいと処理が固まってしまいます。 リダイレクトを使って標準出力を出力順に受け取ったり、StandardOutput.ReadToEndのように同期のとれた方法で安全に標準出力結果を取り出すには、どうすれば良いのでしょうか。 なおPowerShellからcmd /C “ping /?”のようにcmd.exeを経由で外部exeを実行することで上記の要件は強引に達成できるように見えますが、よりPowerShellらしい解法があればご教示願います。 サンプルコード: #pingのヘルプを呼び出し、標準出力を返すだけのサンプルコード function Invoke-Ping { $info = New-Object -TypeName System.Diagnostics.ProcessStartInfo $info.CreateNoWindow = $true $info.UseShellExecute = $false $info.RedirectStandardOutput = $true $info.FileName = ‘ping’ $info.Arguments = @(‘/?’) $process = New-Object -TypeName System.Diagnostics.Process $process.StartInfo = $info $outBuilder = New-Object -TypeName System.Text.StringBuilder #非同期に標準出力を受け取る $outReceived = { if (! [String]::IsNullOrEmpty($EventArgs.Data))…(Continue Reading)

ATOMで作成したPowerShell(ps1)が文字化けする

投稿者: Anonymous ATOMエディターで以下のスクリプトを書きました 以下がスクリプトの内容です Write-Host “ハロー” PowerShellから実行すると文字化けします。 HelloWorld.ps1 > 繝上Ο繝シ ATOMではUTF-8を使っています。これは変えたくないのですが 拡張子がps1の場合のみ Shift-JIS で保存するような機能はATOMにありますか? または、PowerShellの設定を変える事で文字化けしなくなるように 出来ますでしょうか? PowerShell version Name Value —- —– PSVersion 5.1.15063.674 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…} BuildVersion 10.0.15063.674 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1 ATOM Vetsion 1.21.1 解決 Atom インストールして確かめましたが UTF-8 保存するとBOMが付かないので、 powershell インタプリタがレガシーエンコーディングで読んで文字化けしますね。 ISE じゃなくてどうしても Atom で…(Continue Reading)

PowerShell(x64)のウィンドウに、ファイル名に記号を含むファイルをドラッグ&ドロップすると文字が欠落してしまう

投稿者: Anonymous Windows 10 x64のPowershell(x64, 非管理者権限)のウィンドウに、ファイルをドラッグ&ドロップしてパスを入力させようとしたところ、ファイル名含まれている記号部分が欠落されてPowerShellのウィンドウに入力されてしまいます。 x86版を使用すると問題無いのですが、このような動作になってしまう理由は何が考えられるのでしょうか。 下記のように、ファイル名が中黒(U+30FB)のファイルC:tmp・.txtを作成しドラッグ&ドロップしましたが、記号のみが消えC:tmp.txtが入力されます。 > $PSVersionTable Name Value —- —– PSVersion 5.1.18362.145 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…} BuildVersion 10.0.18362.145 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1 > New-Item “・.txt” -Type File Directory: C:tmp Mode LastWriteTime Length Name —- ————- —— —- -a—- 2019/06/04 5:06 0 ・.txt # 作成された…(Continue Reading)

PowershellでDiagnostics.ProcessのBeginOutputReadLineを実行するとアプリケーションがハングアップする

投稿者: Anonymous お世話になります。 掲題の件で原因が分からずに困っております。 BeginOutputReadLineの実行直後に、呼び出し元のPowershell.exe(またはPowershell_ise.exe)が ハングアップしてしまう事象が発生しております。非同期ではなく、 同期による標準出力の読み取りでは問題無いのですが、標準エラーも扱いたいため、 少なくとも一方を非同期で読み取らせる様にしたいのです。 この問題に関する解決策や、何かしら解決につながるヒントをいただければと存じます。 ■当方環境 Windows 10 32bit Powershell v5.1 .Net Framework 4.7.2 ■テストソース Using Namespace System.Diagnostics Using Namespace System.Text Using Namespace System.Windows.Forms Add-Type -Assembly System.Windows.Forms $args = “-Command `”& {Get-Date}`”” $passwd = [System.Security.SecureString]::new() “qwerty123”.ToCharArray() | %{$passwd.AppendChar($_)} $StartInfo = [ProcessStartInfo]::new(‘Powershell.exe’, $args) $StartInfo.RedirectStandardOutput = $true $StartInfo.UseShellExecute = $false $StartInfo.UserName = $env:USERNAME…(Continue Reading)

直接的に保存できない点字ファイルをPowerShellなどで自動的にコンバートできますか?

投稿者: Anonymous 以下のことはPowerShellで可能でしょうか? BASE 形式の点字ファイルは通常では文字化けして開けないのですが、MyEdit というテキストエディタは点字ファイルをコンバートして通常のひらがなで表示してくれます。 その文章をコピペすれば使えるのですが、可能なら手数を省くために、表示された画面のテキストをコピペして自動で元のファイル名でテキストファイルに保存したいのです。 この目的は、人力でやる以下を省くためです。 オール選択→コピー→貼り付け→ファイル名をつけて保存という手間を省くためです。 これは可能でしょうか? ソフトウェアは点字ファイルの開けるテキストエディタです。 行程としては、 クリックしたらすぐに開く ↓ そのまま、ひらがなで表示される ↓ 自動的にコピー ↓ テキストファイルとして元の開いたファイルの名前で保存 この行程をbatファイルやPowerShellやVBScriptで自動化したいのです。 ソフトウェアはMyEditというテキストエディタです。 http://talk-pc.sakura.ne.jp/myedit_basis.html 体験版 https://www.aok-net.com/dlpage/pctalker.neo.trial.html サンプル点字ファイル https://www.mhlw.go.jp/tenji/bse/file01-01.BSE MyEditだと、通常の文章で開きます。 こんなことができるそふとです https://www.youtube.com/watch?v=g4yacKtnI5A 直接的には編集禁止になって、上書きできないですが、文字を選択、コピーすれば実質的に別のテキストエディタに貼り付ければ保存は出来ますので自動化できれば、実質コンバートソフトになります。 保存する場合はUTF-8で希望です。 よろしくお願いいたします。 解決 BASE 形式の点字ファイルを、その点字列が意味している平仮名文字列にした上で、テキストファイルとして保存したい、という話だと理解しました。 直接変換しちゃう方法 であれば、テキストエディタを介することなく、直接プログラムで変換してしまうのが早そうです。 BASE 形式のファイルフォーマットについての詳しい解説を見つけることができませんでしたが、第三者の解析(例)によるとヘッダーと本文があって、本文は Braille ASCII で書かれたもののようです。本文だけコンバートできれば良いのであれば簡単そうです。 そうであるならば、ヘッダーは無視しつつ本文を前から順番に処理するプログラムを書けば良さそうです。たとえば Braille ASCII と日本語点字における文字の対応付けを辞書として覚えておいて、1 文字ずつ変換し出力していくプログラムをお好きなスクリプトで書けば良いでしょう(より丁寧にやるなら濁点・半濁点の処理が要るでしょう)。 自動化ツールを使う方法 スクリプトを書かずに解決したいのであれば、GUI ツールの操作を自動化するツールというものが世の中にはあるので、それを使うのが良さそうです(多くは有償ですが……)。たとえば Power Automate Desktop など。 回答者:…(Continue Reading)

Deshabilitar puertos USB desde CMD o Powershell

publicado por: Anonymous Estoy realizando un proyecto en el que, desde Java, ejecuto comandos de la CMD o de Powershell para llevar a cabo ciertas tareas (como, en este caso, deshabilitar los puertos USB de un ordenador). He estado buscando información y lo que verdaderamente se ajusta a lo que quiero realizar es habilitar la…(Continue Reading)

Git me pide contraseña cada vez que envío a Github

publicado por: Anonymous Uso doble autenticación con GitHub, por lo tanto uso un token que funciona como contraseña, pero en powershell bajo windows10, cada vez que ejecuto el comando git push o git flow publish me pide usuario y contraseña. Tengo instalado el módulo Posh-Git y Git-Flow. Nota adicional Tengo bloqueado el puerto 22 por…(Continue Reading)

アーカイブからイベントログの詳細情報を取得

投稿者: Anonymous すみません。Windows2012Serverで、 イベントログのアーカイブファイルからイベントログの詳細情報を取得したいと思っています。 取得したい情報は、 Get-EventLog -ComputerName 192.168.63.1 -LogName “Security” -After ‘2016/1/1’ -Before ‘2016/2/1’ | Select-Object EntryType,EventID,Source,TimeGenerated,Message | Where-Object {$_.EventID -in 4624,4778} を実行したときのように下記の情報がほしいです。 1.日時、Source 2.Message 3.イベントID 4.サブジェクト ・セキュリティID ・アカウント名: ・アカウントドメイン ・ログオンID 5.ログオンタイプ 6.新しいログオン ・セキュリティID ・アカウント名: ・アカウントドメイン ・ログオンID ・ログオンGUID 7.プロセス情報 ・プロセスID ・プロセス名 8.ネットワーク情報 ・ワークステーション名: ACTSYS-ACT1B ・ソース ネットワーク アドレス ・ソース ポート 9.詳細な認証情報 ・ログオンプロセス ・認証パッケージ ・移行されたサービス ・パッケージ名 (NTLM…(Continue Reading)

powershell で mkvirtualenv TestEnv を実行するとエラーになる

投稿者: Anonymous poewrshellを使って、Data Visualizationを学びはじめた者です。 Pythonのversionは2.7 windowsは8.1を使用しています。 私の、システム環境変数パスは、下記の通りです。 c:python27;c:python27scripts;c:python27toolsscripts;C:Program Files (x86)Common FilesAppleApple Application Support;C:Program Files (x86)InteliCLS Client;C:Program FilesInteliCLS Client;C:windowssystem32;C:windows;C:windowsSystem32Wbem;C:windowsSystem32WindowsPowerShellv1.0;C:Program FilesIntelIntel(R) Management Engine ComponentsDAL;C:Program FilesIntelIntel(R) Management Engine ComponentsIPT;C:Program Files (x86)IntelIntel(R) Management Engine ComponentsDAL;C:Program Files (x86)IntelIntel(R) Management Engine ComponentsIPT;C:Program Files (x86)Windows LiveShared;C:Program FilesIntelWiFibin;C:Program FilesCommon FilesIntelWirelessCommon;C:Program Files (x86)Common FilesRoxio SharedDLLShared;C:Program Files (x86)Common FilesRoxio SharedOEM12.0DLLShared;C:Program Files (x86)Roxio 2010OEMAudioCore;C:Program Files (x86)Bracketscommand;C:Program…(Continue Reading)

PowerShell処理でgitログが文字化けする

投稿者: Anonymous PowerShellでGitのログ出力を加工しようとしたのですが、日本語が文字化けしてしまいます。 文字化けしないようにするにはどうしたら良いのでしょうか。 以下、現象の発生するコード例です。 Invoke-Expression “git log –oneline” | Select-Object -First 5 試したこと $env:LANG = “ja_JP.UTF-8” を実行することで git log 単体実行での文字化けは治るのですが、パイプ処理や、リダイレクトでファイル出力すると、同様の文字化けが発生してしまいます。 環境 Windows10 Pro 64bit (1809) PowerShell version 5.1.17763.316 git version 2.18.0.windows.1 解決 一般論として、特にリダイレクトはあくまでバイト列を送受信するものであり、送り側と受け側での合意がなければやり取りできません。更にUNIX系ツールでは送受信されるデータを関与していないものが多いです。 ところがWindowsでは状況がかなり異なります。基本的にコントロールパネルで設定されたエンコーディングでテキストデータがやり取りされていることを前提としています。その際、日本語においてはShift_JISしか設定できません。 またPowerShellなどの多くのアプリケーションは受け取ったテキストをUnicodeに変換して処理するためエンコーディングが非常に重要となります。 以上を踏まえて、送り側と受け側とでどのようなバイト列とするかをプログラムの組み合わせ毎に設計する必要があります。 質問では、gitがログメッセージを出力し、PowerShellがその文字列を受け取ることとなっています。neeさんからも回答がありますが、それ以外にも方法があって、例えばgit logコマンドには–encodingオプションが存在します。環境変数LANGは特に設定せず Invoke-Expression “git log –encoding=Shift_JIS –oneline” | Select-Object -First 5 とやる方法もあります。 もちろん個別に指定するのではなくi18n.logOutputEncoding設定でデフォルト値を変更することもできます。ただし、gitコマンドはPAGERを呼び出したりといろいろなプログラムと組み合わせるため、先に述べた通り、どのプログラムとどのプログラムをどのエンコーディングでやり取りするかを検討しなければなりませんので、万能な回答は難しいです。 neeさんの回答に[Console]::OutputEncodingを使った方法が挙げられていますが、罠があるため指摘しておきます。もちろん、送り側・受け側でUTF-8を使用するのは選択肢の一つとして正しいです。しかし、[Console]::OutputEncodingを変更するとそれに従ってコンソールのフォントも変更されます。手元の環境ではConsolasに変更されました。この状態ですとプログラム間は正しくテキストをやり取りできていますが、コンソールが日本語を表示できません。一度、フォント設定をMSゴシック等に変更することで解消されますが、設定を行っていない環境では文字化けが解消していないかのような誤解を与えますのでお気を付けください。 回答者: Anonymous

powershellでchmodコマンドが認識されない

投稿者: Anonymous windows10でファイルのパーミッション変更をしたく、chmodコマンドを入力したら認識されませんでした。 chmod : 用語 ‘chmod’ は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されませ ん。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してくだ さい。 他に変更する方法、またはchmodが使えるようにするにはどうすればいいでしょうか。 ご教授願います。 解決 chmod は Linux 向けのコマンドなので、Windows 環境で使用することはできません。 Windows でファイルの所有者やアクセス権限をコマンドで変更するには、takeown や icacls コマンドを使用するようです。 参考: Windowsでファイルの所有者を変更する(コマンドプロンプト編) Windowsのicaclsコマンドでファイルの所有者を変更する 回答者: Anonymous

「Powershell ウインドウをここに開く」からPowershellを実行した場合、javaコマンドが使えない

投稿者: Anonymous 環境変数などを設定し、Powershellを普通に開いて「java -version」などを実行すると正常に動くのですが、「Powershell ウインドウをここに開く」からPowershellを実行した場合、以下のようなエラーが出て実行できません。 Error: opening registry key ‘SoftwareJavaSoftJava Runtime Environment’ Error: could not find java.dll Error: Could not find Java SE Runtime Environment. 原因はわからないでしょうか? 解決 回答が形式上存在しない状態になってるので転載します。 payanecoさんより: 「Powershell ウインドウをここに開く」時はエクスプローラを全て閉じないと環境変数が反映されません。 回答者: Anonymous

Powershellのout-fileで追記ができない

投稿者: Anonymous out-fileでログ出力しようとしています。 オプションの-Appendを使っているのに追記にならず上書きになってしまします。 ■ログ出力の関数 function fn_OutputLog($logFile, $msg){ Out-File -FilePath $logFile -InputObject $msg -Encoding default -Append } ■プログラム $msg = “処理開始: ” + (Get-Date -Format G) .OutputLog.ps1 fn_OutputLog $logFile $msg 処理途中でもfn_OutputLogを呼び出す  $msg = “処理終了: ” + (Get-Date -Format G) .OutputLog.ps1 解決 下記のスクリプトを試したところ、現象が再現できず追記が正しく行われました。(複数回実行しても問題なく追記が行われています) 質問以外のコードで “” > $logFile のように上書き形式のリダイレクトなどを行っている箇所はないでしょうか。 また下記のコードをそのまま実行した結果は、下記でコメントアウトされた出力結果と同一の内容になっているでしょうか。 Get-Content .OutputLog.ps1 <# 出力結果 function fn_OutputLog($logFile, $msg){…(Continue Reading)

Comparar fechas con powershell

publicado por: Anonymous Buenas tardes; Tengo un inconveniente al realizar una comparación de fechas con powershell, las fechas con las que hago la comparación se encuentran en un archivo CSV, ejemplo: titulo – recordatorio – vence Noticia01 – 13/01/2018 – 30/01/2018 Noticia02 – 14/01/2018 – 30/01/2018 donde, la fecha recordatorio hara una comparación con la…(Continue Reading)

PowerShellで単語検索して一部だけを取得したい

投稿者: Anonymous list.txt ID101,4,ドリランド,1,2,3,4,5 ID102,5,ランド,1,2,3,4,5 ID121,4,ドリームランド,1,2,3,4,5 ID131,4,ドリラド,1,2,3,4,5 ID401,5,ドリラ,1,2,3,4,5 コマンド(batch-file) PowerShell Select-String "ランド" "list.txt" 出力結果 datalist.txt:1:ID101,4,ドリランド,1,2,3,4,5 datalist.txt:2:ID102,5,ランド,1,2,3,4,5 datalist.txt:3:ID121,4,ドリームランド,1,2,3,4,5 この出力結果を以下のように一部分だけを出力することは可能ですか? 可能でしたら是非ご教授くださると助かります。 理想 ID101,ドリランド ID102,ランド ID121,ドリームランド 解決 カンマでデータを区切るCSVでlist.txtが書かれているなら、次の方法で抜き出せます。 import-csv ./list.txt -Header ("h1","h2","h3")|%{ if( $_.h3 -match "ランド" ){ $id=$_.h1 $name=$_.h3 "${id},$name" } } 回答者: Anonymous

フォルダ内にある2つ違う形式のファイルのうち、片方の作成日が一番古いファイルを削除

投稿者: Anonymous スクリプト開発初心者です。 同じフォルダ内に、pngファイルと、txtファイルがいくつかあり、 作成日が一番古いtxtファイルだけを削除する処理を実装したく、 下記のコードを参考に考えているのですが、 作成日が一番古いファイルの抽出方法が思いつきません。 何か良い方法、もしくは、このコマンドを使った方が良いなど ありましたら教えていただけると幸いです。 回答、お願い致します。 $files = Get-ChildItem <対象フォルダのパス> | Sort-Object -Descending -Property LastWriteTime $files = $files[1 .. $files.length] foreach($file in $files) { Remove-Item $file } 解決 Select-Objectを使うことでしょうか。-Firstまたは-Lastで指定個数を取得できます。 Get-ChildItem “対象フォルダのパス” | Sort-Object LastWriteTime | Select-Object -First 1 | Remove-Item 尚、LastWriteTimeは更新日でありCreationTimeが作成日になります。 回答者: Anonymous

配列宣言時に各要素の区切り文字を変えると動作が異なるのは何故か

投稿者: Anonymous PowerShellの配列は@("hoge", "fuga")のように要素入りで初期化できます。 その挙動について、 @("hoge"; "fu" + "ga")と記述すると配列の要素は["hoge", "fuga"]になりますが @("hoge", "fu" + "ga")と記述すると配列の要素は["hoge", "fu", "ga"]に分割されてしまいます。 @(1 – 2; 1 + 2)では[-1, 3]を得られますが、 @(1 – 2, 1 + 2)では各要素がObjectとして扱われ、下記のエラーが発生します。 [System.Object[]] に ‘op_Subtraction’ という名前のメソッドが含まれないため、メソッドの呼び出しに失敗しました。 なぜ,と;の区切り文字で挙動が変わるのでしょうか。 検証コード "1: 想定通り" $ar = @() $ar += "hoge" $ar += ("fu" + "ga") $ar += 1 + 2 $ar +=…(Continue Reading)