Quantcast
Channel: VMware Communities : All Content - Virtual Machine, Guest OS and VM Tools
Viewing all articles
Browse latest Browse all 2641

PowerShell cmd

$
0
0

PowerShellスクリプト(ps1)の実行を許可するには

IaaSのサーバではそのままで実行OK


Windows PowerShell スクリプトを実行する


> Set-ExecutionPolicy RemoteSigned

set-execpol.png

 

 

取得した情報を変数として引き渡すには、|(パイプ)と()を使う

Windows PowerShell の機能

 

 

if と switch

Windows PowerShell If Statement. Also 'Else and 'ElseIf' constructions

Windows PowerShell - Switch Statement Examples


特定のファイルが存在しているかどうかで処理を分岐させる

ファイルやフォルダが存在するかを確認する方法[PowerShell] : バヤシタ



標準出力とエラー出力、リダイレクトのまとめ

http://www.itlab51.com/?p=5595

 

 

 

about_WQL

https://technet.microsoft.com/ja-jp/library/jj679341.aspx

WQL は、Windows Management Instrumentation (WMI) のクエリ言語であり、WMI から情報を取得するために使用します。

WQL を使用するために必要な基本的な WQL ステートメントは、Select、Where、および From です。


Get-WmiObject で使用できる WQL クエリは、すべて Get-CimInstance でも使用できます。


Windows PowerShell 3.0 で導入された CIM コマンドレットは、WMI コマンドレットと同じタスクを実行します。CIM コマンドレットは、WS-Management (WSMan) 標準と Common Information Model (CIM) 標準に準拠しています。

そのため、コマンドレットは、Windows コンピューターと他のオペレーティング システムを実行しているコンピューターを、同じ手法で管理できます。

Get-WmiObject は ManagementObject を返しますが、Get-CimInstance は CimInstance オブジェクトを返します。ただし、どちらのオブジェクトも非常に似ています。

 

Wmi-Object と CimInstance は同じように使えるが、 CimInstance のほうが新しく作られた汎用的なコマンドレット・・・ということか?

Get-WmiObject または Get-CimInstance で、-ClassName と -Property のパラメータを指定する場合と、-Query で WQL を使用する場合は得られる結果にあまり違いがない。

ClassName が Win32_UserAccount のような、値の件数が多いケースで必要な項目の値だけを取得したい場合は、-Query や -Property で項目を指定するのではなく、

取得した値(のリスト)をパイプでSelectに引き渡してた方が、不要な項目名が無い状態で値を取得できる。(最後の実行例)



PS C:\Windows\system32> Get-CimInstance -ClassName Win32_Bios


SMBIOSBIOSVersion : L01 v02.53

Manufacturer      : Hewlett-Packard

Name              : Default System BIOS

SerialNumber      : JPA50796NS

Version          : HPQOEM - 20141020

 

PS C:\Windows\system32> Get-CimInstance -Query "Select * from Win32_Bios"

 

SMBIOSBIOSVersion : L01 v02.53

Manufacturer      : Hewlett-Packard

Name              : Default System BIOS

SerialNumber      : JPA50796NS

Version          : HPQOEM - 20141020

 

PS C:\Windows\system32> Get-CimInstance -ClassName Win32_Bios -Property Name


Status                :

Name                  : Default System BIOS

Caption              :

SMBIOSPresent        :

Description          :

InstallDate          :

BuildNumber          :

CodeSet              :

IdentificationCode    :

LanguageEdition      :

Manufacturer          :

OtherTargetOS        :

SerialNumber          :

SoftwareElementID    : Default System BIOS

SoftwareElementState  : 3

TargetOperatingSystem : 0

Version              : HPQOEM - 20141020

PrimaryBIOS          :

BiosCharacteristics  :

BIOSVersion          :

CurrentLanguage      :

InstallableLanguages  :

ListOfLanguages      :

ReleaseDate          :

SMBIOSBIOSVersion    :

SMBIOSMajorVersion    :

SMBIOSMinorVersion    :

PSComputerName        :

CimClass              : root/cimv2:Win32_BIOS

CimInstanceProperties : {Caption, Description, InstallDate, Name...}

CimSystemProperties  : Microsoft.Management.Infrastructure.CimSystemProperties

 

PS C:\Windows\system32> Get-CimInstance -Query "Select Name from Win32_Bios"

 

SMBIOSBIOSVersion :

Manufacturer      :

Name              : Default System BIOS

SerialNumber      :

Version          : HPQOEM - 20141020


 

PS C:\Windows\system32> Get-CimInstance -ClassName Win32_Bios | Select Name

 

Name

----

Default System BIOS

 

PS C:\Windows\system32> Get-CimInstance -ClassName Win32_UserAccount | select Name

 

Name

----

Administrator

Guest

H215015

QNDSYS16

___VMware_Conv_SA___

Administrator

Guest

krbtgt

SUPPORT_388945a0

melitdssadm

melitdsssys

melitdssusertemp

sysBackupexec

ZV46977

GN20309

RT04808

 : ※ MIND-AD ドメインのユーザー情報も全て取得してしまう。


 

WMI Class

Retrieving a WMI Class (Windows)

Win32_Account class (Windows)  グループのほう

 

Win32_UserAccount class


Win32_UserAccount の各プロパティの説明

512 は AccountType が Normal account であることを示す。

 

※ MIND-AD ドメイン参加PCでGet-CimInstance を実行するとドメインユーザー情報を取得してしまうので注意すること

 たぶん↓の注記はこのことを言っている?

Note  Because both the Name and Domain are key properties, enumerating Win32_UserAccount on a large network can negatively affect performance. Calling GetObject or querying for a specific instance has less impact.


GetObject はVBScriptでしか使えない。Queryでインスタンスを特定するには、以下のコマンド例のように、whare で LLocalAccount が Trure のみ抽出するよう指定すればよい。

これだと、ホスト名も影響しないので、実行サーバが変わっても大丈夫。

DSP-PC2081 でインスタンスを指定せずに実行すると 30分以上かかっていた処理が、一瞬で完了するようになった。(ADのユーザー情報を取得していないと思われ)

本番稼動中のサーバで、万が一、ドメインに参加しているサーバだったとしても、負荷の心配なく実行できる。

 

PS C:\Windows\system32> get-ciminstance -query "select * from Win32_UserAccount where LocalAccount = 'true'"

 

Name            Caption                            AccountType                        SID                                Domain

----            -------                            -----------                        ---                                ------

Administrator    DSP-PC2081\Administrator            512                                S-1-5-21-2989615179-323239334-30... DSP-PC2081

Guest            DSP-PC2081\Guest                    512                                S-1-5-21-2989615179-323239334-30... DSP-PC2081

H215015          DSP-PC2081\H215015                  512                                S-1-5-21-2989615179-323239334-30... DSP-PC2081

QNDSYS16        DSP-PC2081\QNDSYS16                512                                S-1-5-21-2989615179-323239334-30... DSP-PC2081

___VMware_Con... DSP-PC2081\___VMware_Conv_SA___    512                                S-1-5-21-2989615179-323239334-30... DSP-PC2081

 

 

比較実行例: インスタンスを指定せず、QueryのフィルタやLocalAccount 以外のインスタンスの指定方法を試した場合

このコマンドの実行結果では、結果的にMIND-AD ドメインのユーザー情報は出力されないが、完了するまでに30分程度かかっているのでADユーザー情報が処理対象から除外されているわけではない。

構築中のサーバはドメイン非参加のため問題ないが、本番稼動中のサーバでは注意が必要。

 

PS C:\Windows\system32> get-ciminstance -query "select * from Win32_UserAccount where Domain like '$env:computername'" | select Name, Caption

 

Name                                                                            Caption

----                                                                            -------

Administrator                                                                  DSP-PC2081\Administrator

Guest                                                                          DSP-PC2081\Guest

H215015                                                                        DSP-PC2081\H215015

QNDSYS16                                                                        DSP-PC2081\QNDSYS16

___VMware_Conv_SA___                                                            DSP-PC2081\___VMware_Conv_SA___

 

 

★★★ Issue

取得したユーザーアカウントのリストを使って、net user コマンドを実行できるようにする。

net user コマンドに、ユーザー名を $_ で渡しても「このコマンドの構文は次のとおりです」となってユーザー情報が取得できない。

net user の代わりに echo $_ 等を実行すると、userlist2.txt の各行をechoコマンドで表示できている。

 

$dir="C:\IaaSadmin\"

 

Get-CimInstance -Query "select * from Win32_UserAccount where LocalAccount = 'true'" | Select Name > $dir"userlist.txt"

(cat C:\IaaSadmin\userlist.txt)[3..((cat C:\IaaSadmin\userlist.txt).Length-3)] > $dir"userlist2.txt"

 

cat $dir"userlist2.txt" | Foreach-Object {net user $_;echo "---------------------------------------"}

 

★★★ Solve

.net - What's wrong with my foreach loop? - Stack Overflow

 

$_ を使わない方法にした

$UserList = Get-CimInstance -Query "select * from Win32_UserAccount where LocalAccount = 'true'"

foreach ($User in $UserList)

{

net user $User.Name;

echo "---------------------------------------"

}

 

 

ローカル ユーザー アカウント情報の取得


PowerShellでCIM cmdletを用いて対象PCのユーザーや所属するユーザーグループを調べる - tech.guitarrapc.cóm

https://technet.microsoft.com/en-us/library/jj590758.aspx

 

Windows OS入門:第1回 ユーザーとグループアカウント (2/2) - @IT

Windowsローカルユーザーのパスワード有効期限確認用PowerShellスクリプト - YOMON8.NET



WMI と Windows PowerShell を使用してユーザーの SID を取得する方法はありますか

 

後述のローカル セキュリティ ポリシーを取得するコマンドの実行結果で、ユーザー権利の割り当て等に設定されているユーザーがアカウント名ではなくSIDで出力されているため

SIDとユーザーアカウント名の紐付けのために、SIDも出力したファイルも出しておくといいかも?

 

 

Get-Content(cat)を使って、テキストファイルの任意の行を抽出する

上記方法で取得したユーザーアカウント一覧のテキストファイルから不要な先頭の3行を除いて、変数リストとして使えるようにする。

 

PowerShell/テキストファイルの指定した範囲を抽出する・Get-Content - Windowsと暮らす

PowerShell/テキストファイルの行数を取得する方法・Get-Content - Windowsと暮らす

 

get-ciminstance -query "select * from Win32_UserAccount where Domain like '$env:computername'" | select Name > $dir"userlist.txt"

(cat C:\IaaSadmin\users.txt)[3..((cat C:\IaaSadmin\users.txt).Length)] > $dir"userlist2.txt"

 

Get-CimInstance の実行結果をテキストファイルに出力し、4行目から最終行までを新しいテキストファイルに出力する。

 

 

空白行を削除

PowerShell: ◆テキストファイルから空行を取り除く

 

読み込んだファイルから空白行を除いて新しいファイルに出力する。

このとき、読み込んだファイルと同じファイル名を新しい出力ファイル名にすることはできないため、新しいファイルを出力後に不要であれば元ファイルはrmする。

 

例)

wmic SERVICE get "Name,DisplayName,StartMode,Startname,PathName,State" /TRANSLATE:NoComma /format:csv > $dir"service_b.csv"

Select-String -Pattern "\S" -Path $dir"service_b.csv" | %{$_.line} >service.csv

rm $dir"service_b.csv"

 

 

WMIC コマンド

Windows wmic command line command

WMIC - Windows Management | Windows CMD | SS64.com

サーバーの役割と機能 

Get-WindowsFeature

 

インストールされたプログラムの一覧を取得(WMIインストーラでインストールされたもののみ=プログラムと機能の一覧に表示されるもの)

get-wmiobject -class win32_product | format-list -property Name, Vendor, Version, installdate

 

 

https://www.petri.com/command-line-wmi-part-1

https://www.petri.com/command-line-wmi-part-3

 

 

 

ローカル セキュリティ ポリシー

secedit コマンドによるローカルセキュリティポリシーの操作 | 俺的備忘録 〜なんかいろいろ〜

どうやら、この一覧を見る限りPowerShellのコマンドレットにはグループセキュリティについて操作できるものはあっても、ローカルセキュリティポリシーについて操作するものは無いようだ。

 

一覧の取得は可能

例) コマンド実行時のカレントディレクトリにセキュリティ

> secedit /export /areas SECURITYPOLICY /cfg secedit.txt

項目名が全て英語だが、出力は一瞬で終わる。



diff

PowerShellで2つのファイルを比較する - Qiita



リモートサーバ上での操作

 

「クライアント側の信頼登録」

Set-Item WSMan:\localhost\Client\TrustedHosts -Value *

 

「リモート接続コマンド」

Enter-PSSession -ComputerName <HostIP or HostName> -Credential <HostIP or HostName>\<UserName>



パフォーマンスカウンタの取得

https://technet.microsoft.com/ja-jp/library/hh849685.aspx

https://technet.microsoft.com/ja-jp/magazine/ee872428.aspx

 

例)

> Get-counter -Counter "\Memory\Committed Bytes" -SampleInterval 120 –Continuous

> Get-counter -Counter "\Memory\Available MBytes" -SampleInterval 120 –Continuous

> Get-counter -Counter "\Memory\% Committed Bytes In Use" -SampleInterval 120 –Continuous


Viewing all articles
Browse latest Browse all 2641

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>