別の powershell スクリプトを呼び出す 1 つの powershell スクリプトがあります。
最初のスクリプトは、2 番目のスクリプトに渡される IP アドレスで呼び出されます。2 番目のスクリプトは、Domain\User の形式で userId を返すことになっています。
最初のスクリプトは、ProcessStartInfo と Process を使用して昇格した資格情報を取得し、2 番目のスクリプトを呼び出します。
# part of first script
$startInfo = New-Object System.Diagnostics.ProcessStartInfo
$startInfo.FileName = "powershell.exe"
$startInfo.Arguments = "C:\script\second_script.ps1 "
$startInfo.RedirectStandardOutput = $true
$startInfo.UseShellExecute = $false
$startInfo.CreateNoWindow = $false
$startInfo.Username = Service_Account
$startInfo.Domain = Domain
$startInfo.Password = password
$process = New-Object System.Diagnostics.Process
$process.StartInfo = $startInfo
$process.Start() | Out-Null
$standardOut = $process.StandardOutput.ReadToEnd()
$process.WaitForExit()
2 番目のスクリプトには、マシンに ping を実行できるかどうかのチェック、WMI にアクセスできるかどうかのチェックなど、多くの try-catch ブロックがあります。
# part of second
# Can we ping the machine?
try{
Test-Connection $Sender_IP -count 1 -ErrorAction Stop | out-null
}
catch [Exception]
{
$userId = "Unknown/CannotPing "
return $output = "userId=" + $userId
}
try
{
<#Gather information on the computer corresponding to $Sender_IP#>
$Win32OS = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $Sender_IP -ErrorAction Stop
}
catch [Exception]
{
$userId = "Unknown/CannotDetectOS "
return $output = "userId=" + $userId
}
スクリプトは、多数の IP アドレスの WMI にアクセスできませんでした。また、サービス アカウントを使用して手動で IP アドレスにリモート送信してトラブルシューティングを試みたとき、できませんでした。
現在、スクリプトが IP アドレスに対して認証できるかどうかを確認する方法を見つけようとしています。スクリプトが IP アドレスに対して認証できない場合は、例外をスローする必要があり、WMI にアクセスできるかどうかを確認することさえできません。
これに役立つコマンドレットは何ですか?