windows - Batch programmering en runas utility creater

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at skrive en batch-fil, der gør det nemmere for mig at lave runas utility-genveje på en computers desktop.


Jeg har dette for det meste gjort, jeg har alle de genererede variabler, jeg har bare problemer med den egentlige genvejstildeling del af scriptet.


Dette er koden, jeg bruger til at oprette genvejen. Med denne kode bruger jeg variabler: \%shortcutName\% som Internet Explorer, \%computername\% er mit computers navn, som ikke indeholder nogen specielle tegn eller mellemrum,\% user\% er en lokal bruger konto, som er administrator (igen ingen specialtegn eller mellemrum) og \%UserInputpath\% er lig med "C:Program FilesInternet Exploreriexplore.exe" (Når du trækker og slipper en fil i kommandopromptvinduet, genereres dette link og indpakkes citater om nødvendigt)


powershell "$s=(New-Object -COM WScript.Shell).CreateShortcut('\%USERPROFILE\%Desktop\%shortcutName\%.lnk');$s.TargetPath='runas /user:\%computername\%\%user\% /savecred \%UserInputPath\%';$s.Save()"


Jeg tror, ​​at mit problem stammer fra citaterne, som jeg sagde tidligere, men jeg er ikke rigtig sikker på hvordan jeg skal håndtere problemet.


Dette er den fejl, jeg får:


Value does not fall within the expected range.
At line:1 char:98
+ ... lorer.lnk');$s.TargetPath='runas /user:iamgrootadmin /savecred C ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], ArgumentException
    + FullyQualifiedErrorId : System.ArgumentException

Unable to save shortcut "C:UsersuserDesktopInternet Explorer.lnk".
At line:1 char:203
+ ...  /savecred C:Program FilesInternet Exploreriexplore.exe';$s.Save()
+                                                                 ~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], DirectoryNotFoundException
    + FullyQualifiedErrorId : System.IO.DirectoryNotFoundException

Bedste reference


Mit forslag er, at du indpakker dit script med dette ...


#Run as Adminstrator

If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))

{   
$arguments = "& '" + $myinvocation.mycommand.definition + "'"
Start-Process powershell -Verb runAs -ArgumentList $arguments

\%Your Coder HERE\%

}


Denne lille sektion af kode løst alle mine fejl i ikke-administrator.


Lad mig vide, hvordan det virker for dig,


UnderDog