Скрипт Powershell для заполнения Start в разделе с путем - PullRequest
0 голосов
/ 07 января 2020

Попытка заставить powershell заполнить раздел «Начать с» в файле ярлыка с помощью:

$Shortcut.WorkingDirectory

Скрипт до сих пор:

$file = pwd
# Create a Shortcut with Windows PowerShell
$TargetFile = "$file\file.vbs"
$ShortcutFile = "$file\file.lnk"
$WScriptShell = New-Object -ComObject WScript.Shell
$Shortcut = $WScriptShell.CreateShortcut($ShortcutFile)
$Shortcut.TargetPath = $TargetFile
$Shortcut.WorkingDirectory = $file

Это ошибка, которую я получаю .

Exception setting "WorkingDirectory": Cannot convert the "C:\PATH\TO\FOLDER" value of type "PathInfo" to type "string".
At line:8 char:5
+     $Shortcut.WorkingDirectory = $file
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], SetValueInvocationException
    + FullyQualifiedErrorId : RuntimeException
    $Shortcut.Save()

Помощь будет принята с благодарностью. :)

1 Ответ

1 голос
/ 07 января 2020

pwd - псевдоним команды Get-Location . Он возвращает PathInfo объект со многими свойствами, который указывает на текущий каталог. Свойство Path содержит строку пути.

Следовательно, вам необходимо получить доступ к этому свойству Path из вывода pwd или из $file:

$file = (pwd).Path
$TargetFile = "$file\file.vbs"
$ShortcutFile = "$file\file.lnk"
$WScriptShell = New-Object -ComObject WScript.Shell
$Shortcut = $WScriptShell.CreateShortcut($ShortcutFile)
$Shortcut.TargetPath = $TargetFile
$Shortcut.WorkingDirectory = $file

Автоматическая c переменная $pwd также содержит объект PathInfo со многими свойствами, указывающими на текущий каталог. Вы можете получить доступ к тому же значению, используя $pwd.Path:

$file = $pwd.Path

Дополнительная информация:

Вы можете просматривать свойства и вводить информацию, используя Команда Get-Member :

$pwd | Get-Member

   TypeName: System.Management.Automation.PathInfo

Name         MemberType Definition
----         ---------- ----------
Equals       Method     bool Equals(System.Object obj)
GetHashCode  Method     int GetHashCode()
GetType      Method     type GetType()
ToString     Method     string ToString()
Drive        Property   System.Management.Automation.PSDriveInfo Drive {get;}
Path         Property   string Path {get;}
Provider     Property   System.Management.Automation.ProviderInfo Provider {get;}
ProviderPath Property   string ProviderPath {get;}

Доступ к каждому значению свойства можно получить напрямую с помощью оператора доступа к элементу . с синтаксисом object.Property. Синтаксис Select-Object -ExpandProperty Property также является популярным способом получения значения свойства.

# Member Access Method
$pwd.Path
C:\MyCurrentPath

# Select-Object Method

$pwd | Select-Object -ExpandProperty Path
C:\MyCurrentPath

PathInfo объекты содержат метод переопределения ToString(), который возвращает путь в виде строки.

$pwd.ToString()
C:\MyCurrentPath

(pwd).ToString()
C:\MyCurrentPath
...