ユーザ用ツール

サイト用ツール


it技術:powershell

PowerShell

Tips

値を編集して出力

◆集計プロパティ(Select-Object)

PS > Get-WMIObject Win32_ServerFeature | Select {$_.Name + ":"}
 
$_.Name + ":"
-------------
ファイル サービスと記憶域サービス:
SMB 1.0/CIFS ファイル共有のサポート:

列名を変更する。

PS > Get-WMIObject Win32_ServerFeature | Select @{name="name";expression={$_.Name + ":"}}
 
name
----
ファイル サービスと記憶域サービス:
SMB 1.0/CIFS ファイル共有のサポート:

IISのDefault Web Siteの値取得

Default Web Siteの値を取得する

PS > Get-ItemProperty 'IIS:\Sites\Default Web Site\' | Select *

Default Web SiteのホームにあるASP内セッションプロパティの値を取得する。

PS > Get-WebConfiguration system.webServer/asp/session -Location 'Default Web Site'
 
PS > Get-WebConfiguration -PSPath 'MACHINE/WEBROOT/APPHOST/Default Web Site' system.webServer/asp/session 
 
PS > Get-WebConfigurationProperty -Location 'Default Web Site' -Filter "system.webServer/asp/session" -Name "."
 
PS > Get-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST/Default Web Site' -Filter "system.webServer/asp/session" -Name "."

二重引用符はエスケープ

VBScriptからPowerShellを呼び出す際に二重引用符が使用されている場合には、「\“」でエスケープする必要がある。

name = "DefaultAppPool2"
command = "Get-WebConfiguration \""//*[@name='" & name & "']//.\"""
info = "foreach { $_.attributes | Select name, value }"
 
Sub SetDicItems(dic, command, info, delimiter)
    Dim exeCommand
 
    exeCommand = "powershell -nologo -command " & command & " | " & info
    Call SetDicStdOut(dic, exeCommand, delimiter)
 
End Sub
 
------------------------------------------------------------------------
' 標準出力からの出力項目をセット
'------------------------------------------------------------------------
Sub SetDicStdOut(dic, exeCommand, delimiter)
    Dim exec, line, key, pos
 
    dic.RemoveAll()
    Set exec = wsh.Exec(exeCommand)
    exec.StdIn.Close()
    Do
        line = exec.StdOut.ReadLine()
        If Trim(line) <> "" Then
            pos = Instr(line, delimiter)
            If pos > 0 Then
                key = Trim(Mid(line, 1, pos-1))
                If Not dic.Exists(key) Then
                    dic.Add key, Trim(Mid(line, pos+1))
                End If
            End If
        End If
    Loop While Not exec.Stdout.atEndOfStream
 
    Set exec = Nothing
 
End Sub
it技術/powershell.txt · 最終更新: 2019/07/24 13:09 by yajuadmin