我有一台PC,它不断登录,运行脚本,然后注销并重新启动以重复此过程。
$StartTime = Get-Date
...
(other code here, including delay)
...
$LServer = $env:logonserver
$ShutTime = Get-Date
New-Object -TypeName PSCustomObject -Property @{
StartTime = $StartTime
ShutTime = $ShutTime
LogonServer = $LServer
} | Export-Csv -Path "C:\Apps\DCResults.csv" -Append
当我手动执行脚本时,使用正确的信息更新文件,即填充3列数据。但是当脚本在Windows启动时执行时,LogonServer不会写入CSV文件。该列仍然是空白,而其他两列是正确的。
编辑:实际上,它不一定是.CSV,只是我可以放在Excel中进行分析的文件。如果有更好的方法来写入文件...
答案 0 :(得分:1)
这样的事情会改变:
$LServer = (gwmi Win32_NtDomain | select DomainControllerName | where DomainControllerName -ne $null ).DomainControllerName[0] -replace '\\'
答案 1 :(得分:0)
在用户登录之前,不会定义LogonServer环境变量。如果您在计算机启动脚本中运行脚本,则表示没有用户登录。也许如果您将脚本作为登录脚本运行,它会执行在你想要的。
答案 2 :(得分:0)
我会配置一个自动登录用户: http://support.microsoft.com/kb/324737
确保您的登录用户是域用户,也是本地管理员组的成员。然后将脚本设置为从启动文件夹启动时运行,或者在: HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \ Run中
将注册表中的作业配置为通过cmd / bat文件启动(就像计划任务一样)。该脚本将为任何登录用户的用户运行并生成输出,即使您中断了自动登录用户,该用户也有权访问该文件夹和文件。我还会使用shutdown命令添加几秒延迟,以便可以使用shutdown -a
轻松破坏重启部分答案 3 :(得分:0)
LOGONSERVER环境变量(如果已设置)是指登录当前用户的计算机(即运行脚本的用户帐户)。对于本地帐户,LOGONSERVER(如果已设置)将是本地计算机。