У меня есть сценарий powershell, который предназначен для изменения политики домена ipsec, добавив IP-адрес в указанный список фильтров. Проблема заключается в том, что при запуске netsh store location=domain domain=our.domain.com
в моем скрипте powershell он не запоминает расположение хранилища для следующих команд. Я пробовал обходной путь, создав текстовый файл, который затем запускается из powershell как netsh -f "path\to\textfile.txt"
, но он, похоже, не работает. Ниже вы найдете соответствующий блок сценария. Домен настроен правильно, поскольку он работает при запуске непосредственно в netsh.Использование netsh в powershell: сохранить расположение хранилища для нескольких команд
$command = "ipsec static
set store location=domain domain=our.domain.com
add filter filterlist=$FILTERLIST
protocol=ANY srcaddr=$ip
srcmask=255.255.255.255
dstaddr=ME
description='IP address blocked'
mirrored=YES"
$($command.Trim()) | out-file $($DIR+"\netsh\temp.txt")
netsh -f $($DIR+"\netsh\temp.txt")
remove-item $($DIR+"\netsh\temp.txt")
я не получил его на работу еще, но, как я собираюсь сделать это, было бы неплохо знать, если есть другие лучше спроектированные решения для этого. Im running PowerShell v.1.0
Хорошо, я придумал хороший способ выполнить задачу. Благодаря мощной конвейерной обработке PowerShell вам нужно будет '$ command | netsh', где '$ command' является действительной командой netsh (сценарий выше содержит ошибки) - и thats it :) – scutze
Кстати, вы, вероятно, не используете powershell v1 - каталог установки всегда v1.0 (длинный рассказ). Дата баннера запуска должна сообщить вам: 2006 = v1, 2009 = v2, 2012 = v3 – x0n