Poniższy skrypt został napisany dla mnie. Mój problem polega na tym, że kiedy nasz zdalny system wdrażania wykonuje skrypt, program Powershell na komputerze lokalnym nie uruchomi skryptu. Jednak nie ma problemu z uruchomieniem .vbs. Krótko mówiąc, nasze oprogramowanie do zdalnego wdrażania kopiuje ten plik .zip na wszystkie komputery, które nie są podłączone do naszej domeny. Ten skrypt powinien rozpakować pliki do określonej lokalizacji.
Czy nie jest zbyt skomplikowane, czy istnieje sposób na przekonwertowanie tej funkcji na łatwy plik .vbs, czy istnieje sposób użycia polecenia wsadowego, aby umożliwić programowi PowerShell wykonanie tego skryptu na wszystkich stacjach roboczych, których potrzebuję?
Set oShell = CreateObject( "WScript.Shell" )
user=oShell.ExpandEnvironmentStrings("%UserName%")
comp=oShell.ExpandEnvironmentStrings("%ComputerName%")
USRPROFILE = oshell.expandenvironmentstrings("%UserProfile%")
Appdata = USRProfile & "\AppData\"
sZipFile = "C:\ProgramData\CentraStage\Packages\377fa3f4-6b60-4ec5-94b9-fc1716d53ea9#\vidistar.zip"
sTargetFolder = appdata
Dim oShellApp:Set oShellApp = CreateObject("Shell.Application")
Dim oFSO:Set oFSO = CreateObject("Scripting.FileSystemObject")
'Create the target folder if it isn't already there
If not oFSO.FolderExists(sTargetFolder) Then
oFSO.CreateFolder sTargetFolder
wscript.echo sTargetFolder & " Folder Has Been Created "
end if
'Extract the files from the zip into the folder
oShellApp.NameSpace(sTargetFolder).CopyHere oShellApp.NameSpace(sZipFile).Items
źródło
%userprofile%\appdata
. Zamiast tego,appdtata\roaming
czyappdata\local
byłoby bardziej odpowiednie.Oto wielka wskazówka:
i
Najważniejsze pytanie brzmi: czy twoje maszyny docelowe mogą uruchamiać niepodpisane skrypty? Program PowerShell ma różne ograniczenia w zależności od sesji i ogólnie po wyjęciu z pudełka okaże się, że zasady są ograniczone.
Możesz ustawić zasady wykonywania za pomocą Zasad Grupy na komputerach przyłączonych do domeny, i jest to na ogół preferowane.
źródło