none
Скрипт из общего ресурса для чтения "локальных" данных

    Вопрос

  • Есть скрипт для PowerShell 5.1.14393.2580

    New-PSDrive -name G -Root \\SERVER\bin -PSProvider filesystem
    \\SERVER\bin\log2.vbs

    log2.vbs запускает скрипт \\SERVER\bin\log2.ps1:

    #чаcть кода
    $SecString = get-content "C:\www\pass.txt" | ConvertTo-SecureString
    $cred = New-Object System.Management.Automation.PsCredential('user',$SecString)

    Как сделать так, чтобы скрипт понял, что С - это локальный диск где и расположен сам скрипт, а не диск того сервера, с которого запускается скрипт.

    Т.е. сейчас я получаю ошибку:

    get-content : Cannot find path 'C:\www\pass.txt' because it does not exist.

    Что абсолютно верно... Нет у меня такого файла.

    Надеюсь, я смог объяснить свою идею.

    Спасибо.

    7 ноября 2018 г. 16:16

Все ответы

  • Вариантов два, либо скрипт должен выполняться на сервере, где есть эти файлы, либо они должны быть доступны удаленно.

    Для удаленного получения:

    1. Выложить через smb(\\Server\C$\www)/web/ftp
    2. Получить данные, через Invoke-Command/ssh с удаленного сервера


    • Изменено KazunEditor 7 ноября 2018 г. 17:02
    7 ноября 2018 г. 17:01
    Отвечающий
  • т.е. в любом случае пользователь сможет получить учётные данные для подключения или через smb или через Invoke?
    7 ноября 2018 г. 17:05
  • т.е. в любом случае пользователь сможет получить учётные данные для подключения или через smb или через Invoke?
    Не сможет,а ДОЛЖЕН, т.к. все происходит в его сессии и под его учетными данными.
    7 ноября 2018 г. 17:08
    Отвечающий
  • тогда, увы, мне это не подходит.

    А можно сделать как-то, чтобы локальный сприпт запускался от имени пользователя, а удалённый от имени машины, на которой расположен?

    7 ноября 2018 г. 17:28
  • тогда, увы, мне это не подходит.

    А можно сделать как-то, чтобы локальный сприпт запускался от имени пользователя, а удалённый от имени машины, на которой расположен?

    Да, только у пользователя должна быть возможность исполнить пункт 2, т.е. иметь доступ для удаленного запуска скрипта на сервере. Или с  сервера должен быть запущен скрипт в сессии пользователя на его компьютере. 

    Самый простой вариант, создать задачу в планировщике на сервере, запуск каждый 1-5 минут, который будет смотреть в шару, в которой создается файл при запуске скрипта пользователем и если файл есть, то выполнить скрипт.

    • Изменено KazunEditor 7 ноября 2018 г. 17:38
    7 ноября 2018 г. 17:34
    Отвечающий
  • у пользователя будет доступ только к PowerShell скрипту, который запускает VBS скрипт на сервере, а тот в свою очередь запускает PS1 с учётными данными. Вот мне надо сделать так, чтобы эти учётные данные не утекли...
    7 ноября 2018 г. 17:41
  • у пользователя будет доступ только к PowerShell скрипту, который запускает VBS скрипт на сервере, а тот в свою очередь запускает PS1 с учётными данными. Вот мне надо сделать так, чтобы эти учётные данные не утекли...
    Не на сервере,а с сервера - это глобальная разница. Это сделать невозможно, т.к. пароль в открытом виде, должен попасть в сессию пользователя. Создавайте триггер( vbs скрипт - создает  файл в шаре сервера, а сервер мониторит и запускает у себя скрипт).
    7 ноября 2018 г. 17:46
    Отвечающий
  • vbs скрипт - создает  файл в шаре сервера, а сервер мониторит и запускает у себя скрипт

    Этот скрипт сможет подмонтировать сетевую папку в сесии пользователя? Т.е. сервер должен как-то увидеть эту сессию, но ведь, опять же, это не реализуемо?

    7 ноября 2018 г. 17:58
  • vbs скрипт - создает  файл в шаре сервера, а сервер мониторит и запускает у себя скрипт

    Этот скрипт сможет подмонтировать сетевую папку в сесии пользователя? Т.е. сервер должен как-то увидеть эту сессию, но ведь, опять же, это не реализуемо?

    Конечно нет, т.к. ему нужно знать пароль в открытом для него виде. Зачем пользователю монтировать папку от чужого имени?
    • Изменено KazunEditor 7 ноября 2018 г. 18:01
    7 ноября 2018 г. 18:00
    Отвечающий
  • Зачем пользователю монтировать папку от чужого имени?

    чтобы оттуда запустился скрипт когда надо (VBS будет запускаться по расписанию), при этом сам пользователь не смог его ни запустить ни прочитать вручную. Это можно сделать только если убрать скрипт в директорию, в которую у него не будет доступа... Не уверен, что я сейчас изъяснился понятно (

    7 ноября 2018 г. 18:06
  • Зачем пользователю монтировать папку от чужого имени?

    чтобы оттуда запустился скрипт когда надо (VBS будет запускаться по расписанию), при этом сам пользователь не смог его ни запустить ни прочитать вручную. Это можно сделать только если убрать скрипт в директорию, в которую у него не будет доступа... Не уверен, что я сейчас изъяснился понятно (

    Пароль секретный, шара секретная, скрипт секретный - параноя,а не задача. Расшарьте скрипт, когда надо тригером или с веб странички на короткий срок.
    7 ноября 2018 г. 18:13
    Отвечающий
  • Это не параноя - а задача с такими требованиями. Просто невыполнимая она похоже...

    На короткий срок не проблема. Дело в том, что пользователь сам может запустить тригер и получить доступ в тот самый "короткий срок".

    7 ноября 2018 г. 19:14
  • Это не параноя - а задача с такими требованиями. Просто невыполнимая она похоже...

    На короткий срок не проблема. Дело в том, что пользователь сам может запустить тригер и получить доступ в тот самый "короткий срок".

    Чистой воды - параноя. Изначально задача была скрыть пароль. Теперь скрыть пароль, скрыть шару, скрыть содержимое скрипта, который должен выполниться, да еще и запрет выполнения его вручную.
    7 ноября 2018 г. 19:22
    Отвечающий
  • если я выполню один из этих пунтков - то этого будет достаточно.

    Задача - не дать пользователю доступ в шару, куда скрипт будет записывать информацию.

    7 ноября 2018 г. 19:46
  • если я выполню один из этих пунтков - то этого будет достаточно.

    Задача - не дать пользователю доступ в шару, куда скрипт будет записывать информацию.

    Пишите локально, забирайте удалено или создайте web-сервис, пусть туда все данные json отправляет, или на сервере, пусть перекладывает в "секретную" шару из папки только для это пользователя.
    7 ноября 2018 г. 20:13
    Отвечающий
  • Да, я думал об этом, но блин... Так я пришел к одному "но": если не скрыть содержимое скрипта, то пользователь сможет узнать какого рода информация собирается.... Так что, это не паранойя, а простое желание сделать как надо.
    7 ноября 2018 г. 20:40
  • Да, я думал об этом, но блин... Так я пришел к одному "но": если не скрыть содержимое скрипта, то пользователь сможет узнать какого рода информация собирается.... Так что, это не паранойя, а простое желание сделать как надо.
    PS2EXE : "Convert" PowerShell Scripts to EXE Files - Для "посредственного" скрытия содержимого скрипта, преобразовав его в exe.
    7 ноября 2018 г. 21:05
    Отвечающий
  • итоговый скрипт должен из под контекста пользователя работать?
    9 ноября 2018 г. 13:16
  • Что уже есть и работает давно:

    - сприпт VBS запускается в планировщике задач от имени пользователя
    - VBS запускает скрипт PS1 от имени пользователя

    нужно:

    - сделать так, чтобы пользователь не узнал, что делает скрипт PS1.

    Да, звучит странно, но так поставлена задача. Я думал над вложенностью скриптов, но всё равно всегда можно узнать что выполнил последний скрипт в сессии пользователя... Сам конечный скрипт PS1 собирает информацию о профиле пользователя, его сессии и копирует в шару.

    Другой вариант:

    - какой-то скрипт монтирует сетевую папку от имени какого-то пользователя.
    - далее VBS в планировщике выполняет PS1 от имени пользователя (следовательно, пользователь должен иметь туда доступ)

    Вопрос: как сделать так, чтобы пользователь не смог сам смонтировать эту папку... или не узнал какую папку монтировать. Т.е. скрыть путь к этой папки в скрипте, который будет монтировать. Глупо, да? )))


    Die Meinung, die von mir geäußert wurde, ist keine offizielle Position von Microsoft.

    9 ноября 2018 г. 13:46