我已经删除了脚本,因此它基本上不执行任何操作,但是仍然存在打开错误。我删除了它正在调用的两个脚本。我相信我现在可以正确地给他们打电话,但是这个精简版仍然有问题。我从适用于其他脚本的此命令开始:
Powershell.exe,参数为“-命令C:\ powershell \ scripts \ production \ GetServerObjects.ps1 @Echo%errorlevel%”
这是我的第一篇文章,并且我收到警告,指出我的做法不正确。我会解决的!
通过进程监视器看到的僵尸进程示例如下:open- with
脚本在下面。服务器可能不知道如何打开某些内容,或者出现了一些错误,或者我通过任务计划程序将其启动错误。
# Get_Server_Objects.ps1
# Add snapins, modules, dot source needed scripts
. "C:\Powershell\Scripts\Production\invoke-Sqlcmd2.ps1"
if (-Not (Get-Module -ListAvailable -Name SQLSERVER))
{
Import-Module SQLServer
}
$ResultsDir ="C:\Powershell\Results"
$DateSuffix = "{0:MMdd}" -f (Get-Date)
$DaysToKeep = 1 #days of results to keep. This keeps 2 days worth.
# Create a Scripter object and set the required scripting options.
$scrp = new-object ('Microsoft.SqlServer.Management.Smo.Scripter') ($srv)
$scrp.Options.ExtendedProperties = $True
# Make sure server list is available before proceeding.
try
{
$Serverlist = get-content "C:\Powershell\Scripts\Production\serversshort.txt" -ea stop
}
catch
{
$output = $_.ErrorDetails
throw $output
Exit 1
}
# Main Processing Loop
foreach ($Instance in $ServerList)
{
$InstDir = $Instance.replace('\','_')
if (!(Test-Path "$ResultsDir\$InstDir\"))
{New-Item "$ResultsDir\$InstDir\" -Type directory}
# create new file names. Automatically writes over any file of the same name.
$LoginFile = "$Instdir"+'_'+"$dateSuffix" + '_CreateLogins.txt'
$DBFile = "$Instdir"+'_'+"$dateSuffix" + '_CreateDBs.txt'
$JobFile = "$Instdir" +'_' +"$dateSuffix" + '_Createjobs.txt'
$ConfigFile = "$Instdir" +'_' +"$dateSuffix" + '_config.txt'
$LinkFile = "$Instdir" +'_' +"$dateSuffix" + '_LinkedServers.txt'
$DiskFile = "$Instdir" +'_' +"$dateSuffix" + '_DiskLayout.txt'
$CompFile = "$Instdir" +'_' +"$dateSuffix" + '_CompLevels.txt'
}
答案 0 :(得分:0)
回顾-更新到Powershell 5.0后,通过任务计划程序运行时,运行另外两个脚本的脚本产生了僵尸进程。
我必须进行两项更改:
以前,我只是使用脚本名称启动了内部脚本。我以为powershell.exe script.ps1可以工作,但是没有。感谢Lee Dailey建议使用这种格式来启动Powershell的新实例。
&开始过程“ C:\ Powershell \ Scripts \ Production \ Script.ps1”
进行上述更改之后,我仍然看到僵尸进程。从脚本中删除几乎所有行之后,我仍然遇到问题。我通常的设置工作的方法是,通过使用以下参数运行Powershell “-命令C:\ powershell \ scripts \ production \ Script.ps1 @Echo%errorlevel%” 不工作。我终于通过使用浏览按钮选择脚本来使其工作。在参数框中,我只输入“ @Echo%errorlevel%”。我认为这是可行的,因为在Powershell 5.0中打开.ps1文件的默认行为是使用Powershell运行它。仍然不知道为什么该脚本无法使用Powershell + Arg技术运行,但现在可以运行。