我有一个脚本用于循环访问一堆域,并从whois.exe获取日期。这可以一行一行地工作,但是当作为脚本运行时,它会冻结。这里是它卡住:Powershell脚本一行一行地在Powershell窗口中工作,但不在脚本中
ForEach ($domain in $domains)
{
$domainname = $domain.Name
Write-Host "Processing $domainname..."
# WhoIsCL responds with different information depending on if it's a .org or something else.
if($domainname -like "*.org" -and $domainname)
{
$date = .\WhoIs.exe -v "$domainname" | Select-String -Pattern "Registry Expiry Date: " -AllMatches
Write-Host "Domain is a .org" -ForegroundColor "Yellow"
当我CTRL + C取消命令,我可以验证$域是正确的变量。然后我可以这样写:
if($domainname -like "*.org" -and $domainname)
{
"Test"
}
...并且“测试”出现在命令行中。然后我运行:
$date = .\WhoIs.exe -v "$domainname" | Select-String -Pattern "Registry Expiry Date: " -AllMatches
检查日期后,它出来的权利,我得到相应的日期。鉴于它说冻结正确,因为它说“正在处理$域名...”,并在“域名是一个.org”之前,我只能假设WhoIs.exe冻结。那么,为什么会在脚本运行时发生这种情况,而不是直接从Powershell窗口中运行?
最后,我通过将整个脚本复制并粘贴到Powershell窗口(这很愚蠢,但它似乎起作用)并得到相同的结果,做了最后的测试。它冻结在whois.exe。
我最好的猜测是,whois.exe需要以不同的方式运行,以便在for-loop中的Powershell中可靠。但是,我似乎没有办法在Start-Process中使用它进行测试并获取字符串输出。
反正,劝告会很好。我一定打了一堵墙。
谢谢!
您是否尝试过使用whois.exe的完整路径? –
我想,你超出了允许的查询率。 – PetSerAl