none
Windows Backup на недоменную общую папку

    Вопрос

  • Есть скрипт, выполняется планировщиком:

    $date = get-date -DisplayHint date -UFormat %Y-%m-%d
    $twoweeksago = get-date (get-date).addDays(-14) -UFormat %Y-%m-%d
    
    $ChekFolder = "\\server\winbackup\ActiveDirectoryServices\$twoweeksago"
    $FileExists = Test-Path $ChekFolder
    If ($FileExists -eq $True) {
    rmdir -R \\server\winbackup\ActiveDirectoryServices\$twoweeksago
    }
    
    mkdir \\server\winbackup\ActiveDirectoryServices\$date\DC1
    
    WBADMIN START BACKUP -hyperv:DC1 -backupTarget:\\server\winbackup\ActiveDirectoryServices\$date\DC1 -quiet

    Всё работало, до тех пор пока не установил обновление на Windows сервер, после которого Windows не заходит на общие папки без авторизации. Сделали авторизацию на server, подправил скрипт, но задача в планировщике всё равно зависает... Подключился к Windows Server через "Enter-PSSession -ComputerName hyper-1", запускаю руками с него скрипт - а он спрашивает учётные данные к удалённому серверу, но ведь они есть в скрипте:

    $date = get-date -DisplayHint date -UFormat %Y-%m-%d
    $twoweeksago = get-date (get-date).addDays(-14) -UFormat %Y-%m-%d
    $User = "server\winbackup"
    $PWord = ConvertTo-SecureString -String "***********" -AsPlainText -Force
    $Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord
    
    $ChekFolder = "\\server\winbackup\ActiveDirectoryServices\$twoweeksago"
    $FileExists = Test-Path $ChekFolder -Credential $Credentials
    If ($FileExists -eq $True) {
    rmdir -R \\server\winbackup\ActiveDirectoryServices\$twoweeksago
    }
    
    mkdir \\server\winbackup\ActiveDirectoryServices\$date\DC1
    
    WBADMIN START BACKUP -hyperv:DC1 -backupTarget:\\server\winbackup\ActiveDirectoryServices\$date\DC1 -user:server\winbackup -password:************** -quiet

    Чего не хватает? Server является Linux системой.

    Как задать учётные данные для rmdir и mkdir? Хотя они и без них создают и удаляют папки...

    Спасибо!


    • Изменено Anahaym 12 апреля 2019 г. 8:47
    12 апреля 2019 г. 8:16

Ответы

  • Решено. Финальный скрипт:

    $date = get-date -DisplayHint date -UFormat %Y-%m-%d
    $twoweeksago = get-date (get-date).addDays(-14) -UFormat %Y-%m-%d
    $User = "BACKUP\winbackup"
    $PWord = ConvertTo-SecureString -String "******" -AsPlainText -Force
    $Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord
    
    New-PSDrive -Name "B" -PSProvider "FileSystem" -Root "\\server\winbackup\ActiveDirectoryServices" -Credential $Credential
    New-Item -ItemType directory B:\$date\DC1
    New-Item -ItemType directory B:\$date\VPN1
    
    $ChekFolder = "B:\$twoweeksago"
    $FileExists = Test-Path $ChekFolder
    If ($FileExists -eq $True) {
    rmdir -R B:\$twoweeksago
    }
    
    WBADMIN START BACKUP -hyperv:DC1 -backupTarget:\\server\winbackup\ActiveDirectoryServices\$date\DC1 -quiet
    WBADMIN START BACKUP -hyperv:MASLOW -backupTarget:\\server\winbackup\ActiveDirectoryServices\$date\VPN1  -quiet
    
    Remove-PSDrive -Name "B"
    Теперь, для создания папки необходимо вначале подмонтировать сетевой диск с учётными данными Linux сервера. Увы, wbadmin в этот диск не стал делать бекап, там всё по старинке.
    • Помечено в качестве ответа Anahaym 16 апреля 2019 г. 10:00
    16 апреля 2019 г. 10:00

Все ответы

  • rmdir и mkdir не используют кредов

    The opinion expressed by me is not an official position of Microsoft

    12 апреля 2019 г. 11:07
    Модератор
  • rmdir и mkdir не используют кредов

    The opinion expressed by me is not an official position of Microsoft

    тогда это загадка, как они создают\удаляют папки в сетевой шаре, которая требует креды.

    Сейчас мысль в том, что пароль слишком длинный. Жду, пока админ Linux поменяет на 15-ти значный пароль. Ещё странно, мне как-то утром удалось сделать один бекап:

    • Изменено Anahaym 12 апреля 2019 г. 11:13
    12 апреля 2019 г. 11:11
  • вообщем, после донастройки Linux могу делать бекап если запускать скрипт руками. В планировщике же ничего не работает. Даже папка не создаётся (

    Вот скрип. Руками запускать - всё ок, а в планировщике ни в какую:

    $date = get-date -DisplayHint date -UFormat %Y-%m-%d
    $User = "SERVER\winbackup"
    $PWord = ConvertTo-SecureString -String "************" -AsPlainText -Force
    $Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord
    New-Item -ItemType directory \\server\winbackup\ActiveDirectoryServices\$date\DC1

    Если же добавить -Credential $Credential, то и руками не запускается:

    New-Item : Cannot retrieve the dynamic parameters for the cmdlet. The FileSystem provider supports credentials only on the New-PSDrive cmdlet.
    Perform the operation again without specifying credentials. At line:1 char:1 + New-Item -ItemType directory \\server\winbackup\ActiveDirectorySer ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [New-Item], ParameterBindingException + FullyQualifiedErrorId : GetDynamicParametersException,Microsoft.PowerShell.Commands.NewItemCommand

    12 апреля 2019 г. 15:12
  • Решено. Финальный скрипт:

    $date = get-date -DisplayHint date -UFormat %Y-%m-%d
    $twoweeksago = get-date (get-date).addDays(-14) -UFormat %Y-%m-%d
    $User = "BACKUP\winbackup"
    $PWord = ConvertTo-SecureString -String "******" -AsPlainText -Force
    $Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord
    
    New-PSDrive -Name "B" -PSProvider "FileSystem" -Root "\\server\winbackup\ActiveDirectoryServices" -Credential $Credential
    New-Item -ItemType directory B:\$date\DC1
    New-Item -ItemType directory B:\$date\VPN1
    
    $ChekFolder = "B:\$twoweeksago"
    $FileExists = Test-Path $ChekFolder
    If ($FileExists -eq $True) {
    rmdir -R B:\$twoweeksago
    }
    
    WBADMIN START BACKUP -hyperv:DC1 -backupTarget:\\server\winbackup\ActiveDirectoryServices\$date\DC1 -quiet
    WBADMIN START BACKUP -hyperv:MASLOW -backupTarget:\\server\winbackup\ActiveDirectoryServices\$date\VPN1  -quiet
    
    Remove-PSDrive -Name "B"
    Теперь, для создания папки необходимо вначале подмонтировать сетевой диск с учётными данными Linux сервера. Увы, wbadmin в этот диск не стал делать бекап, там всё по старинке.
    • Помечено в качестве ответа Anahaym 16 апреля 2019 г. 10:00
    16 апреля 2019 г. 10:00