Puncte:0

Executarea unui script PowerShell cu spații în argumente prin Task Scheduler pe Windows Server 2012

drapel br

Încerc să creez o sarcină programată pe Windows Server 2012 care va executa un script powershell care va crea o arhivă a unui anume director o dată pe zi.

Argumentele pentru a executa scriptul ar trebui să fie după cum urmează (prin linia de comandă): .\CreateBackup.ps1 -BackupTarget "D:\SOFT_DIST\Production\_New_Build\Documentation\Windows Build Documentation\" -BackupDestination "D:\SOFT_DIST\Production\_New_Build\Documentation\Build Documentation Backups\Backups\" -Delete $Outeda FileTTLDile 30

Scriptul funcționează perfect, însă problema este că atunci când introduc argumentele în Task Scheduler, primesc o eroare care spune „D:\SOFT_DIST\Production_New_Build\Documentation\Build nu este recunoscut ca numele unui cmdlet, funcție, fișier script, sau program operabil.” . Rețineți că, în realitate, directoarele sunt valabile.

În Task Scheduler, aceasta este ceea ce am introdus în Acțiuni (tras din fișierul de export XML)

<Command>powershell.exe</Command>
  <Arguments>
    -ExecutionPolicy Bypass "D:\SOFT_DIST\Production\_New_Build\Documentation\Build Documentation Backups\CreateBackup.ps1" 
    -BackupTarget 'D:\SOFT_DIST\Production\_New_Build\Documentation\Windows Build Documentation\'
    -BackupDestination 'D:\SOFT_DIST\Production\_New_Build\Documentation\Build Documentation Backups\Backups\' 
    -DeleteOutdatedFiles $true
    -FileTTLDays 30
  </Arguments>

Pe baza acestui lucru, ce ar trebui să repar pentru ca acest script să se execute printr-o sarcină programată? Cred că problema constă în spațiile din căile directorului.

drapel br
[1] ați încercat să adăugați un set exterior de ghilimele simple? ceva de genul `'"d:\ThingOne\Phrase With Embedded Spaces"'`. rețineți că ghilimele exterioare sunt simple - deci se numesc `ghilimele simple`, `ghilimelele duble`, `șir`, `ghilimelele duble`, `ghilimelele simple`. ///// [2] ai voie să scapi de spațiile [enervant de problematice]?
Daniel avatar
drapel br
@Lee_Dailey, din păcate, nu pot scăpa de ei. Am încercat ceea ce ați sugerat, dar nu am avut succes: `powershell.exe -ExecutionPolicy Bypass '"D:\SOFT_DIST\Production\_New_Build\Documentation\Build Documentation Backups\CreateBackup.ps1"' -BackupTarget '"D:\SOFT_DIST\Production\ _New_Build\Documentation\Windows Build Documentation\"' -BackupDestination '"D:\SOFT_DIST\Production\_New_Build\Documentation\Build Documentation Backups\Backups\"' -DeleteOutdatedFiles $false -FileTTLDays 30`
drapel br
arg! [*frown*] ați încercat să puneți `powershell.exe` în spațiul de acțiune numit `program/script` și apoi să puneți întreaga linie de argument în spațiul de acțiune numit `add arguments`? Oamenii pun adesea totul în slotul `program/script` ... și asta are probleme.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.