0

我有一个调用另一个 powershell 脚本的 powershell 脚本。

第一个脚本使用 IP 地址调用,该地址被传递给第二个脚本。第二个脚本应该以 Domain\User 形式返回 userId

第一个脚本使用 ProcessStartInfo 和 Process 来获取提升的凭据以调用第二个脚本

# 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()

第二个脚本有很多try-catch块,比如检查能不能ping通机器,检查能不能访问WMI

# 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。

哪些 cmdlet 可以帮助解决这个问题?

4

0 回答 0