none
Поломался скрипт RRS feed

  • Вопрос

  • скрипт был рабочим, перестал работать около месяца назад:

    $User = "user@domain.com"
    $File = "C:\scripts\backup\Password.txt"
    $dayago = get-date -UFormat %Y-%m-%d
    [string[]] $toAddress="user@domain.com"
    $MyCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, (Get-Content $File | ConvertTo-SecureString)
    $time = get-date -UFormat %Y-%m-%d
    new-item C:\scripts\backup\$time.txt -itemtype file -force
    $tmpresults = Get-ChildItem -recurse \\backup.serv1.domain.com\winbackup\ActiveDirectoryServices\$time | where {$_.Name -like "*.vhdx"} | select CreationTime,Directory,Length,Name
    Foreach ($tmpresult in $tmpresults) {
        "CreationTime : $(get-date $tmpresult.CreationTime -UFormat %T)" | out-file C:\scripts\backup\$time.txt -append
        "Directory : $($tmpresult.Directory)" | out-file C:\scripts\backup\$time.txt -append
        "Length : $($tmpresult.Length/1Gb)" | out-file C:\scripts\backup\$time.txt -append
        "Name : $($tmpresult.Name) `r`n" | out-file C:\scripts\backup\$time.txt -append
    }
    (Get-Content C:\scripts\backup\$time.txt).replace('\\backup.serv1.domain.com\winbackup\ActiveDirectoryServices\', '')  | Set-Content C:\scripts\backup\$time.txt
    (Get-Content C:\scripts\backup\$time.txt).replace($time, '')  | Set-Content C:\scripts\backup\$time.txt
    (Get-Content C:\scripts\backup\$time.txt).replace($dayago, '')  | Set-Content C:\scripts\backup\$time.txt
    (Get-Content C:\scripts\backup\$time.txt).replace('WindowsImageBackup\HYPER-1\Backup', '')  | Set-Content C:\scripts\backup\$time.txt
    $body = Get-Content C:\scripts\backup\$time.txt | Out-String
    Send-MailMessage -To $toAddress -From "Scan User <$User>" -Subject "Hyper-V DC Backup $time" -Body "$body" -SmtpServer smtp.office365.com -Credential $MyCredential -UseSsl

    Выдаёт ошибку:

    You cannot call a method on a null-valued expression.
    At C:\scripts\backup\send-email2.ps1:15 char:1
    + (Get-Content C:\scripts\backup\$time.txt).replace('\\backup.serv1.do...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
        + FullyQualifiedErrorId : InvokeMethodOnNull
    1 октября 2018 г. 10:06
    Модератор

Ответы

  • Проблема в строке, она пустая:

    $tmpresults = Get-ChildItem -recurse \\backup.serv1.domain.com\winbackup\ActiveDirectoryServices\$time | where {$_.Name -like "*.vhdx"} | select CreationTime,Directory,Length,Name

    • Помечено в качестве ответа AnahaymModerator 1 октября 2018 г. 14:52
    1 октября 2018 г. 11:15
    Отвечающий

Все ответы

  • Проблема в строке, она пустая:

    $tmpresults = Get-ChildItem -recurse \\backup.serv1.domain.com\winbackup\ActiveDirectoryServices\$time | where {$_.Name -like "*.vhdx"} | select CreationTime,Directory,Length,Name

    • Помечено в качестве ответа AnahaymModerator 1 октября 2018 г. 14:52
    1 октября 2018 г. 11:15
    Отвечающий
  • пока временно подставил готовый файл. Можно как-то увеличить время разрешения имени smtp.office365.com?

    C:\scripts\backup\send-email2.ps1
    Send-MailMessage : The remote name could not be resolved: 'smtp.office365.com'
    At C:\scripts\backup\send-email2.ps1:20 char:1
    + Send-MailMessage -To $toAddress -From "Scan User <$User>" -Subject "H ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage], SmtpException
        + FullyQualifiedErrorId : SmtpException,Microsoft.PowerShell.Commands.SendMailMessage

    У меня какие-то проблемы на сервере с этим...

    nslookup smtp.office365.com
    nslookup : Non-authoritative answer:
    At line:1 char:1
    + nslookup smtp.office365.com
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (Non-authoritative answer::String) [], RemoteException
        + FullyQualifiedErrorId : NativeCommandError
     
    Server:  dc1.domain.com
    Address:  10.255.9.11
    
    DNS request timed out.
        timeout was 2 seconds.
    DNS request timed out.
        timeout was 2 seconds.
    DNS request timed out.
        timeout was 2 seconds.
    Name:    outlook-emeaeast3.office365.com
    Addresses:  40.101.69.210
    	  40.101.62.34
    	  40.101.51.146
    	  40.101.65.146
    	  40.100.174.194
    	  40.101.121.2
    	  52.97.128.178
    	  40.101.40.242
    Aliases:  smtp.office365.com
    	  lb.geo.office365.com
    	  outlook.office365.com.g.office365.com
    1 октября 2018 г. 11:33
    Модератор
  • Могу предложить вставить блок Test-Connection, если ответ будет, значит преобразование уже произошло и в кеше ДНС должен быть адрес.
    1 октября 2018 г. 11:40
  • да вот какая-то фигня и с кешем. я нашёл где проблема в ДНС, решаю...
    1 октября 2018 г. 12:01
    Модератор
  • в общем, DNS forwarder был устаревший.
    1 октября 2018 г. 14:53
    Модератор