script - B-blog.info
Adding computers to which users can logon in Active Directory - task that administrators must perform quite ofter. Moreover, sometimes you must provide this privilege to all users in domain.
Here is the powershell script that will help you in this (it does not modify users that have rights to log on to ANY computers):
Добавление имен компьютеров, на которые пользователям разрешен вход - достаточно постоянная задача, причем частенько появляется необходимость добавить компьютер сразу всем пользователям домена.
Вот скрипт, который выполняет описанную задачу (причем скрипт не трогает пользователей, которым разрешен вход на все компьютеры):
Обычно я генерирую пароли для пользователей, закрывая глаза и нажимая кнопки на клавиатуре. Сейчас уже это делать необязательно - генерировать можно скриптом на Powershell:
Usually, I generate passwords for my users by closing my eyes and chaotically pressing the buttons on keyboard. There is a new way now - I can generate it in Powershell easily:
Как упростить и сделать более наглядным взаимодействие с правами доступа на файлы и их наследованием? Воспользуйтесь популярным и полезным скриптом File System Security PowerShell Module.
How to simplify and make more easier managing access rights for files and folders and their inheritance? Take a note to use popular and useful script File System Security PowerShell Module.
While working with address book in Lync Server, sometimes its very important and convinient to know, what exactly Lync Server have in its database regarding address book. You will need this, for example, when you working with Active Directory attributes that will be shown in contact card in Lync client.
In Microsoft SQL Server 2005/2008/R2 truncation of transaction log is different than in SQL Server 2000.
Sometimes, in troubleshooting and/or learning new software you need to find specific string or value in SQL database.
Here is the script to run in Query Editor over the base to find some string. In "set @search_string = 'what.you.are.searching.for';" in quotes you must type in what you search.
The script is compatible at least with SQL Server 2005/2008... hopefully with later versions also.
Dont know, how is it going in your companies, but our users can call to any direction if they need it. In case of some issues, I can always apply restrictive policy.
By default, when we add a user into Lync system, Enterprise Voice is disabled. Here is my way, how I solve this problem. You can also add this script to the script that enables new users in Lync.
Like any other scripts, you will need to run Powershell-scripts not in manual mode, but as a scheduled task.
For example, mass importing and actualizing Lync Server users database you will need to run every one-two-three hours.
Of course, Task Scheduler in Windows should help in this issue, but how to run *.ps1 file?
Today's my script was written while i've been developing billing-system for Asterisk.
Every user in Active Directory has an attribute with phone number. We will take this attribute and some others into MS SQL Server to use in billing.
There are tons of scripts that can export AD users into scv-file, but none that will export users directly to SQL database. Of course we can export users into scv and then take this csv and import it into SQL database with the help of SSIS-scripts. But this method will generate two scripts, and if you have more than 5-10-15 AD domains, you will have 10-20-30 scripts, which is likely will lead to errors.
При работе с массивами данных в Powershell бывает необходимо выгрузить данные в таблицу, чтобы потом открыть ее в Excel. Напрямую программировать выгрузку массива в файл Excel не рекомендуется, т.к. для этого необходимо хотя бы иметь установленный Excel на машине, где запускается скрипт. Кроме того, такой код будет работать достаточно медленно. Лучше всего выгружать массив в csv-файл.
In your work in big arrays of data in Powershell, very often you will need to export data to table and after open this table in Excel. Its not recommended to code direct export from array into Excel-file, because you will need Excel installed on computer where you run the script. Also, such a code will run slowly.
So, I've decided to export data to csv-file.
When you have many WSUS-servers with central server in your organization, it might be very difficult of getting reports from computers.
Once I was needed in script to show me, at which computers I dont have approved updates installed. There is a report in WSUS console that can give me such info (it called Computer Tabular Status for Approved Updates), but I was not able to go to every WSUS-server and run this report. Its a very weird task when you have 5-10-15 of WSUS-servers.
Suddenly for me, Veeam Backup & Replication started to throw errors while backing up some of my virtual machines. As I have managed to find out, root problem was in that Veeam could not run pre-freeze script to stop some services.
Futher researches showed that UAC denied starting of scripts. When I tried to run script with elevated permissions, stop-start of services was performed without any problems.
In one of my projects, I was needed to write a script that will send SMS messages. We already had Linux server with GSM-modem that accepted commands sent by SSH. So, I was only needed to connect from Windows system to Linux with SSH protocol.
I tried to use the SSH-Session module for Powershell, but it have some issues when sending commands. So I started to work with Posh-SSH module.
Lets install Posh-SSH:
Иногда при запуске скриптов в Powershell бывает необходимо запускать какой-нибудь командлет под чужой учетной запиью, служебной например. Обычно в таких случаях создается специальный объект PSCredential при помощи несложной конструкции $user = Get-Credential, и пользоваться далее этим объектом в последующих командлетах. При нечастом запуске это может и не быть проблемой, но когда надо скрипт запускать несколько раз в день, то неэффективно вводить логин-пароль.
Лучшим способом было бы сохранить данные учетной записи в зашифрованном виде где-нибудь на диске рядом с файлом скрипта. Или, как вариант, в самом скрипте.
Task is clear from title - we need to delete old files from some directory. There are many cases in life, when you will need to perform such operation. For example - delete old backups.
As you know, Lync have its own address book (AB) that downloaded by clients. By default, the download and update process of address boook in Lync 2010/2013 triggered in first 60 minutes (random time) after program start. In our company this situation was considered as wrong, thus I had to find solution how to ensure guaranteed updating of Lync address book right after the client starts. Also, there are other issues with delta-updating of address book, like a big delays (5-10 days) after changes in Active Directory are repliacted to Lync AB.
The consequences of such behavior:
During upgrade of domain controllers or theirs addition\removal in Active Directory domain, there is always a need to change DNS-servers in network interfaces settings in Windows. On those computers or servers where you set network settings with DHCP - there is no problems. But on those where you configure settings manually, you will have to change them manually also. It is long and inconvinient.
Sometimes you need to parse some site or big web-page. Google offers many programs and even software complexes to perform this task, but I want to show, how you can quite simply do this with the help of Powershell.
There is a Invoke-WebRequest cmdlet in Powershell, that actually parse HTML-page by tags and content. Cmdlet give you an object of page with ParsedHtml property. To this field you can apply methods to extract needed data.
Assume you need to get all links from the page. See how it works.
In free edition of the Microsoft SQL Server - Express - you have no possibility to schedule backups. But you can set up backups with the help of Powershell scripts and Windows Task Scheduler.
Take a look at the script - that's my way to SQL backups. The script does not delete old backups, but please read my article Deleting old files and folders in Powershell, it will help. And also - Running Powershell script in scheduled task.
Please notice highlighted lines - there you will have to set your SQL-instance and path to backups.
As you know, there are many types of Exchange 2013 logs, and a lot of disk space is used - and - space on system disk. Theoretically, you can change paths of all logs in Powershell. But because of number of logs types in Exchange, managing all these folders (and file sizes, directory sizes, max age of files) becomes a true nightmare.
Thus I created for me and you a little memo in Powershell scripts, so I can run them after installing of next new server.
While I've been testing failover cluster of Microsoft SQL Server 2012 (more details: Step-by-step deploying AlwaysOn on MS SQL 2012) I was needed to generate mass import of some data into database.
As soon as I'm very bad in T-SQL, I decided to write script on Powershell for this task.
We will need:
- Database itself
- Table in it for testing purposes
In case if you need to remotely restart Windows service, here is my Powershell script.
As soon as we have ICMP/ping disabled between our development environments, I've used WMI pings to determine, if remote machine is running.
Here is the script that will find servers in your domain with Microsoft SQL Server installed.
Script can handle unresponsive servers with pings via WMI calls, which is useful if ICMP blocked for some reason. Also - I'm using Powershell Remoting, so please be sure it is enabled on your servers.
When you build your environment in Azure Cloud using IaaC (Infrastructure as a Code) approach, sometimes you will face issues during re-deployment. That's because guys from Microsoft update their VM images with new versions of software. As a result, these new images have new IDs and you must update your ARM or Powershell scripts.
I wrote a script that will help to find new versions of images.
June 25, 2020
During last year, I've been actively refactoring this solution and finally I've updated this article. All code moved to GitHub where you can clone it to your PC and update as needed.
Also, I've removed all comments as they're not relevant anymore.
Today is the great day, as I'm finally going to share my approach to monitoring of Azure Cloud resources with Zabbix. There is no built-in solution for monitoring Azure with 3rd-party software (at least, I know nothing about that), so we'll need to build our own. Before you start configuring\scripting, please make sure you're familiar with most common Zabbix features, because the task is not trivial.
Why do we need all this? Well, I've encountered a number of issues, problems and limitations while trying to use native Azure tools - Log Analytics(to paint graphs) and Monitor (to configure alerting). Metrics could appear there with big delays, problems with writing queries, triggering - is also a problem.
So, we've decided to adopt Zabbix for monitoring of Azure...