プロジェクト

全般

プロフィール

[Windows/PowerShell] 複数のGGサーバー (ワークグループ) にアカウントが存在するいかどうか調べたい.

技術ノート
2016/11/02

[番号]
技術ノート KGTN 2016102502

[現象]
[Windows/PowerShell] 複数のGGサーバー (ワークグループ) にアカウントが存在するいかどうか調べたい.

[説明]
以下にスクリプトのサンプルを示します.

ファイル: Conf\confHostList.ps1

# 処理の対象とするサーバー
$hostList =
@(
"192.168.102.60",
"192.168.102.72",
"192.168.102.110" 
)

ファイル: checkUser.ps1

# ホスト情報の設定
Try
{
. (".\Conf\confHostList.ps1")
}
Catch
{
Write-Host "インクルードファイルが見つかりません。" 
Exit 1001
}
# 引数のチェック
if($Args.Length -ne 1)
{
Write-Host "Usage: checkUser.ps1 <userid>" 
Exit 1002
}
$argUser = $Args[0] # ユーザーID ... "wguser9012" 

# ローカルアカウントの存在チェック(本体)
Function checkUser ([string]$user)
{
# 共通
$hostname = hostname
# ローカルアカウントの確認
try
{
$objComputer = [ADSI]("WinNT://$hostname,computer")
$colUsers = ($objComputer.psbase.children | Where-Object {$_.psBase.schemaClassName
-eq "User"} | Select-Object -expand Name)
if($colUsers -contains $user)
{
$Ret = "Found" 
}
else
{
$Ret = "Not found" 
}
}
catch
{
$Ret = "Error" 
}
return "{0,-16}, {1,-16}, {2}" -f $hostname,$user,$Ret
}
# ローカルアカウントの存在チェック(呼出し)
$ii = 0
ForEach($target In $hostList)
{
$ret = Invoke-Command $target -ScriptBlock ${function:checkUser} -ArgumentList $argUser
++$ii
"[{0}] {1}" -f $ii,$ret
}

ファイル

KGTN2016102502.pdf (62.4 KB) kitasp 技術センター, 2016/11/02 15:45